base.blade.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. @extends('theme::layout.public')
  2. @section('seo_title')个人资料 - {{ Setting()->get('website_name') }}@endsection
  3. @section('css')
  4. <link href="{{ asset('/static/js/bootstrap-datepicker/css/bootstrap-datepicker3.min.css')}}" rel="stylesheet" />
  5. <link href="{{ asset('/static/js/webuploader/webuploader.css')}}" rel="stylesheet" />
  6. <link href="{{ asset('/static/js/cropper/cropper.min.css')}}" rel="stylesheet" />
  7. @endsection
  8. @section('content')
  9. <div class="row">
  10. <!--左侧菜单-->
  11. @include('theme::layout.profile_menu')
  12. <div id="main" class="settings col-md-10 form-horizontal main">
  13. <h2 class="h3 post-title">个人资料</h2>
  14. <div class="row mt-30">
  15. <div class="col-md-3 col-md-push-9 text-center">
  16. <img class="avatar-128" id="user_avatar_image" src="{{ Auth()->user()->qrcode }}" alt="头像">
  17. {{-- {{ Auth()->user()->qrcode }}--}}
  18. <div class="wu-example mt-10">
  19. <div class="change-avatar">
  20. <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#avatar_modal">修改头像</button>
  21. <p class="text-muted mt-10">从电脑中选择图片上传, 图像大小不要超过 2 MB</p>
  22. <div class="modal fade" id="avatar_modal" tabindex="-1" role="dialog" aria-labelledby="avatar_model_label">
  23. <div class="modal-dialog">
  24. <div class="modal-content">
  25. <div class="modal-header">
  26. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  27. <h4 class="modal-title" id="avatar_model_label">修改头像</h4>
  28. </div>
  29. <div class="modal-body">
  30. <div class="row">
  31. <div class="col-xs-6 text-center">
  32. <div id="avatar_origin" class="avatar-container">
  33. <img class="avatar-origin" src="{{ Auth()->user()->qrcode }}">
  34. </div>
  35. <!--用来存放文件信息-->
  36. <div id="uploader">
  37. <div id="fileList" class="uploader-list"></div>
  38. <div id="filePicker" class="picker-container">选择图片</div>
  39. </div>
  40. </div>
  41. <div class="col-xs-6 text-center mt-5">
  42. <div class="preview-container img-preview">
  43. </div>
  44. <button id="avatar_btn" type="button" class="btn btn-primary mt-20">保存头像</button>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="col-md-8 col-md-pull-3">
  55. <form name="baseForm" id="base_form" action="{{ route('auth.profile.base')}}" enctype="multipart/form-data" method="POST">
  56. {{ csrf_field() }}
  57. <div class="form-group @if ($errors->first('name')) has-error @endif">
  58. <label for="name" class="required control-label col-sm-3">姓名</label>
  59. <div class="col-sm-9">
  60. <input name="name" type="text" maxlength="32" placeholder="姓名" class="form-control" value="{{ old('name',Auth()->user()->name) }}" />
  61. @if ($errors->first('name'))
  62. <span class="help-block">{{ $errors->first('name') }}</span>
  63. @endif
  64. </div>
  65. </div>
  66. <div class="form-group">
  67. <label class="control-label col-sm-3">性别</label>
  68. <div class="col-sm-9">
  69. <label class="radio-inline"><input name="gender" type="radio" value="1" @if(Auth()->user()->gender==1) checked @endif > 男</label>
  70. <label class="radio-inline"><input name="gender" type="radio" value="2" @if(Auth()->user()->gender==2) checked @endif> 女</label>
  71. <label class="radio-inline"><input name="gender" type="radio" value="0" @if(Auth()->user()->gender==0) checked @endif> 保密</label>
  72. </div>
  73. </div>
  74. <div class="form-group">
  75. <label for="setting-birthday" class="control-label col-sm-3">生日</label>
  76. <div class="col-sm-9">
  77. <input name="birthday" id="birthday" type="text" placeholder="格式 YYYY-MM-DD" value="{{ Auth()->user()->birthday }}" class="form-control">
  78. </div>
  79. </div>
  80. <div class="form-group">
  81. <label for="setting-city" class="control-label col-sm-3">所在城市</label>
  82. <div class="col-sm-4">
  83. <select class="form-control" name="province" id="province">
  84. <option value="0">请选择省份</option>
  85. @foreach($data['provinces'] as $province)
  86. <option value="{{ $province->id }}" @if(Auth()->user()->province == $province->id) selected @endif>{{ $province->name }}</option>
  87. @endforeach
  88. </select>
  89. </div>
  90. <div class="col-sm-5">
  91. <select class="form-control" name="city" id="city">
  92. <option value="0">请选择城市</option>
  93. @foreach($data['cities'] as $city)
  94. <option value="{{ $city->id }}" @if(Auth()->user()->city == $city->id) selected @endif >{{ $city->name }}</option>
  95. @endforeach
  96. </select>
  97. </div>
  98. </div>
  99. <div class="form-group">
  100. <label for="name" class="control-label col-sm-3">身份职业</label>
  101. <div class="col-sm-9">
  102. <input name="title" id="title" type="text" maxlength="32" placeholder="例如:汽车制造 / 产品设计师 / 登山爱好者" class="form-control" value="{{ Auth()->user()->title }}" />
  103. </div>
  104. </div>
  105. <div class="form-group">
  106. <label for="setting-description" class="control-label col-sm-3">自我介绍</label>
  107. <div class="col-sm-9">
  108. <textarea name="description" id="setting-description" class="form-control mono" rows="6">{{ Auth()->user()->description }}</textarea>
  109. </div>
  110. </div>
  111. {{-- <div class="form-group">--}}
  112. {{-- <label for="setting-description" class="control-label col-sm-3">支付二维码</label>--}}
  113. {{-- <div class="col-sm-9">--}}
  114. {{-- <input type="file" name="qrcode"/>--}}
  115. {{-- @if($errors->has('qrcode')) <p class="help-block">{{ $errors->first('qrcode') }}</p> @else <p class="help-block">可上传微信或支付宝的收款二维码图片</p> @endif--}}
  116. {{-- @if(Auth()->user()->qrcode)--}}
  117. {{-- <div style="margin-top: 10px;">--}}
  118. {{-- <img src="{{ route('website.image.show',['image_name'=>Auth()->user()->qrcode]) }}" />--}}
  119. {{-- </div>--}}
  120. {{-- @endif--}}
  121. {{-- </div>--}}
  122. {{-- </div>--}}
  123. <div class="form-action row mb-30">
  124. <div class="col-sm-offset-3 col-sm-9">
  125. <button class="btn btn-xl btn-primary profile-sub" type="submit">提交</button>
  126. </div>
  127. </div>
  128. </form>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. @endsection
  134. @section('script')
  135. <script src="{{ asset('/static/js/bootstrap-datepicker/js/bootstrap-datepicker.js') }}"></script>
  136. <script src="{{ asset('/static/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js') }}"></script>
  137. <script src="{{ asset('/static/js/webuploader/webuploader.min.js') }}"></script>
  138. <script src="{{ asset('/static/js/cropper/cropper.min.js') }}"></script>
  139. <script type="text/javascript">
  140. $(function(){
  141. /*生日日历*/
  142. $("#birthday").datepicker({
  143. format: "yyyy-mm-dd",
  144. language: "zh-CN",
  145. calendarWeeks: true,
  146. autoclose: true
  147. });
  148. /*加载省份城市*/
  149. $("#province").change(function(){
  150. var province_id = $(this).val();
  151. $("#city").load("{{ url('ajax/loadCities') }}/"+province_id);
  152. });
  153. var filePicker = $('#filePicker');
  154. var avatar_origin = $('#avatar_origin img');
  155. var avatar_modal = $('#avatar_modal');
  156. avatar_modal.on('shown.bs.modal', function(e) {
  157. var user_avatar = avatar_origin.attr("src").split("?")[0] + "?" + Math.random();
  158. avatar_origin.attr("src",user_avatar);
  159. avatar_origin.cropper({
  160. aspectRatio: 1/1,
  161. modal: false,
  162. movable: false,
  163. zoomable: false,
  164. preview: ".img-preview",
  165. done: function(data) {
  166. console.log(data);
  167. }
  168. });
  169. var uploader = WebUploader.create({
  170. // 选完文件后,是否自动上传。
  171. auto: true,
  172. // swf文件路径
  173. swf: "{{ asset('/static/js/webuploader/Uploader.swf') }}",
  174. // 文件接收服务端。
  175. server: "{{ route('auth.profile.avatar') }}",
  176. formData: {
  177. _token:'{{ csrf_token() }}'
  178. },
  179. method:'POST',
  180. fileVal:'user_avatar',
  181. // 内部根据当前运行是创建,可能是input元素,也可能是flash.
  182. pick: '#filePicker',
  183. fileSingleSizeLimit: 2 * 1024 * 1024, // 2M
  184. duplicate: true,
  185. // 只允许选择图片文件。
  186. accept: {
  187. title: 'Images',
  188. extensions: 'gif,jpg,jpeg,png',
  189. mimeTypes: 'image/*'
  190. },
  191. // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
  192. resize: false
  193. });
  194. var webuploader_pick = $('.webuploader-pick');
  195. uploader.on('error', function(msg) {
  196. if (msg == 'F_EXCEED_SIZE') {
  197. alert("图片大小不能越过2M");
  198. } else if (msg == 'Q_TYPE_DENIED') {
  199. alert("只支持GIF,JPG,JPEG,PNG图片格式");
  200. } else {
  201. alert(msg);
  202. }
  203. });
  204. // 文件上传过程中创建进度条实时显示。
  205. uploader.on('uploadProgress', function(file, percentage) {
  206. webuploader_pick.text(parseInt(percentage * 100) + '%');
  207. });
  208. uploader.on('uploadSuccess', function(file, response) {
  209. var user_avatar = avatar_origin.attr("src").split("?")[0] + "?" + Math.random();
  210. avatar_origin.attr("src",user_avatar);
  211. avatar_origin.cropper('destroy');
  212. avatar_origin.cropper({
  213. aspectRatio: 1/1,
  214. modal: false,
  215. movable: false,
  216. zoomable: false,
  217. preview: ".img-preview",
  218. done: function(data) {
  219. console.log(data);
  220. }
  221. });
  222. $('#uploader').addClass('webuploader-element-invisible');
  223. console.log(response);
  224. });
  225. uploader.on('uploadError', function(file, reason) {
  226. alert('上传出错,错误原因:' + reason);
  227. webuploader_pick.text('选择图片');
  228. });
  229. });
  230. avatar_modal.on('hidden.bs.modal', function(e) {
  231. $('#uploader').removeClass('webuploader-element-invisible');
  232. filePicker.removeClass('webuploader-container');
  233. filePicker.text('选择图片');
  234. avatar_origin.cropper('destroy');
  235. });
  236. $('#avatar_btn').click(function(){
  237. var cropper = avatar_origin.cropper('getData');
  238. $.post("{{ route('auth.profile.avatar') }}", {_token: '{{ csrf_token() }}', x: cropper.x, y: cropper.y, width: cropper.width, height: cropper.height}, function(data){
  239. console.log(data);
  240. if (data.status === 1) {
  241. var user_avatar_image = $('#user_avatar_image');
  242. user_avatar_image.attr("src", user_avatar_image.attr("src").split("?")[0] + "?" + Math.random());
  243. var avatar_middle = $('.avatar-32');
  244. avatar_middle.attr("src", avatar_middle.attr("src").split("?")[0] + "?" + Math.random());
  245. avatar_modal.modal('hide');
  246. }
  247. });
  248. });
  249. });
  250. </script>
  251. @endsection