550 lines
12 KiB
Vue
550 lines
12 KiB
Vue
<template>
|
||
<view class="uinfo_view">
|
||
<view class="form-box-ud" style="border-radius: 10upx;">
|
||
<view class="form-item" >
|
||
<text class="label">姓 名:</text>
|
||
<view class="ipt-box">
|
||
<input v-model="realName" type="text" maxlength="120" disabled="true" />
|
||
</view>
|
||
</view>
|
||
<view class="form-item" >
|
||
<text class="label">手机号码:</text>
|
||
<view class="ipt-box">
|
||
<input v-model="mobile" type="text" maxlength="120" disabled="true" />
|
||
</view>
|
||
</view>
|
||
<view class="form-item" >
|
||
<text class="label">部 门:</text>
|
||
<view class="ipt-box box box-between">
|
||
<input style="width: 80%;" v-model="deptText" type="text" maxlength="120" disabled="true" />
|
||
<button @tap="showTree" style="height: 70upx;line-height: 70upx; font-size: 28upx;color: white;background-color: #4db4ea;margin: 0px;" @click="editUserInfo()">修改</button>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- <button class="confirm-btn" @click="editUserInfo()">修改</button> -->
|
||
<tki-tree ref="tkitree" :range="range" rangeKey="name" confirmColor="#4e8af7"
|
||
@confirm="treeConfirm"
|
||
@cancel="treeCancel"
|
||
@childrenClick="childrenClick"
|
||
/>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {mapMutations} from 'vuex';
|
||
import{updateUserInfo,getCodeInfo,getDeptByParentId} from '@/common/api.js'
|
||
import {callbackRequest,alertTip,setStorage,getStorage,devEnv} from '@/common/util.js'
|
||
import uniIcons from '@/components/uni-icons/uni-icons.vue';
|
||
import dyDatetimePicker from '@/components/dateTime.vue'
|
||
import avatar from "../../components/yq-avatar/yq-avatar.vue";
|
||
export default {
|
||
components: {
|
||
uniIcons,
|
||
dyDatetimePicker,
|
||
avatar
|
||
},
|
||
data() {
|
||
return {
|
||
userInfo:getStorage("userInfo"),
|
||
showFlag:0,//0 查看,1修改
|
||
realName:getStorage("userInfo").realName,
|
||
mobile:getStorage("userInfo").mobile,
|
||
departmentId:getStorage("userInfo").deptId,
|
||
departmentName:getStorage("userInfo").departmentName,
|
||
orgId:getStorage("userInfo").orgId,
|
||
orgName:getStorage("userInfo").orgName,
|
||
deptText:getStorage("userInfo").deptNameUrl,
|
||
chooseDept:{},
|
||
range:[],
|
||
|
||
vCode:'',
|
||
codeKey:'',
|
||
jsq:null,//计时器
|
||
btnText:'获取验证码',
|
||
headImg:getStorage("userInfo").wxProfile,
|
||
headImgB64:getStorage("userInfo").wxProfile,
|
||
}
|
||
|
||
},
|
||
computed: {
|
||
},
|
||
onLoad() {
|
||
this.getDeptByParentId(0,new Array());
|
||
},
|
||
methods: {
|
||
...mapMutations(['login']),
|
||
longTap(){
|
||
var vconShow = uni.getStorageSync('1001093_vconShow') == null ? '0' : uni.getStorageSync('1001093_vconShow');
|
||
if(vconShow == 0){
|
||
uni.setStorageSync('1001093_vconShow', "1");
|
||
}else{
|
||
uni.setStorageSync('1001093_vconShow', "0");
|
||
}
|
||
console.log(uni.getStorageSync('1001093_vconShow'));
|
||
},
|
||
|
||
|
||
childrenClick(e){
|
||
var id = e[0].id;
|
||
this.getDeptByParentId(id,e);
|
||
},
|
||
treeConfirm(e) {
|
||
this.chooseDept = e[0];
|
||
console.log(e);
|
||
uni.showModal({
|
||
title: '确认',
|
||
content: '请确认是否修改部门',
|
||
showCancel: true,
|
||
cancelText: '取消',
|
||
confirmText: '确认',
|
||
success: res => {
|
||
if (res.confirm) {
|
||
let deptText = "";
|
||
let deptId = "";
|
||
for(let i=0;i<this.chooseDept.parents.length;i++){
|
||
deptText+=this.chooseDept.parents[i].name+"/";
|
||
deptId+=this.chooseDept.parents[i].id+"/";
|
||
}
|
||
deptText+=this.chooseDept.name;
|
||
deptId+=this.chooseDept.id;
|
||
this.editUserInfo(deptText,deptId);
|
||
this.deptText = deptText;
|
||
} else if (res.cancel) {
|
||
}
|
||
}
|
||
});
|
||
|
||
|
||
},
|
||
// 取消回调事件
|
||
treeCancel(e) {
|
||
},
|
||
// 显示树形选择器
|
||
showTree() {
|
||
this.$refs.tkitree._show();
|
||
},
|
||
getSubScript(id,arr){
|
||
for(var i=0;i<arr.length;i++){
|
||
if(id == arr[i].id){
|
||
return i;
|
||
}
|
||
}
|
||
},
|
||
getDeptByParentId(parentId,arr){
|
||
let params = {
|
||
method: getDeptByParentId,
|
||
data: {
|
||
parentId: parentId
|
||
}
|
||
};
|
||
callbackRequest(params).then(res => {
|
||
res = res.data;
|
||
if (res.returnCode==1) {
|
||
if(res.returnData.length==0){
|
||
return;
|
||
}
|
||
if(parentId==0){
|
||
this.range = res.returnData;
|
||
}else{
|
||
var obj = arr[0];
|
||
var parentArr = obj.parents;
|
||
if(parentArr.length==0){
|
||
for(var i=0;i<this.range.length;i++){
|
||
var rangeObj = this.range[i];
|
||
if(parentId == rangeObj.id){
|
||
this.range[i].children = res.returnData;
|
||
this.range[i].show = true;
|
||
this.range[i].showChild = true;
|
||
this.range[i].open = true;
|
||
this.$refs.tkitree._initTree();
|
||
return;
|
||
}
|
||
}
|
||
}else{
|
||
var numArr=[];
|
||
var dataArr = this.range;
|
||
for(var i=0;i<parentArr.length;i++){
|
||
var subScript = this.getSubScript(parentArr[i].id,dataArr);
|
||
numArr.push(subScript);
|
||
dataArr = dataArr[subScript].children;
|
||
}
|
||
for(var j=0;j<dataArr.length;j++){
|
||
if(parentId == dataArr[j].id){
|
||
numArr.push(j);
|
||
break;
|
||
}
|
||
}
|
||
if(numArr.length==2){
|
||
this.range[numArr[0]].children[numArr[1]].children = res.returnData;
|
||
}else if(numArr.length==3){
|
||
this.range[numArr[0]].children[numArr[1]].children[numArr[2]].children = res.returnData;
|
||
}else if(numArr.length==4){
|
||
this.range[numArr[0]].children[numArr[1]].children[numArr[2]].children[numArr[3]].children = res.returnData;
|
||
}
|
||
this.$refs.tkitree._initTree()
|
||
|
||
}
|
||
}
|
||
}
|
||
});
|
||
},
|
||
checkPhone (phone) {
|
||
if (!(/^1[3456789]\d{9}$/.test(phone))) {
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
testCode(code) {
|
||
if(!(/^\d{6}$/.test(code))){
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
getCodeInfo(){
|
||
if(this.jsq){return false;}
|
||
if (!this.checkPhone(this.uinfo.mobile)) {
|
||
alertTip('请填写正确的手机号码','',1000);
|
||
return false;
|
||
}
|
||
let data = {
|
||
"method": getCodeInfo,
|
||
"data": {
|
||
phone:this.uinfo.mobile
|
||
}
|
||
}
|
||
callbackRequest(data)
|
||
.then(res =>{
|
||
if(res.data.returnCode == 1){
|
||
this.codeKey = res.data.returnMsg;
|
||
alertTip('验证码已发送,请注意查收!','',3000);
|
||
this.timer();
|
||
}
|
||
})
|
||
},
|
||
//倒计时
|
||
timer(){
|
||
let i = 60;
|
||
let _this = this;
|
||
this.jsq = setInterval(function(){
|
||
if(i == 0){
|
||
_this.btnText = '重新发送';
|
||
clearInterval(_this.jsq);
|
||
_this.jsq = null;
|
||
return false;
|
||
}
|
||
_this.btnText = i+'s';
|
||
i--;
|
||
},1000);
|
||
|
||
},
|
||
editUserInfo(deptTextUrl,deptIdUrl){
|
||
if(!this.realName){
|
||
alertTip('请填写姓名','',1000);
|
||
return false;
|
||
}
|
||
if(!this.mobile){
|
||
alertTip('请填写手机号','',1000);
|
||
return false;
|
||
}
|
||
if (!this.checkPhone(this.mobile)) {
|
||
alertTip('请填写正确的手机号码','',1000);
|
||
return false;
|
||
}
|
||
if(this.chooseDept.id){
|
||
this.departmentId = this.chooseDept.id;
|
||
this.departmentName = this.chooseDept.name;
|
||
this.orgId = this.chooseDept.parents[0].id;
|
||
this.orgName =this.chooseDept.parents[0].name;
|
||
}
|
||
let data = {
|
||
"method": updateUserInfo,
|
||
"data": {
|
||
realName:this.realName,
|
||
mobile:this.mobile,
|
||
departmentId:this.departmentId,
|
||
departmentName:this.departmentName,
|
||
orgId:this.orgId,
|
||
orgName:this.orgName,
|
||
id:this.userInfo.id,
|
||
deptIdUrl:deptIdUrl,
|
||
deptTextUrl:deptTextUrl
|
||
}
|
||
}
|
||
callbackRequest(data)
|
||
.then(res =>{
|
||
res = res.data;
|
||
if(res.returnCode == 1){
|
||
alertTip('用户信息已修改','',2000);
|
||
var userInfo=getStorage("userInfo");
|
||
userInfo.deptName = res.returnData.departmentName == null ? '' : res.returnData.departmentName;
|
||
userInfo.deptId = res.returnData.department_id == null ? '' : res.returnData.department_id;
|
||
userInfo.orgName = res.returnData.orgName == null ? '' : res.returnData.orgName;
|
||
userInfo.deptNameUrl = res.returnData.deptNameUrl == null ? '' : res.returnData.deptNameUrl;
|
||
userInfo.departmentName = res.returnData.departmentName == null ? '' : res.returnData.departmentName;
|
||
userInfo.department_id = res.returnData.department_id == null ? '' : res.returnData.department_id;
|
||
userInfo.deptIdUrl = res.returnData.deptIdUrl == null ? '' : res.returnData.deptIdUrl;ss
|
||
uni.setStorage({
|
||
key: "userInfo",
|
||
data: userInfo
|
||
})
|
||
this.login(userInfo);
|
||
}
|
||
})
|
||
|
||
}
|
||
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
@import '@/static/css/common.scss';
|
||
.form-box-ud {
|
||
background: #fff;
|
||
.form-item {
|
||
overflow: hidden;
|
||
// border-bottom: 1px solid #eee;
|
||
padding: 30upx 20upx 10upx 20upx;
|
||
.label {
|
||
width: 150upx;
|
||
font-size: 28upx;
|
||
color: #333;
|
||
font-weight: bold;
|
||
line-height: 50upx;
|
||
}
|
||
.ipt-box {
|
||
margin-left: 40upx;
|
||
margin-top: 20upx;
|
||
input {
|
||
width: 100%;
|
||
height: 70upx;
|
||
line-height: 70upx;
|
||
font-size: 28upx;
|
||
color: #666;
|
||
border: 1px solid #e5e5e5;
|
||
padding-left: 20upx;
|
||
border-radius: 10upx;
|
||
// padding: 40upx 20upx;
|
||
}
|
||
textarea{
|
||
width: 100%;
|
||
height: 200upx;
|
||
font-size: 28upx;
|
||
color: #666;
|
||
border: 1px solid #e5e5e5;
|
||
padding: 20upx;
|
||
border-radius: 10upx;
|
||
}
|
||
.radio-group{
|
||
font-size: 26upx;
|
||
display: flex;
|
||
justify-content: flex-start;
|
||
align-items: center;
|
||
margin-right: 40upx;
|
||
min-width: 140upx;
|
||
margin-bottom: 20upx;
|
||
}
|
||
}
|
||
.select {
|
||
.arrow {
|
||
float: right;
|
||
width: 16upx;
|
||
height: 29upx;
|
||
margin-top: 10upx;
|
||
}
|
||
.picker {
|
||
height: 50upx;
|
||
line-height: 50upx;
|
||
font-size: 26upx;
|
||
color: #666;
|
||
margin-left: 10upx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.bg-ccc{
|
||
background: #ccc !important;
|
||
}
|
||
.icon_view {
|
||
color: $font-color-light;
|
||
margin-left: 2vw;
|
||
}
|
||
|
||
.uinfo_view {
|
||
font-size: $font-lg;
|
||
// background: #fff;
|
||
min-height:100vh;
|
||
}
|
||
|
||
.u_head {
|
||
padding: 4vw;
|
||
}
|
||
|
||
.head_img {
|
||
margin: 40upx auto;
|
||
margin-top: 50upx;
|
||
width: 190upx;
|
||
height:190upx;
|
||
box-shadow: 0 0 10rpx 1rpx #f8f8f8;
|
||
border: 1px solid #e5e5e5;
|
||
border-radius:20upx;
|
||
}
|
||
.head_img image{
|
||
width:100%;
|
||
height:100%;
|
||
border-radius:20upx;
|
||
}
|
||
.head_edit {
|
||
position: absolute;
|
||
top: 41vw;
|
||
left: 56vw;
|
||
width: 10vw;
|
||
height: 10vw;
|
||
z-index: 9999;
|
||
}
|
||
|
||
.i_img {
|
||
width: 100%;
|
||
height: 100%;
|
||
border-radius: 50%;
|
||
|
||
}
|
||
|
||
.head_name {
|
||
font-size: 40upx;
|
||
font-weight: 800;
|
||
text-align: center;
|
||
}
|
||
|
||
.u_mid {
|
||
padding: 4vw;
|
||
}
|
||
|
||
.mid_view {
|
||
padding: 4vw 0;
|
||
display: flex;
|
||
border-bottom: 1px solid #eee;
|
||
}
|
||
.code-box .getCodeBtn{
|
||
float:right;
|
||
width:22vw;
|
||
height:50rpx;
|
||
background: #ff6600;
|
||
text-align: center;
|
||
line-height: 50rpx;
|
||
border-radius:4rpx;
|
||
font-size:26rpx;
|
||
color:#fff;
|
||
}
|
||
.code-box .tab_rig {
|
||
width: 40vw;
|
||
height: 25px;
|
||
}
|
||
.tab_left {
|
||
width: 25vw;
|
||
text-align: right;
|
||
margin-right: 3vw;
|
||
line-height:50rpx;
|
||
}
|
||
|
||
.tab_rig {
|
||
width: 55vw;
|
||
line-height:50rpx;
|
||
input{
|
||
height: 50rpx;
|
||
}
|
||
}
|
||
|
||
.confirm-btn {
|
||
width: 630upx;
|
||
height: 76upx;
|
||
line-height: 76upx;
|
||
border-radius: 10px;
|
||
margin-top: 90upx;
|
||
margin-bottom: 60upx;
|
||
background: #4db4ea;
|
||
color: #fff;
|
||
font-size: $font-lg;
|
||
|
||
}
|
||
.ipt-box {
|
||
margin-left: 160upx;
|
||
input {
|
||
width: 100%;
|
||
height: 50upx;
|
||
line-height: 50upx;
|
||
font-size: 26upx;
|
||
color: #666;
|
||
}
|
||
}
|
||
|
||
.select {
|
||
margin-left: 0rpx;
|
||
width: 60vw;
|
||
font-size: 30rpx;
|
||
color: #666;
|
||
.picker{
|
||
line-height: 50rpx;
|
||
}
|
||
.arrow {
|
||
float: right;
|
||
width: 16upx;
|
||
height: 29upx;
|
||
margin-top: 10upx;
|
||
}
|
||
|
||
input {
|
||
width: 70%;
|
||
}
|
||
}
|
||
|
||
.bg-gray{
|
||
background-color: #9A9A9A;
|
||
}
|
||
|
||
.box {
|
||
display: flex;
|
||
display: -webkit-flex;
|
||
}
|
||
|
||
.box-row-reverse {
|
||
flex-direction: row;
|
||
}
|
||
|
||
/*上下排列*/
|
||
.box-column {
|
||
flex-direction: column;
|
||
}
|
||
|
||
/*上下排列*/
|
||
.box-left {
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
/*居右*/
|
||
.box-right {
|
||
justify-content: flex-end;
|
||
}
|
||
|
||
/*居左*/
|
||
.box-center {
|
||
justify-content: center;
|
||
}
|
||
|
||
/*居中*/
|
||
.box-between {
|
||
justify-content: space-between;
|
||
}
|
||
|
||
/*两端对齐*/
|
||
.box-align-center {
|
||
align-items: center;
|
||
}
|
||
|
||
.box-wrap {
|
||
flex-wrap: wrap;
|
||
}
|
||
</style>
|