足力健前端,vue版本

index.vue 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <template>
  2. <div class="app-container personal">
  3. <el-row :gutter="24" type="flex" justify="center">
  4. <el-col :md="24">
  5. <h1 class="title">基本资料</h1>
  6. <div class="clearfix">
  7. <el-col :md="4">
  8. <img :src="!avatar ? '/static/img/user.png' : avatar" class="avatar" alt="头像">
  9. <div>
  10. <el-tooltip class="item" effect="dark" content="后台需要增加修改头像的接口" placement="top-start">
  11. <el-button type="text" class="btn_avat" @click="toggleShow">修改头像</el-button>
  12. </el-tooltip>
  13. <avatar-upload
  14. v-model="uploadAvatar.show"
  15. :url="uploadUrl"
  16. :params="uploadAvatar.params"
  17. :width="200"
  18. :height="200"
  19. :no-rotate="false"
  20. img-format="png"
  21. @crop-success="cropSuccess"
  22. @crop-upload-success="cropUploadSuccess"/>
  23. </div>
  24. </el-col>
  25. <el-col :md="20">
  26. <p class="head_con">登录账号:{{ usercode }}</p>
  27. <p class="head_con">姓名:{{ username }}</p>
  28. <p class="head_con">角色权限:{{ userRole }}</p>
  29. <p v-if="seatflag" class="head_con">分机号:{{ extension }}</p>
  30. </el-col>
  31. </div>
  32. <hr class="division">
  33. <ul class="lists">
  34. <li class="list_item clearfix">
  35. <el-col :md="3">
  36. <label class="item_label">密码修改</label>
  37. </el-col>
  38. <el-col :md="21">
  39. <span class="item_span">***********</span>
  40. <el-button type="text" class="btn_pass" @click="btn_modifyPass(userid)">修改</el-button>
  41. </el-col>
  42. </li>
  43. <li class="list_item clearfix">
  44. <el-col :md="3">
  45. <label class="item_label">手机号码</label>
  46. </el-col>
  47. <el-col :md="21">
  48. <span class="item_span">您已绑定了手机 <b>{{ mobile }}</b>【您的手机为安全手机,但不能用于登录】</span>
  49. <!-- <el-tooltip class="item" effect="dark" content="暂未处理" placement="top-start">
  50. <el-button type="text" class="btn_tel">修改</el-button>
  51. </el-tooltip> -->
  52. </el-col>
  53. </li>
  54. <!-- <li class="list_item clearfix">
  55. <el-col :md="3">
  56. <label class="item_label">转接设置</label>
  57. </el-col>
  58. <el-col :md="21">
  59. <span class="item_span">您已经将转接号码绑设置为:<b class="red">152-3836-8612</b>【当您开启转到手机接听时,电话会转到此号码】</span>
  60. <el-tooltip class="item" effect="dark" content="暂未处理" placement="top-start">
  61. <el-button type="text" class="btn_trans">修改</el-button>
  62. </el-tooltip>
  63. </el-col>
  64. </li> -->
  65. </ul>
  66. </el-col>
  67. </el-row>
  68. </div>
  69. </template>
  70. <script>
  71. import { updateAvatar } from '@/api/systemSetup/roleSetting/userManage'
  72. import modifyPass from './components/modifyPass'
  73. import avatarUpload from 'vue-image-crop-upload'
  74. import { mapGetters } from 'vuex'
  75. export default {
  76. name: 'PersonalInfo',
  77. components: {
  78. 'avatar-upload': avatarUpload
  79. },
  80. data() {
  81. return {
  82. uploadUrl: this.$store.getters.serverConfig.BASE_API + 'fileserverapi/Api/Upload',
  83. uploadAvatar: {
  84. show: false,
  85. params: {
  86. uploadtype: 'avatar'
  87. },
  88. imgDataUrl: '' // 头像剪切后生成的 datebase64格式的url
  89. }
  90. }
  91. },
  92. computed: {
  93. ...mapGetters([
  94. 'userid',
  95. 'avatar',
  96. 'username',
  97. 'usercode',
  98. 'userRole',
  99. 'seatflag',
  100. 'extension',
  101. 'mobile',
  102. ])
  103. },
  104. created() {
  105. },
  106. methods: {
  107. // 修改头像
  108. toggleShow() {
  109. this.uploadAvatar.show = !this.uploadAvatar.show
  110. },
  111. cropSuccess(imgDataUrl, field) {
  112. // this.uploadAvatar.imgDataUrl = imgDataUrl;
  113. },
  114. cropUploadSuccess(jsonData, field) {
  115. if (jsonData.state.toLowerCase() === 'success') {
  116. const avatarData = {
  117. usercode: this.usercode,
  118. head_img: jsonData.data[0].head_img, // 头像大图
  119. head_small_img: jsonData.data[0].head_small_img // 头像缩略图
  120. }
  121. updateAvatar(avatarData).then(response => {
  122. if (response.state.toLowerCase() === 'success') {
  123. // 更新头像
  124. this.$store.dispatch('SetAvatar', jsonData.data[0].head_img)
  125. this.$message.success(`恭喜你,用户(${this.usercode}-${this.username})的头像修改成功!`)
  126. }
  127. })
  128. }
  129. },
  130. // 修改密码
  131. btn_modifyPass(editId) {
  132. this.$layer.iframe({
  133. content: {
  134. content: modifyPass, // 传递的组件对象
  135. parent: this, // 当前的vue对象
  136. data: { 'rowid': editId, 'ispersonal': true }// props
  137. },
  138. area: ['40%', '360px'],
  139. title: '修改密码'
  140. })
  141. }
  142. }
  143. }
  144. </script>
  145. <style rel="stylesheet/scss" lang="scss" scoped>
  146. .personal{
  147. height: 100%;
  148. .title {
  149. font-size: 18px;
  150. padding-left: 10px;
  151. border-left: 2px solid #069BFF;
  152. }
  153. .avatar{
  154. width: 110px;
  155. height: 110px;
  156. background-color: #0086B3;
  157. border-radius: 50%;
  158. }
  159. .btn_avat{
  160. margin-left: 30px;
  161. }
  162. .head_con{
  163. font-size: 12px;
  164. color: #4c4c4c;
  165. margin: 18px 0;
  166. }
  167. .division{
  168. background-color: #d9e1eb;
  169. height: 1px;
  170. border: none;
  171. }
  172. .lists{
  173. margin: 0;
  174. padding: 0;
  175. list-style: none;
  176. .list_item{
  177. border-bottom: 1px dashed #d9e1eb;
  178. line-height: 70px;
  179. .item_label{
  180. padding-left: 10px;
  181. font-size: 12px;
  182. font-weight: bold;
  183. color: #333333;
  184. }
  185. .item_span{
  186. font-size: 14px;
  187. }
  188. .btn_pass{
  189. margin-left: 70px;
  190. }
  191. .btn_tel{
  192. margin-left: 44px;
  193. }
  194. .btn_trans{
  195. margin-left: 54px;
  196. }
  197. .red{
  198. color: #ff0000;
  199. }
  200. }
  201. }
  202. }
  203. @media only screen and (max-width: 768px) {
  204. .personal{
  205. height: auto;
  206. }
  207. }
  208. </style>