2
3

usersetting.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <style>
  2. .input-with-select .el-select .el-input {
  3. width: 110px;
  4. }
  5. .input-with-select .el-input-group__append {
  6. background-color: #fff;
  7. }
  8. </style>
  9. <template>
  10. <el-card style="min-height: calc(100vh - 92px);">
  11. <div slot="header" style="height: 20px;">
  12. <span style="float: left;">
  13. <i class="icon icon-table2"></i>
  14. </span>
  15. <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
  16. <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
  17. <el-breadcrumb-item>账号设置</el-breadcrumb-item>
  18. </el-breadcrumb>
  19. <span style="float: right;">
  20. <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
  21. @click="savedata('form')">保存</el-button>
  22. </span>
  23. </div>
  24. <el-row>
  25. <el-col :span="16">
  26. <el-form ref="form" :model="form" :rules="rulesform" label-width="80px">
  27. <el-row>
  28. <el-col :span="12">
  29. <el-form-item label="账号">
  30. <el-input v-model="authUser.name" disabled></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="12">
  34. <el-form-item label="编码">
  35. <el-input v-model="form.CompanyCode"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. </el-row>
  39. <el-row>
  40. <el-form-item required prop="Realname" label="名称">
  41. <el-input v-model="form.Realname"></el-input>
  42. </el-form-item>
  43. <el-form-item label="单位地址">
  44. <el-input v-model="form.Address"></el-input>
  45. </el-form-item>
  46. <el-col :span="12">
  47. <el-form-item label="联系人">
  48. <el-input v-model="form.Manager"></el-input>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="12">
  52. <el-form-item label="手机">
  53. <el-input v-model="form.Telephone"></el-input>
  54. </el-form-item>
  55. </el-col>
  56. <el-col :span="12">
  57. <el-form-item label="座机">
  58. <el-input v-model="form.Mobile"></el-input>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="12">
  62. <el-form-item label="Email">
  63. <el-input v-model="form.Email"></el-input>
  64. </el-form-item>
  65. </el-col>
  66. </el-row>
  67. <el-form-item label="备注">
  68. <el-input type="textarea" :rows="4" v-model="form.Description"></el-input>
  69. </el-form-item>
  70. </el-form>
  71. </el-col>
  72. <el-col :span="2">&nbsp;</el-col>
  73. <el-col :span="5">
  74. <el-upload class="avatar-uploader" :action="'http://'+host+'/api/users/uploadphoto'" :show-file-list="false"
  75. :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
  76. <img v-if="imageUrl" :src="imageUrl" class="usersettingavatar">
  77. <img v-else class="usersettingavatar" src="../../assets/img/avatar-default.jpg">
  78. </el-upload>
  79. <div style="font-size:14px;color:#5D6A76;margin-left:55px;margin-bottom:20px;margin-top:10px;">上传头像</div>
  80. </el-col>
  81. </el-row>
  82. </el-card>
  83. </template>
  84. <script>
  85. import {
  86. mapGetters
  87. } from 'vuex'
  88. export default {
  89. name: 'usersetting',
  90. data() {
  91. return {
  92. form: {
  93. CompanyCode: '',
  94. Realname: '',
  95. Address: '',
  96. Manager: '',
  97. Telephone: '',
  98. Mobile: '',
  99. Email: '',
  100. Description: '',
  101. Photo: ''
  102. },
  103. host: '',
  104. imageUrl: '',
  105. rulesform: {
  106. Realname: [{
  107. required: true,
  108. message: '请输入单位名称',
  109. trigger: 'blur'
  110. }]
  111. }
  112. }
  113. },
  114. computed: mapGetters({
  115. authUser: 'authUser'
  116. }),
  117. created() {
  118. // initial data
  119. this.form.CompanyCode = this.authUser.Profile.CompanyCode
  120. this.form.Realname = this.authUser.Profile.Realname
  121. this.form.Address = this.authUser.Profile.Address
  122. this.form.Manager = this.authUser.Profile.Manager
  123. this.form.Telephone = this.authUser.Profile.Telephone
  124. this.form.Mobile = this.authUser.Profile.Mobile
  125. this.form.Email = this.authUser.Profile.Email
  126. this.form.Description = this.authUser.Profile.Description
  127. this.form.Photo = this.authUser.Profile.Photo
  128. this.host = this.authUser.Profile.Host
  129. if (this.form.Photo !== '') {
  130. this.imageUrl = `http://${this.host}${this.form.Photo}`
  131. }
  132. },
  133. methods: {
  134. handleAvatarSuccess(res, file) {
  135. this.form.Photo = res
  136. this.imageUrl = URL.createObjectURL(file.raw)
  137. },
  138. beforeAvatarUpload(file) {
  139. const isJPG = (file.type.indexOf('image/') === 0)
  140. const isLt2M = file.size / 1024 / 1024 < 1
  141. if (!isJPG) {
  142. this.$message.error('上传头像图片只能是 图片 格式!')
  143. return false
  144. }
  145. if (!isLt2M) {
  146. this.$message.error('上传头像图片大小不能超过 1MB!')
  147. return false
  148. }
  149. return true
  150. },
  151. savedata(formName) {
  152. let _this = this
  153. this.$refs[formName].validate((valid) => {
  154. if (valid) {
  155. this.$axios.put('users/membersetting', _this.form)
  156. .then(res => {
  157. // response
  158. if (res.data.code === 0) {
  159. _this.$message({
  160. type: 'success',
  161. message: res.data.message
  162. })
  163. this.$store.commit('SET_Profile', this.form)
  164. } else {
  165. _this.$message({
  166. type: 'warning',
  167. message: res.data.message
  168. })
  169. }
  170. })
  171. .catch(() => {})
  172. }
  173. })
  174. }
  175. }
  176. }
  177. </script>
  178. <style>
  179. .page {
  180. margin: 50px;
  181. padding: 20px 40px;
  182. background-color: #fff;
  183. box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
  184. }
  185. .avatar-uploader .el-upload {
  186. border: 1px dashed #d9d9d9;
  187. border-radius: 6px;
  188. cursor: pointer;
  189. position: relative;
  190. overflow: hidden;
  191. }
  192. .avatar-uploader .el-upload:hover {
  193. border-color: #20a0ff;
  194. }
  195. .avatar-uploader-icon {
  196. font-size: 28px;
  197. color: #8c939d;
  198. width: 178px;
  199. height: 178px;
  200. line-height: 178px;
  201. text-align: center;
  202. }
  203. .usersettingavatar {
  204. width: 178px;
  205. height: 178px;
  206. display: block;
  207. }
  208. </style>