Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 

177 rindas
8.4 KiB

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>基础资料 - 用户中心 - {$kx.config.sitename}</title>
  6. <link rel="stylesheet" href="{$kx.config.resurl}/template/kxwebno1/css/global.css"/>
  7. <link rel="stylesheet" href="{$kx.config.resurl}/template/kxwebno1/css/style.css"/>
  8. <link rel="stylesheet" href="{$kx.config.resurl}/template/kxwebno1/js/cropper/cropper.min.css"/>
  9. </head>
  10. <body>
  11. <!-- 头部 -->
  12. {include file="/system/header"}
  13. <!-- 内容 -->
  14. <div class="pt-content">
  15. <!-- 面包屑 -->
  16. <div class="pt-crumb">
  17. <img src="{$kx.config.resurl}/template/kxwebno1/images/crumb_icon.png" class="pt-crumb-icon">
  18. <span class="color5">
  19. <a href="{$kx.config.siteurl}">{$kx.config.sitename}</a> > <a href="{link=user.index.index}" class="color5">用户中心</a> > <a href="{link=user.info.index}">基础资料</a>
  20. </span>
  21. </div>
  22. <!-- 一楼 -->
  23. <div class="pt-floor1">
  24. {include file="/system/userleft"}
  25. <!-- 推荐 -->
  26. <div class="relative pt-rank">
  27. <!-- 书架title -->
  28. <div class="pt-rank-head">
  29. <span class="mr10 size16 color2 bold">基础资料</span>
  30. </div>
  31. <div class="pt-info-cont">
  32. <input type="file" id="file_avatar" name="file" style="display: none;" accept="image/*">
  33. <form action="" method="post">
  34. <div class="mb20 pt-info-cont-head">
  35. <input type="hidden" name="avatar" value="{$userinfo.avatar}">
  36. <span class="fl mr40 color8 w80">头像</span>
  37. <span class="mr20 fl pt-info-head-icon"><img src="{$userinfo.avatar}"></span>
  38. <span class="fl cursor color2" onclick="$('#file_avatar').click()">上传头像</span>
  39. </div>
  40. <div class="mb20 pt-info-cont-intro">
  41. <span class="fl mr40 color8 w80">昵称</span>
  42. <input type="text" class="border-c9" name="nickname" value="{$userinfo.nickname}">
  43. <span class="fl color4"></span>
  44. </div>
  45. <div class="mb20 pt-info-cont-intro">
  46. <span class="fl mr40 color8 w80">邮箱</span>
  47. <input type="text" class="border-c9" name="email" value="{$userinfo.email}">
  48. <span class="fl color4"></span>
  49. </div>
  50. <div class="mb20 pt-info-cont-sex">
  51. <span class="fl mr40 color8 w80">性别</span>
  52. <input type="radio" name="sex" value="0" class="mr5" {=$userinfo.sex=='0'?'checked':''}>
  53. <label for="secret" class="mr20">保密</label>
  54. <input type="radio" name="sex" value="1" class="mr5" {=$userinfo.sex=='1'?'checked':''}>
  55. <label for="male" class="mr20">男</label>
  56. <input type="radio" name="sex" value="2" class="mr5" {=$userinfo.sex=='2'?'checked':''}>
  57. <label for="female">女</label>
  58. </div>
  59. <div class="pt-info-cont-intro">
  60. <span class="fl mr40 color8 w80">简介</span>
  61. <textarea class="fl" name="intro">{$userinfo.intro}</textarea>
  62. <span class="fl color4">可以进行简短的自我描述,不超过100字</span>
  63. </div>
  64. <button type="submit" class="fl cursor pt-info-cont-save mb10">提交保存</button>
  65. </form>
  66. </div>
  67. </div>
  68. </div>
  69. <!-- 广告位 -->
  70. </div>
  71. <!-- 底部版权-->
  72. {include file="/system/footer"}
  73. <script src="{$kx.config.resurl}/template/kxwebno1/js/cropper/cropper.min.js"></script>
  74. <script>
  75. $('#file_avatar').change(function () {
  76. var cropper;
  77. var files = this.files;
  78. done = function (url) {
  79. layer.open({
  80. type: 1,
  81. area: ['600px', '500px'],
  82. resize: false,
  83. scrollbar: false,
  84. content: '<img src="' + url + '">',
  85. btn:['确认'],
  86. success: function (layero, index) {
  87. cropper = new Cropper(layero.find('img')[0], {
  88. aspectRatio: 1
  89. });
  90. },
  91. end: function () {
  92. cropper.destroy();
  93. },
  94. yes: function(index, layero){
  95. if (cropper){
  96. var loading = null;
  97. canvas = cropper.getCroppedCanvas({
  98. width: 160,
  99. height: 160,
  100. });
  101. canvas.toBlob(function(blob){
  102. var formData = new FormData();
  103. formData.append('file', blob, 'avatar.jpg');
  104. $.ajax({
  105. url: '{link=user.info.uploadAvatar}',
  106. method: 'POST',
  107. data: formData,
  108. dataType: 'json',
  109. processData: false,
  110. contentType: false,
  111. beforeSend: function(){
  112. if(loading === null){
  113. loading = layer.load(1, {shade: [0.1, '#000']});
  114. }
  115. },
  116. xhr: function () {
  117. var xhr = new XMLHttpRequest();
  118. xhr.upload.onprogress = function (e) {
  119. var percent = '0';
  120. var percentage = '0%';
  121. if (e.lengthComputable) {
  122. percent = Math.round((e.loaded / e.total) * 100);
  123. percentage = percent + '%';
  124. console.log(percentage);
  125. }
  126. };
  127. return xhr;
  128. },
  129. success: function (res) {
  130. console.log(res);
  131. if(res.code){
  132. layer.msg(res.msg);
  133. }else{
  134. $('.pt-info-cont-head input').val(res.data.src);
  135. $('.pt-info-cont-head img').attr('src',res.data.src);
  136. }
  137. },
  138. error: function () {
  139. layer.msg('上传失败,请刷新页面后重试!');
  140. },
  141. complete: function () {
  142. if(loading !== null){
  143. layer.close(loading);
  144. loading = null;
  145. }
  146. },
  147. });
  148. });
  149. }
  150. layer.close(index);
  151. }
  152. });
  153. };
  154. if (files && files.length > 0) {
  155. file = files[0];
  156. if (URL) {
  157. done(URL.createObjectURL(file));
  158. } else if (FileReader) {
  159. reader = new FileReader();
  160. reader.onload = function (e) {
  161. done(reader.result);
  162. };
  163. reader.readAsDataURL(file);
  164. }
  165. }
  166. });
  167. </script>
  168. <!-- js-->
  169. <script src="{$kx.config.resurl}/template/kxwebno1/js/rankdetail.js"></script>
  170. </body>
  171. </html>