提交 de92bef6763c8ae68ae6e521f11ed12df6e5ee95

作者 guomingshu
1 个父辈 af0158d7

feat: fix bug

1 <template> 1 <template>
2 - <view class="account_safe" :style="vuex_theme">  
3 -  
4 - <view class="avatar">  
5 - <u-image @click="show = true" width="190rpx" height="190rpx" shape="circle"  
6 - :src="avatarUrl? `${vuex_ossUrlPubilc}/${avatarUrl}`:wxAvatarUrl" />  
7 - </view>  
8 -  
9 - <view class="cell top">  
10 - <u-cell-group>  
11 - <u-cell title="登录账号" :isLink="true" url="/pages/main/my/editAccount/editAccount" arrow-direction="right"  
12 - :rightIconStyle="{fontSize:'26rpx'}" :title-style="{color:'#909097', fontSize:'28rpx'}">  
13 - <text slot="value" class="u-slot-value">{{accountName}}</text>  
14 - </u-cell>  
15 - <u-cell title="姓名" arrow-direction="right" :rightIconStyle="{fontSize:'26rpx'}"  
16 - :title-style="{color:'#909097', fontSize:'28rpx'}">  
17 - <text slot="value" class="u-slot-value">{{teacherName}}</text>  
18 - </u-cell>  
19 - <u-cell title="手机号" :isLink="true" url="/pages/main/my/editMobile/editMobile" arrow-direction="right"  
20 - :rightIconStyle="{fontSize:'26rpx'}" :title-style="{color:'#909097', fontSize:'28rpx'}">  
21 - <text slot="value" class="u-slot-value">{{getPhone}}</text>  
22 - </u-cell>  
23 - <u-cell title="工号" arrow-direction="right" :rightIconStyle="{fontSize:'26rpx'}"  
24 - :title-style="{color:'#909097', fontSize:'28rpx'}">  
25 - <text slot="value" class="u-slot-value">{{jobNumber}}</text>  
26 - </u-cell>  
27 - <u-cell title="院系专业" arrow-direction="right" :rightIconStyle="{fontSize:'26rpx'}"  
28 - :title-style="{color:'#909097', fontSize:'28rpx'}">  
29 - <text slot="value" class="u-slot-value">{{departmentName}}</text>  
30 - </u-cell>  
31 - </u-cell-group>  
32 - </view>  
33 -  
34 - <u-action-sheet :actions="list" @select="chooseImg" :show="show"></u-action-sheet>  
35 - </view> 2 + <view class="account_safe" :style="vuex_theme">
  3 + <view class="avatar">
  4 + <u-image
  5 + @click="show = true"
  6 + width="190rpx"
  7 + height="190rpx"
  8 + shape="circle"
  9 + :src="
  10 + avatarUrl
  11 + ? `${vuex_ossUrlPubilc}/${avatarUrl}`
  12 + : '/static/img/my/default_avatar.png'
  13 + "
  14 + />
  15 + </view>
  16 +
  17 + <view class="cell top">
  18 + <u-cell-group>
  19 + <u-cell
  20 + title="登录账号"
  21 + :isLink="true"
  22 + url="/pages/main/my/editAccount/editAccount"
  23 + arrow-direction="right"
  24 + :rightIconStyle="{ fontSize: '26rpx' }"
  25 + :title-style="{ color: '#909097', fontSize: '28rpx' }"
  26 + >
  27 + <text slot="value" class="u-slot-value">{{ accountName }}</text>
  28 + </u-cell>
  29 + <u-cell
  30 + title="姓名"
  31 + arrow-direction="right"
  32 + :rightIconStyle="{ fontSize: '26rpx' }"
  33 + :title-style="{ color: '#909097', fontSize: '28rpx' }"
  34 + >
  35 + <text slot="value" class="u-slot-value">{{ teacherName }}</text>
  36 + </u-cell>
  37 + <u-cell
  38 + title="手机号"
  39 + :isLink="true"
  40 + url="/pages/main/my/editMobile/editMobile"
  41 + arrow-direction="right"
  42 + :rightIconStyle="{ fontSize: '26rpx' }"
  43 + :title-style="{ color: '#909097', fontSize: '28rpx' }"
  44 + >
  45 + <text slot="value" class="u-slot-value">{{ getPhone }}</text>
  46 + </u-cell>
  47 + <u-cell
  48 + title="工号"
  49 + arrow-direction="right"
  50 + :rightIconStyle="{ fontSize: '26rpx' }"
  51 + :title-style="{ color: '#909097', fontSize: '28rpx' }"
  52 + >
  53 + <text slot="value" class="u-slot-value">{{ jobNumber }}</text>
  54 + </u-cell>
  55 + <u-cell
  56 + title="院系专业"
  57 + arrow-direction="right"
  58 + :rightIconStyle="{ fontSize: '26rpx' }"
  59 + :title-style="{ color: '#909097', fontSize: '28rpx' }"
  60 + >
  61 + <view slot="value">
  62 + <view v-for="(item, index) in departmentName" v-bind:key="index">{{item.departmentName ? `${item.departmentName}/${item.name}` : item.name}}</view>
  63 + </view>
  64 + </u-cell>
  65 + </u-cell-group>
  66 + </view>
  67 +
  68 + <u-action-sheet
  69 + :actions="list"
  70 + @select="chooseImg"
  71 + :show="show"
  72 + ></u-action-sheet>
  73 + </view>
36 </template> 74 </template>
37 75
38 <script> 76 <script>
39 - import {  
40 - mapState,  
41 - mapActions  
42 - } from 'vuex'  
43 -  
44 - import {  
45 - getOssInitApi,  
46 - updateAvatarUrlApi,  
47 - } from '@/config/api.js';  
48 -  
49 - import {  
50 - replaceTextToStar  
51 - } from '@/common/commonUtil.js'  
52 -  
53 - export default {  
54 - data() {  
55 - return {  
56 - show: false,  
57 - list: [{  
58 - name: '拍照'  
59 - }, {  
60 - name: '从手机相册选择'  
61 - }],  
62 - ossInit: {},  
63 - picList: [],  
64 - }  
65 - },  
66 -  
67 - onLoad() {  
68 - getOssInitApi({  
69 - "uploadFileType": "other"  
70 - }).then(res => {  
71 - this.ossInit = res  
72 - })  
73 - },  
74 -  
75 -  
76 -  
77 - computed: {  
78 - ...mapState({  
79 - wxAvatarUrl: (state) => state.vuex_weixinUserInfo.avatarUrl ? state.vuex_weixinUserInfo.avatarUrl : '',  
80 - avatarUrl: (state) => state.vuex_user.teacher.avatarUrl ? state.vuex_user.teacher.avatarUrl : '',  
81 - accountName: (state) => state.vuex_user.username ? state.vuex_user.username : '',  
82 - teacherName: (state) => state.vuex_user.teacher.name ? state.vuex_user.teacher.name : '',  
83 - jobNumber: (state) => state.vuex_user.teacher.number ? state.vuex_user.teacher.number : '',  
84 - departmentName: (state) => state.vuex_user.teacher.departments && state.vuex_user.teacher.departments  
85 - .length > 0 && state.vuex_user.teacher.departments[0].name ? state.vuex_user.teacher  
86 - .departments[0].name : '',  
87 -  
88 - getPhone(state) {  
89 - let phone = state.vuex_user.phone;  
90 - return phone ? replaceTextToStar(phone) : '';  
91 - },  
92 -  
93 - }),  
94 - },  
95 -  
96 - methods: {  
97 -  
98 - ...mapActions('user', {  
99 - getUserInfo: 'getUserInfo',  
100 - }),  
101 -  
102 - chooseImg(item) {  
103 - var _this = this  
104 - console.log(item)  
105 - if (item.name == '拍照') { //拍照  
106 - uni.chooseImage({  
107 - count: 1,  
108 - sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有  
109 - sourceType: ['camera'], //从相机选择  
110 - success: function(res) {  
111 - console.log("chooseImage...", JSON.stringify(res.tempFilePaths));  
112 - _this.picList = res.tempFilePaths  
113 - _this.uploadImages()  
114 - }  
115 - });  
116 - } else if (item.name == '从手机相册选择') { //相册  
117 - uni.chooseImage({  
118 - count: 1,  
119 - sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有  
120 - sourceType: ['album'], //从相册选择  
121 - success: function(res) {  
122 - console.log("chooseImage...", JSON.stringify(res.tempFilePaths));  
123 - _this.picList = res.tempFilePaths  
124 - _this.uploadImages()  
125 - }  
126 - });  
127 - }  
128 - },  
129 -  
130 - uploadImages() { //上传图片  
131 - var _this = this  
132 - console.log('begin', this.picList)  
133 -  
134 - let formdata = {}  
135 - if (this.ossInit.uploadType == 'minio') {  
136 - formdata = {  
137 - 'bucket': _this.ossInit.bucket,  
138 - 'dir': _this.ossInit.dir,  
139 - 'fileName': `${_this.ossInit.dir}${new Date().getTime()}/` + '${filename}',  
140 - 'accessId': _this.ossInit.accessId,  
141 - 'policy': _this.ossInit.policy  
142 - }  
143 - }else {  
144 - formdata = {  
145 - 'key': `${_this.ossInit.dir}${new Date().getTime()}/` + '${filename}',  
146 - // 'key': `${_this.ossInit.dir}${new Date().getTime()}`,  
147 - 'action': `${_this.ossInit.host}`,  
148 - 'OSSAccessKeyId': _this.ossInit.accessId,  
149 - 'policy': _this.ossInit.policy,  
150 - 'signature': _this.ossInit.signature,  
151 - 'callback': _this.ossInit.callback,  
152 - }  
153 - }  
154 - for (var i = 0; i < this.picList.length; i++) {  
155 - uni.uploadFile({  
156 - url: _this.ossInit.host,  
157 - filePath: _this.picList[i],  
158 - name: 'file',  
159 - formData: formdata,  
160 - success: (uploadFileRes) => {  
161 - console.log("--", uploadFileRes)  
162 -  
163 - let avatarObj = JSON.parse(uploadFileRes.data)  
164 - _this.avatarUrl = avatarObj.object;  
165 -  
166 - updateAvatarUrlApi({  
167 - id: this.vuex_user.teacher.id,  
168 - avatarUrl: avatarObj.object,  
169 - }).then(data => {  
170 - if (data) {  
171 - _this.getUserInfo()  
172 - }  
173 - })  
174 -  
175 - },  
176 - fail: (error) => {  
177 - console.log("-error-", error)  
178 - },  
179 -  
180 - complete: (res) => {  
181 - this.show = false;  
182 - }  
183 -  
184 - });  
185 - }  
186 - },  
187 -  
188 - link(type) {  
189 -  
190 - switch (type) {  
191 - case 'account':  
192 - this.$u.route('/pages/student/my/edit-account/edit-account');  
193 - break;  
194 -  
195 - case 'password':  
196 - this.$u.route('/pages/student/my/edit-password/edit-password');  
197 - break;  
198 - }  
199 -  
200 - },  
201 - }  
202 - } 77 +import { mapState, mapActions } from "vuex";
  78 +
  79 +import { getOssInitApi, updateAvatarUrlApi } from "@/config/api.js";
  80 +
  81 +import { replaceTextToStar } from "@/common/commonUtil.js";
  82 +
  83 +export default {
  84 + data() {
  85 + return {
  86 + show: false,
  87 + list: [
  88 + {
  89 + name: "拍照",
  90 + },
  91 + {
  92 + name: "从手机相册选择",
  93 + },
  94 + ],
  95 + ossInit: {},
  96 + picList: [],
  97 + };
  98 + },
  99 +
  100 + onLoad() {
  101 + getOssInitApi({
  102 + uploadFileType: "other",
  103 + }).then((res) => {
  104 + this.ossInit = res;
  105 + });
  106 + },
  107 +
  108 + computed: {
  109 + ...mapState({
  110 + wxAvatarUrl: (state) =>
  111 + state.vuex_weixinUserInfo.avatarUrl
  112 + ? state.vuex_weixinUserInfo.avatarUrl
  113 + : "",
  114 + avatarUrl: (state) =>
  115 + state.vuex_user.teacher.avatarUrl
  116 + ? state.vuex_user.teacher.avatarUrl
  117 + : "",
  118 + accountName: (state) =>
  119 + state.vuex_user.username ? state.vuex_user.username : "",
  120 + teacherName: (state) =>
  121 + state.vuex_user.teacher.name ? state.vuex_user.teacher.name : "",
  122 + jobNumber: (state) =>
  123 + state.vuex_user.teacher.number ? state.vuex_user.teacher.number : "",
  124 + departmentName: (state) => {
  125 + let departments = [];
  126 + if (state.vuex_user.teacher.departments) {
  127 + departments = [...state.vuex_user.teacher.departments];
  128 + }
  129 + if (state.vuex_user.teacher.professionals) {
  130 + departments = [
  131 + ...departments,
  132 + ...state.vuex_user.teacher.professionals,
  133 + ];
  134 + }
  135 + return departments;
  136 + },
  137 + getPhone(state) {
  138 + let phone = state.vuex_user.phone;
  139 + return phone ? replaceTextToStar(phone) : "";
  140 + },
  141 + }),
  142 + },
  143 +
  144 + methods: {
  145 + ...mapActions("user", {
  146 + getUserInfo: "getUserInfo",
  147 + }),
  148 +
  149 + chooseImg(item) {
  150 + var _this = this;
  151 + console.log(item);
  152 + if (item.name == "拍照") {
  153 + //拍照
  154 + uni.chooseImage({
  155 + count: 1,
  156 + sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  157 + sourceType: ["camera"], //从相机选择
  158 + success: function (res) {
  159 + console.log("chooseImage...", JSON.stringify(res.tempFilePaths));
  160 + _this.picList = res.tempFilePaths;
  161 + _this.uploadImages();
  162 + },
  163 + });
  164 + } else if (item.name == "从手机相册选择") {
  165 + //相册
  166 + uni.chooseImage({
  167 + count: 1,
  168 + sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
  169 + sourceType: ["album"], //从相册选择
  170 + success: function (res) {
  171 + console.log("chooseImage...", JSON.stringify(res.tempFilePaths));
  172 + _this.picList = res.tempFilePaths;
  173 + _this.uploadImages();
  174 + },
  175 + });
  176 + }
  177 + },
  178 +
  179 + uploadImages() {
  180 + //上传图片
  181 + var _this = this;
  182 + console.log("begin", this.picList);
  183 +
  184 + let formdata = {};
  185 + if (this.ossInit.uploadType == "minio") {
  186 + formdata = {
  187 + bucket: _this.ossInit.bucket,
  188 + dir: _this.ossInit.dir,
  189 + fileName:
  190 + `${_this.ossInit.dir}${new Date().getTime()}/` + "${filename}",
  191 + accessId: _this.ossInit.accessId,
  192 + policy: _this.ossInit.policy,
  193 + };
  194 + } else {
  195 + formdata = {
  196 + key: `${_this.ossInit.dir}${new Date().getTime()}/` + "${filename}",
  197 + // 'key': `${_this.ossInit.dir}${new Date().getTime()}`,
  198 + action: `${_this.ossInit.host}`,
  199 + OSSAccessKeyId: _this.ossInit.accessId,
  200 + policy: _this.ossInit.policy,
  201 + signature: _this.ossInit.signature,
  202 + callback: _this.ossInit.callback,
  203 + };
  204 + }
  205 + for (var i = 0; i < this.picList.length; i++) {
  206 + uni.uploadFile({
  207 + url: _this.ossInit.host,
  208 + filePath: _this.picList[i],
  209 + name: "file",
  210 + formData: formdata,
  211 + success: (uploadFileRes) => {
  212 + console.log("--", uploadFileRes);
  213 +
  214 + let avatarObj = JSON.parse(uploadFileRes.data);
  215 + _this.avatarUrl = avatarObj.object;
  216 +
  217 + updateAvatarUrlApi({
  218 + id: this.vuex_user.teacher.id,
  219 + avatarUrl: avatarObj.object,
  220 + }).then((data) => {
  221 + if (data) {
  222 + _this.getUserInfo();
  223 + }
  224 + });
  225 + },
  226 + fail: (error) => {
  227 + console.log("-error-", error);
  228 + },
  229 +
  230 + complete: (res) => {
  231 + this.show = false;
  232 + },
  233 + });
  234 + }
  235 + },
  236 +
  237 + link(type) {
  238 + switch (type) {
  239 + case "account":
  240 + this.$u.route("/pages/student/my/edit-account/edit-account");
  241 + break;
  242 +
  243 + case "password":
  244 + this.$u.route("/pages/student/my/edit-password/edit-password");
  245 + break;
  246 + }
  247 + },
  248 + },
  249 +};
203 </script> 250 </script>
204 251
205 <style lang="scss" scoped> 252 <style lang="scss" scoped>
206 - .account_safe {  
207 - width: 100%;  
208 - height: 100%;  
209 - background-color: #F7F7F7;  
210 - padding: 20rpx 0 0 0;  
211 -  
212 - .avatar {  
213 - width: 190rpx;  
214 - margin: 0 auto;  
215 - padding: 50rpx 0;  
216 - }  
217 -  
218 - .top {  
219 - margin: 0 0 20rpx 0;  
220 - }  
221 -  
222 - .cell {  
223 - background-color: #FFFFFF;  
224 -  
225 - .u-slot-value {  
226 - font-size: 28rpx;  
227 - line-height: 40rpx;  
228 - color: #202131;  
229 - }  
230 - }  
231 -  
232 - .cell /deep/ .u-cell {  
233 - padding: 12rpx 0;  
234 -  
235 - .u-cell__value {  
236 - font-size: 34rpx;  
237 - color: rgba(0, 0, 0, 0.5);  
238 - }  
239 - }  
240 - } 253 +.account_safe {
  254 + width: 100%;
  255 + height: 100%;
  256 + background-color: #f7f7f7;
  257 + padding: 20rpx 0 0 0;
  258 +
  259 + .avatar {
  260 + width: 190rpx;
  261 + margin: 0 auto;
  262 + padding: 50rpx 0;
  263 + }
  264 +
  265 + .top {
  266 + margin: 0 0 20rpx 0;
  267 + }
  268 +
  269 + .cell {
  270 + background-color: #ffffff;
  271 +
  272 + .u-slot-value {
  273 + font-size: 28rpx;
  274 + line-height: 40rpx;
  275 + color: #202131;
  276 + }
  277 + }
  278 +
  279 + .cell /deep/ .u-cell {
  280 +
  281 + .u-cell__value {
  282 + font-size: 34rpx;
  283 + color: rgba(0, 0, 0, 0.5);
  284 + }
  285 + }
  286 +}
241 </style> 287 </style>
@@ -27,8 +27,8 @@ const actions = { @@ -27,8 +27,8 @@ const actions = {
27 custom: { 27 custom: {
28 auth: false 28 auth: false
29 } 29 }
30 - });  
31 - 30 + });
  31 +
32 console.log(login_result) 32 console.log(login_result)
33 33
34 if (login_result) { 34 if (login_result) {
@@ -64,10 +64,8 @@ const actions = { @@ -64,10 +64,8 @@ const actions = {
64 uni.$u.route({ 64 uni.$u.route({
65 url: 'pages/tabBar/home/home', 65 url: 'pages/tabBar/home/home',
66 type: 'switchTab', 66 type: 'switchTab',
67 - params: {  
68 -  
69 - }  
70 }) 67 })
  68 + uni.$u.vuex('vuex_tabbar_index', 0);
71 } 69 }
72 70
73 break; 71 break;
@@ -139,4 +137,4 @@ export default { @@ -139,4 +137,4 @@ export default {
139 getters, 137 getters,
140 actions, 138 actions,
141 mutations 139 mutations
142 -} 140 +}
注册登录 后发表评论