Browse Source

feat(market): 销售模块个人资料功能

- 修改 API接口,统一参数格式
- 实现用户信息获取和展示- 添加用户信息编辑功能
- 优化头像上传逻辑
- 完善表单验证
master
liutong 1 year ago
parent
commit
7f957ede43
  1. 14
      api/market.js
  2. 38
      pages/market/my/index.vue
  3. 189
      pages/market/my/info.vue

14
api/market.js

@ -3,7 +3,7 @@ import http from '../common/axios.js'
//销售相关接口
export default {
//获取销售人员详情
member(data) {
member(data={}) {
let url = '/member/member'
return http.get(url,data).then(res => {
return res;
@ -11,7 +11,7 @@ export default {
},
//修改销售人员详情
memberEdit(data) {
memberEdit(data={}) {
let url = '/member/member_edit'
return http.post(url,data).then(res => {
return res;
@ -19,7 +19,7 @@ export default {
},
//线索列表
salesList(data) {
salesList(data={}) {
let url = '/member/sales_list'
return http.get(url,data).then(res => {
return res;
@ -27,7 +27,7 @@ export default {
},
//线索列表
createTask(data) {
createTask(data={}) {
let url = '/member/create_task'
return http.get(url,data).then(res => {
return res;
@ -35,7 +35,7 @@ export default {
},
//写新跟进
createFollow(data) {
createFollow(data={}) {
let url = '/member/create_follow'
return http.post(url,data).then(res => {
return res;
@ -44,7 +44,7 @@ export default {
//小区列表
getCampusesList(data) {
getCampusesList(data={}) {
let url = '/member/get_campuses_list'
return http.get(url,data).then(res => {
return res;
@ -52,7 +52,7 @@ export default {
},
//添加线索
setSales(data) {
setSales(data={}) {
let url = '/member/set_sales'
return http.post(url,data).then(res => {
return res;

38
pages/market/my/index.vue

@ -1,4 +1,4 @@
<!--我的-首页-->
<!--销售我的-首页-->
<template>
<view class="main_box">
<!--自定义导航栏-->
@ -11,8 +11,8 @@
<view class="user_section">
<view class="box">
<view class="left" @click="openViewMyInfo()">
<image class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<view class="name">包子皮</view>
<image class="pic" :src="$util.img(userInfo.headimg)"></image>
<view class="name">{{userInfo.nickname ? userInfo.nickname:userInfo.username}}</view>
</view>
<view class="right">
<view class="btn"></view>
@ -92,7 +92,10 @@
</template>
<script>
// import user from '@/api/user.js';
import marketApi from '@/api/market.js';
import {
Api_url
} from "@/common/config.js";
import AQTabber from "@/components/AQ/AQTabber.vue"
@ -103,11 +106,38 @@ export default {
data() {
return {
formData:{},
userInfo:{},//
//APi
uploadUrl: `${Api_url}/file/image`,
}
},
onLoad() {
},
onShow() {
this.init();
},
methods: {
//
async init(){
await this.getUserInfo()//
},
//
async getUserInfo(){
let data = {}
let res = await marketApi.member(data);
if (res.code != 1){
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
this.userInfo = res.data
},
//
openViewArrivalStatistics(){
uni.navigateTo({

189
pages/market/my/info.vue

@ -1,11 +1,16 @@
<!--授课统计-详情-->
<!--销售-个人资料-详情-->
<template>
<view class="main_box">
<view class="main_section">
<view class="section">
<view class="item">
<image @click="changeAvatar()" class="pic" src="http://www.firstui.cn:4000/vipdoc/img/img_logo.png"></image>
<image
@click="changeAvatar()"
class="pic"
:src="$util.img(formData.header)"
></image>
<view class="btn" @click="changeAvatar()">修改头像</view>
</view>
</view>
@ -25,7 +30,7 @@
账号 <text class="required"></text>
</view>
<view class="input">
<input disabled placeholder="暂无" />
<input v-model="formData.username" disabled placeholder="暂无" />
</view>
</view>
@ -43,7 +48,7 @@
等级 <text class="required"></text>
</view>
<view class="input">
<input disabled placeholder="暂无" />
<input v-model="formData.member_level_name" disabled placeholder="暂无" />
</view>
</view>
</view>
@ -54,7 +59,7 @@
性别 <text class="required">*</text>
</view>
<view class="input">
<input placeholder="请选择性别" v-model="sex_name" @click="picker_show_sex=true"/>
<input placeholder="请选择性别" v-model="formData.gender" @click="picker_show_sex=true"/>
<fui-picker
layer="1"
:linkage="true"
@ -97,7 +102,7 @@
手机 <text class="required">*</text>
</view>
<view class="input">
<input v-model="formData.tel" placeholder="请输入手机" />
<input v-model="formData.phone" placeholder="请输入手机" />
</view>
</view>
@ -111,14 +116,16 @@
</view>
</view>
<view class="submet_btn">提交</view>
<view class="submet_btn" @click="submit">提交</view>
</view>
</view>
</template>
<script>
// import user from '@/api/user.js';
import {Api_url} from "@/common/config.js";
import marketApi from '@/api/market.js';
import {
Api_url
} from "@/common/config.js";
import AQTabber from "@/components/AQ/AQTabber"
@ -129,30 +136,43 @@ export default {
data() {
return {
formData:{
images_arr:[],
header:'',//
name:'',//
email:'',//
tel:'',//
wx:'',//
sex:'',//
username:'',//
address:'',//
gender:'',//|,
birthday:'',//
email:'',//
phone:'',//
wx:'',//
},
userInfo: {},
//APi
uploadUrl: `${Api_url}/salesmanapi/common/uploadFile`,
uploadUrl: `${Api_url}/file/image`,
//
picker_show_sex: false,
sex_name:'请选择',
options_sex_arr: [
{ value: 1, text: '男' },
{ value: 2, text: '女' },
{
value: 1,
text: '男'
},
{
value: 2,
text: '女'
},
],
//
minDate: '',
maxDate: '',
picker_show_birthday: false,
upload_type: 1,
uploadHeadimg: '',
editHeadimg: '',
}
},
onLoad() {
@ -163,7 +183,36 @@ export default {
methods: {
async init(){
this.getBirthday()
// this.getBirthday()
await this.getUserInfo()
},
//
async getUserInfo(){
let res = await marketApi.member({})
if (res.code != 1){
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
//
this.formData = {
header: res.data.headimg,//
name: res.data.name,//
username: res.data.username,//
address: res.data.address,//
gender: res.data.gender,//|,
birthday: res.data.birthday,//
email: res.data.email,//
phone: res.data.phone,//
wx: res.data.wx || '',//
member_level_name: res.data.member_level_name || '',//
}
console.log(123,this.formData);
},
//
@ -179,34 +228,31 @@ export default {
}
})
},
async uploadFilePromise(url) {
console.log('AQ',this.uploadUrl,url)
return new Promise((resolve, reject) => {
uploadFilePromise(url) {
let token = uni.getStorageSync('token') || ''
let a = uni.uploadFile({
url: this.uploadUrl, //
filePath: url,
name: "file",
formData: {
token: this.$store.state.token,
name: 'file',
header: {
'token': `${token}`, //token
},
success: (e) => {
console.log('上传成功1',e)
let res = JSON.parse(e.data.replace(/\ufeff/g, "") || "{}")
console.log('上传成功2', res)
if (res.code >= 0){
this.userInfo.pic = res.data.pic_path
this.editPic(res.data.pic_path)
if (res.code == 1) {
this.upload_type = 2
this.formData.header = res.data.path
// this.editHeadimg = res.data.path
// this.uploadHeadimg = res.data.url
} else {
this.$util.showToast({
title: res.message
});
uni.showToast({
title: res.msg,
icon: 'none'
})
}
setTimeout(() => {
resolve(res.data.data);
}, 1000);
},
});
});
},
//Api
async editPic(pic) {
@ -225,8 +271,7 @@ export default {
//
changePickerSex(e) {
console.log('监听选择', e)
this.sex_name = e.text
this.formData.sex = e.value
this.formData.gender = e.text
this.picker_show_sex = false
},
@ -277,6 +322,76 @@ export default {
this.picker_show_birthday = false
},
//
async submit() {
let data = {...this.formData}
if(!data.header){
uni.showToast({
title: '请上传头像',
icon: 'none'
})
return
}
if(!data.name){
uni.showToast({
title: '请填写',
icon: 'none'
})
return
}
if(!data.gender){
uni.showToast({
title: '请选择性别',
icon: 'none'
})
return
}
if(!data.birthday){
uni.showToast({
title: '请选择生日',
icon: 'none'
})
return
}
if(!data.email){
uni.showToast({
title: '请填写邮箱',
icon: 'none'
})
return
}
if(!data.phone){
uni.showToast({
title: '请填写手机',
icon: 'none'
})
return
}
let res = await marketApi.memberEdit(data)
if(res.code != 1){
uni.showToast({
title: res.msg,
icon: 'none'
})
return
}
uni.showToast({
title: res.msg,
icon: 'success'
})
this.getUserInfo()
},
}
}
</script>

Loading…
Cancel
Save