作者 朱兆平

修复获取用户信息BUG

1 import http from './http.js' 1 import http from './http.js'
  2 +import jsutil from "@/common/js/util";
2 let baseUrl = '/cloud-user-center/user' 3 let baseUrl = '/cloud-user-center/user'
3 // let baseUrl = '/cloud-kako-user-center/user' 4 // let baseUrl = '/cloud-kako-user-center/user'
4 // let baseCode = '/cloud-kako-user-center/randCode' 5 // let baseCode = '/cloud-kako-user-center/randCode'
@@ -21,3 +22,21 @@ export const addUser = params => { return http.post(`${baseUrl}/add`,params)}; @@ -21,3 +22,21 @@ export const addUser = params => { return http.post(`${baseUrl}/add`,params)};
21 export const setUserRole = params => { return http.put(`${baseUrl}/roleset`,params)}; 22 export const setUserRole = params => { return http.put(`${baseUrl}/roleset`,params)};
22 23
23 export const resetToken = params => { return http.put(`${baseUrl}/resetToken`,params)}; 24 export const resetToken = params => { return http.put(`${baseUrl}/resetToken`,params)};
  25 +
  26 +export const loginedUserInfo = () => {
  27 + console.log("获取用户信息:")
  28 + let session_user_info = sessionStorage.getItem('user');
  29 + if (session_user_info && jsutil.checkNull(session_user_info)){
  30 + let user = JSON.parse(sessionStorage.getItem('user'));
  31 + console.log("获取用户信息:"+sessionStorage.getItem('user'))
  32 + return user;
  33 + }else {
  34 + // Message({
  35 + // message:"未查询到用户缓存名称",
  36 + // type:"error",
  37 + // });
  38 + return {
  39 + username:""
  40 + };
  41 + }
  42 +};
@@ -91,6 +91,16 @@ var axois_init = { @@ -91,6 +91,16 @@ var axois_init = {
91 sessionStorage.removeItem('user'); 91 sessionStorage.removeItem('user');
92 sessionStorage.removeItem('menu'); 92 sessionStorage.removeItem('menu');
93 sessionStorage.removeItem('token'); 93 sessionStorage.removeItem('token');
  94 + this.$store.commit('set_user_menu', []);
  95 + this.$store.commit('set_user_info', {
  96 + userId: 0,
  97 + username: '',
  98 + companyId: 0,
  99 + companyName: '',
  100 + realname: '',
  101 + userface: '',
  102 + companyInfo:{}
  103 + });
94 axios.defaults.headers.common['Authorization'] = undefined; 104 axios.defaults.headers.common['Authorization'] = undefined;
95 next() 105 next()
96 }else{ 106 }else{
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 <el-dropdown-menu slot="dropdown"> 18 <el-dropdown-menu slot="dropdown">
19 <el-dropdown-item>用户:{{sysUserName}}</el-dropdown-item> 19 <el-dropdown-item>用户:{{sysUserName}}</el-dropdown-item>
20 <el-dropdown-item>我的消息</el-dropdown-item> 20 <el-dropdown-item>我的消息</el-dropdown-item>
21 - <el-dropdown-item @click.native="editPass">修改密码</el-dropdown-item> 21 + <el-dropdown-item @click.native="changePass">修改密码</el-dropdown-item>
22 <el-dropdown-item @click.native="updateCache">更新缓存</el-dropdown-item> 22 <el-dropdown-item @click.native="updateCache">更新缓存</el-dropdown-item>
23 <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item> 23 <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
24 </el-dropdown-menu> 24 </el-dropdown-menu>
@@ -29,16 +29,43 @@ @@ -29,16 +29,43 @@
29 <TabMenu></TabMenu> 29 <TabMenu></TabMenu>
30 </el-main> 30 </el-main>
31 </el-container> 31 </el-container>
  32 + <el-dialog title="修改密码" :visible.sync="dialogFormVisible">
  33 + <el-form :model="resetForm" status-icon :rules="resetFormRules" ref="resetForm" label-width="100px">
  34 + <el-form-item label="用户名" prop="name">
  35 + <span>{{sysUserName}}</span>
  36 + </el-form-item>
  37 + <el-row :gutter="1">
  38 + <el-col :span="11">
  39 + <el-form-item label=" " prop="newpwd">
  40 + <el-input type="password" v-model="resetForm.newpwd" autocomplete="off" show-password placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三">
  41 + <template slot="prepend">新密码</template>
  42 + </el-input>
  43 + </el-form-item>
  44 + </el-col>
  45 + <el-col :span="11">
  46 + <el-form-item label=" " prop="renewpwd">
  47 + <el-input type="password" v-model="resetForm.renewpwd" show-password auto-complete="off" placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三">
  48 + <template slot="prepend">确认密码</template>
  49 + </el-input>
  50 + </el-form-item>
  51 + </el-col>
  52 + </el-row>
  53 +
  54 + <el-form-item>
  55 + <el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>
  56 + </el-form-item>
  57 +
  58 + </el-form>
  59 + </el-dialog>
32 </el-container> 60 </el-container>
33 </template> 61 </template>
34 62
35 <script> 63 <script>
36 import rt from '../routes' 64 import rt from '../routes'
37 - import { editPass,resetToken} from '../api/user'; 65 + import { editPass,resetToken,loginedUserInfo} from '../api/user';
38 import ElFormItem from "element-ui/packages/form/src/form-item"; 66 import ElFormItem from "element-ui/packages/form/src/form-item";
39 import TabMenu from "@/components/TabMenu" 67 import TabMenu from "@/components/TabMenu"
40 import NavMenu from "@/components/NavMenu" 68 import NavMenu from "@/components/NavMenu"
41 - import loginuserInfo from "@/api/base";  
42 import {mapActions, mapGetters} from 'vuex' 69 import {mapActions, mapGetters} from 'vuex'
43 import jsutil from "@/common/js/util"; 70 import jsutil from "@/common/js/util";
44 71
@@ -51,6 +78,48 @@ @@ -51,6 +78,48 @@
51 }, 78 },
52 components: {ElFormItem,TabMenu,NavMenu}, 79 components: {ElFormItem,TabMenu,NavMenu},
53 data() { 80 data() {
  81 + var validatePass = (rule, value, callback) => {
  82 + if (!value) {
  83 + callback(new Error('请输入新密码'));
  84 + }else {
  85 + var ls=0;
  86 + if(value.match(/([a-z])+/)){
  87 + ls++;
  88 + } if(value.match(/([0-9])+/)){
  89 + ls++;
  90 + } if(value.match(/([A-Z])+/)){
  91 + ls++;
  92 + } if((/([\W])+/) && !value.match(/(![\u4E00-\u9FA5])+/)){
  93 + ls++;
  94 + } if (value.toString().length < 8 || value.toString().length > 20) {
  95 + callback(new Error('密码长度为8 - 20个字符'));
  96 + ls=0;
  97 + } if(value.match(/([\u4E00-\u9FA5])+/)){
  98 + callback(new Error('不能包含中文字符'));
  99 + ls=0;
  100 + }
  101 + switch (ls) {
  102 + case 0: this.passwordPercent = 0;callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));break;
  103 + case 1: this.passwordPercent = 33;callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));break;
  104 + case 2: this.passwordPercent = 66;callback(new Error('数字、小写字母 、大写字母以及特殊字符中四选三'));break;
  105 + case 3:
  106 + case 4: this.passwordPercent = 100;break;
  107 + default: this.passwordPercent = 0;break;
  108 + }
  109 + callback();
  110 + }
  111 +
  112 + };
  113 +
  114 + var validatePass2 = (rule, value, callback) => {
  115 + if (value === '') {
  116 + callback(new Error('请再次输入密码'));
  117 + } else if (value !== this.resetForm.newpwd) {
  118 + callback(new Error('两次输入密码不一致!'));
  119 + } else {
  120 + callback();
  121 + }
  122 + };
54 return { 123 return {
55 rotate:false, 124 rotate:false,
56 sysName:'', 125 sysName:'',
@@ -73,6 +142,19 @@ @@ -73,6 +142,19 @@
73 userId: '', 142 userId: '',
74 password: '', 143 password: '',
75 }, 144 },
  145 + dialogFormVisible:false,
  146 + resetForm: {
  147 + newpwd: '',
  148 + renewpwd: '',
  149 + },
  150 + resetFormRules: {
  151 + newpwd: [
  152 + { required: true, validator: validatePass, trigger: 'blur' }
  153 + ],
  154 + renewpwd: [
  155 + { required: true, validator: validatePass2, trigger: 'blur' }
  156 + ]
  157 + },
76 } 158 }
77 }, 159 },
78 methods: { 160 methods: {
@@ -80,13 +162,10 @@ @@ -80,13 +162,10 @@
80 ['setUserInfoStore','setUserMenuStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法 162 ['setUserInfoStore','setUserMenuStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法
81 ), 163 ),
82 initUserInfo:function() { 164 initUserInfo:function() {
83 - if (jsutil.checkNull(this.getUserInfoStore.username)){  
84 - this.sysUserName = this.getUserInfoStore.username || '';  
85 - this.sysUserId=this.getUserInfoStore.userId||'';  
86 - this.sysUserAvatar = this.getUserInfoStore.userface || '~img/faceDefault.jpg';  
87 - }else {  
88 - this.setUserInfoStore(loginuserInfo);  
89 - } 165 + this.setUserInfoStore(loginedUserInfo());
  166 + this.sysUserName = this.getUserInfoStore.username || '';
  167 + this.sysUserId=this.getUserInfoStore.userId||'';
  168 + this.sysUserAvatar = this.getUserInfoStore.userface || '~img/faceDefault.jpg';
90 }, 169 },
91 reload() { 170 reload() {
92 this.$nextTick(function () { 171 this.$nextTick(function () {
@@ -143,7 +222,37 @@ @@ -143,7 +222,37 @@
143 //折叠导航栏 222 //折叠导航栏
144 collapse:function(){ 223 collapse:function(){
145 this.collapsed=!this.collapsed; 224 this.collapsed=!this.collapsed;
146 - } 225 + },
  226 + submitEdit(formName){
  227 + this.$refs[formName].validate((valid) => {
  228 + if (valid) {
  229 + this.editForm.userId=this.sysUserId;
  230 + this.editForm.password=this.resetForm.renewpwd;
  231 + editPass(this.editForm).then(res=>{
  232 + let response=res.data;
  233 + if(response.code=='200'){
  234 + this.$notify({
  235 + title: '密码修改成功',
  236 + message: '密码修改成功,退出请重新登录',
  237 + type: 'success'
  238 + });
  239 + this.dialogFormVisible=false;
  240 + }else{
  241 + this.$notify.error({
  242 + title: '密码修改失败',
  243 + message: '密码修改失败!!!'
  244 + });
  245 + }
  246 + });
  247 + } else {
  248 + console.log('error submit!!');
  249 + return false;
  250 + }
  251 + });
  252 + },
  253 + changePass:function(){
  254 + this.dialogFormVisible=true;
  255 + },
147 }, 256 },
148 computed: { 257 computed: {
149 ...mapGetters(['getUserInfoStore','getUserMenuStore']) // 动态计算属性,相当于this.$store.getters.resturantName 258 ...mapGetters(['getUserInfoStore','getUserMenuStore']) // 动态计算属性,相当于this.$store.getters.resturantName
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <el-input type="text" v-model="ruleForm2.account" autofocus placeholder="账号"></el-input> 6 <el-input type="text" v-model="ruleForm2.account" autofocus placeholder="账号"></el-input>
7 </el-form-item> 7 </el-form-item>
8 <el-form-item prop="checkPass"> 8 <el-form-item prop="checkPass">
9 - <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2" show-password></el-input> 9 + <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keydown.enter.native="keyDown" show-password></el-input>
10 </el-form-item> 10 </el-form-item>
11 <!-- <el-form-item prop="checkPass">--> 11 <!-- <el-form-item prop="checkPass">-->
12 <!-- <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2"></el-input>--> 12 <!-- <el-input type="password" v-model="ruleForm2.checkPass" placeholder="密码" @keyup.enter.native="handleSubmit2"></el-input>-->
@@ -112,6 +112,11 @@ @@ -112,6 +112,11 @@
112 112
113 }); 113 });
114 }, 114 },
  115 + keyDown(e) {
  116 + if(e.keyCode===13) { //用户点击了ctrl+enter触发
  117 + this.handleSubmit2()
  118 + }
  119 + },
115 handleSubmit2: function (ev) { 120 handleSubmit2: function (ev) {
116 var _this = this; 121 var _this = this;
117 this.$refs.ruleForm2.validate((valid) => { 122 this.$refs.ruleForm2.validate((valid) => {
@@ -169,6 +174,7 @@ @@ -169,6 +174,7 @@
169 } 174 }
170 }, 175 },
171 mounted:function () { 176 mounted:function () {
  177 + const _this = this
172 window.onresize = () => { 178 window.onresize = () => {
173 const windowWidth = document.body.clientWidth 179 const windowWidth = document.body.clientWidth
174 const windowHeight = document.body.clientHeight 180 const windowHeight = document.body.clientHeight
@@ -196,6 +202,12 @@ @@ -196,6 +202,12 @@
196 } 202 }
197 } 203 }
198 window.onresize(); 204 window.onresize();
  205 + document.onkeydown = function (e) {
  206 + let key = window.event.keyCode;
  207 + if (key == 13) {
  208 + _this.handleSubmit2();
  209 + }
  210 + };
199 // this.randCode(); 211 // this.randCode();
200 } 212 }
201 } 213 }
@@ -22,22 +22,22 @@ @@ -22,22 +22,22 @@
22 22
23 <el-col :gutter="0" class="toolbar toobar_analysis" style="padding-top:0"> 23 <el-col :gutter="0" class="toolbar toobar_analysis" style="padding-top:0">
24 <el-col :span="7"> 24 <el-col :span="7">
25 - <div class="analysis_title">集团数量:</div>  
26 - <div class="analysis_text">2</div> 25 + <div class="analysis_title">机构数量:</div>
  26 + <div class="analysis_text">20</div>
27 </el-col> 27 </el-col>
28 <el-col :span="1"> 28 <el-col :span="1">
29 <el-divider direction="vertical"></el-divider> 29 <el-divider direction="vertical"></el-divider>
30 </el-col> 30 </el-col>
31 <el-col :span="7"> 31 <el-col :span="7">
32 <div class="analysis_title">公司数量:</div> 32 <div class="analysis_title">公司数量:</div>
33 - <div class="analysis_text">5</div> 33 + <div class="analysis_text">50</div>
34 </el-col> 34 </el-col>
35 <el-col :span="1"> 35 <el-col :span="1">
36 <el-divider direction="vertical"></el-divider> 36 <el-divider direction="vertical"></el-divider>
37 </el-col> 37 </el-col>
38 <el-col :span="8"> 38 <el-col :span="8">
39 <div class="analysis_title">数据量共:</div> 39 <div class="analysis_title">数据量共:</div>
40 - <div class="analysis_text">15</div> 40 + <div class="analysis_text">150</div>
41 </el-col> 41 </el-col>
42 </el-col> 42 </el-col>
43 43
@@ -96,19 +96,13 @@ @@ -96,19 +96,13 @@
96 <el-form-item label="上级组织机构"> 96 <el-form-item label="上级组织机构">
97 <span>{{addForm.parentName}}</span> 97 <span>{{addForm.parentName}}</span>
98 </el-form-item> 98 </el-form-item>
99 - <el-form-item label="组织机构名称" prop="roleName">  
100 - <el-input v-model="addForm.roleName" auto-complete="off" placeholder="请输入组织机构名称:例如:公司名称"></el-input>  
101 - </el-form-item>  
102 - <el-form-item label="组织机构描述" prop="description">  
103 - <el-input v-model="addForm.description" auto-complete="off" placeholder="组织机构描述:例如:组织机构简介"></el-input>  
104 - </el-form-item>  
105 - <el-form-item label="组织机构类型" prop="type"> 99 + <el-form-item label=" " prop="type">
106 <el-select 100 <el-select
107 v-model="addForm.type" 101 v-model="addForm.type"
108 filterable 102 filterable
109 allow-create 103 allow-create
110 default-first-option 104 default-first-option
111 - placeholder="请选择类型"> 105 + placeholder="组织机构类型">
112 <el-option 106 <el-option
113 v-for="item in companyOption" 107 v-for="item in companyOption"
114 :key="item.value" 108 :key="item.value"
@@ -117,14 +111,35 @@ @@ -117,14 +111,35 @@
117 </el-option> 111 </el-option>
118 </el-select> 112 </el-select>
119 </el-form-item> 113 </el-form-item>
120 - <el-form-item label="工商企业代码" prop="businessLicense">  
121 - <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码"></el-input> 114 + <el-form-item label=" " prop="roleName">
  115 + <el-input v-model="addForm.roleName" auto-complete="off" placeholder="请输入组织机构名称:例如:公司名称">
  116 + <template slot="prepend">组织机构名称</template>
  117 + </el-input>
122 </el-form-item> 118 </el-form-item>
123 - <el-form-item label="海关备案代码" prop="customsRegCode">  
124 - <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码"></el-input> 119 + <el-form-item label=" " prop="description">
  120 + <el-input v-model="addForm.description" auto-complete="off" placeholder="组织机构描述:例如:组织机构简介">
  121 + <template slot="prepend">组织机构描述</template>
  122 + </el-input>
125 </el-form-item> 123 </el-form-item>
126 - <el-form-item label="海关通道编号" prop="mqcode">  
127 - <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号"></el-input> 124 + <el-form-item label=" " prop="businessLicense">
  125 + <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码">
  126 + <template slot="prepend">企业信用代码</template>
  127 + </el-input>
  128 + </el-form-item>
  129 + <el-form-item label=" " prop="customsRegCode">
  130 + <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码">
  131 + <template slot="prepend">海关备案代码</template>
  132 + </el-input>
  133 + </el-form-item>
  134 + <el-form-item label=" " prop="mqcode">
  135 + <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号">
  136 + <template slot="prepend">海关通道编号</template>
  137 + </el-input>
  138 + </el-form-item>
  139 + <el-form-item label=" " prop="departmentid">
  140 + <el-input v-model="addForm.departmentid" auto-complete="off" placeholder="航司承运人代码,组织机构为航司时必填">
  141 + <template slot="prepend"> 承运人代码&nbsp;&nbsp;&nbsp; </template>
  142 + </el-input>
128 </el-form-item> 143 </el-form-item>
129 </el-form> 144 </el-form>
130 <div slot="footer" class="dialog-footer"> 145 <div slot="footer" class="dialog-footer">
@@ -180,11 +195,23 @@ @@ -180,11 +195,23 @@
180 companyOption: [ 195 companyOption: [
181 { 196 {
182 label: "集团", 197 label: "集团",
183 - value: "集团" 198 + value: "集团",
184 }, 199 },
185 { 200 {
186 label: "公司", 201 label: "公司",
187 value: "公司" 202 value: "公司"
  203 + },
  204 + {
  205 + label: "部门",
  206 + value: "部门"
  207 + },
  208 + {
  209 + label: "航司",
  210 + value: "航司"
  211 + },
  212 + {
  213 + label: "货代",
  214 + value: "货代"
188 } 215 }
189 ], 216 ],
190 treeDefaultProps: { 217 treeDefaultProps: {
@@ -215,8 +242,8 @@ @@ -215,8 +242,8 @@
215 roleName: [ 242 roleName: [
216 { required: true, message: '请输入岗位/角色名称', trigger: 'blur' } 243 { required: true, message: '请输入岗位/角色名称', trigger: 'blur' }
217 ], 244 ],
218 - description: [  
219 - { required: true, message: '请输入岗位/角色描述', trigger: 'blur' } 245 + type: [
  246 + { required: true, message: '请选择组织机构类型', trigger: 'blur' }
220 ] 247 ]
221 }, 248 },
222 //新增界面数据 249 //新增界面数据
@@ -224,7 +251,7 @@ @@ -224,7 +251,7 @@
224 description: '', 251 description: '',
225 roleName: '', 252 roleName: '',
226 roleSign: 1, 253 roleSign: 1,
227 - departmentId:'', 254 + departmentid:'',
228 type: '', 255 type: '',
229 businessLicense: '', 256 businessLicense: '',
230 customsRegCode: '', 257 customsRegCode: '',
@@ -394,12 +421,12 @@ @@ -394,12 +421,12 @@
394 description: '', 421 description: '',
395 roleName: '', 422 roleName: '',
396 roleSign: 1, 423 roleSign: 1,
397 - departmentId:'', 424 + departmentid:'',
398 type: '', 425 type: '',
399 businessLicense: '', 426 businessLicense: '',
400 customsRegCode: '', 427 customsRegCode: '',
401 mqcode: '', 428 mqcode: '',
402 - parentid: 0 429 + parentid: 0,
403 430
404 }; 431 };
405 //如果新增下级 432 //如果新增下级
@@ -424,6 +451,7 @@ @@ -424,6 +451,7 @@
424 para.authorities = null; 451 para.authorities = null;
425 para.permissions = null; 452 para.permissions = null;
426 para.roles = null; 453 para.roles = null;
  454 + para.children = null;
427 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd'); 455 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
428 /* 456 /*
429 查询之后格式this.filters.column.create_start_date中日期发生变化; 457 查询之后格式this.filters.column.create_start_date中日期发生变化;
@@ -20,7 +20,8 @@ const state = { @@ -20,7 +20,8 @@ const state = {
20 companyId: 0, 20 companyId: 0,
21 companyName: '', 21 companyName: '',
22 realname: '', 22 realname: '',
23 - userface: '' 23 + userface: '',
  24 + companyInfo:{}
24 } 25 }
25 26
26 } 27 }