index.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. <?php
  2. use yii\helpers\Url;
  3. use yii\helpers\Html;
  4. ?>
  5. <?= Html::cssFile('@web/css/weui.min.css') ?>
  6. <?= Html::cssFile('@web/css/jquery-weui.min.css') ?>
  7. <?= Html::cssFile('@web/css/base.css?20171122') ?>
  8. <?= Html::cssFile('@web/iconfont/iconfont.css') ?>
  9. <?= Html::cssFile('@web/css/swiper-3.4.2.min.css') ?>
  10. <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
  11. <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=210550b67bddb270e575a1838060f8ec&plugin=AMap.Autocomplete,AMap.PlaceSearch,AMap.Geocoder"></script>
  12. <body>
  13. <div id="container" tabindex="0"></div>
  14. <?php if(!empty($datas)):?>
  15. <a href="<?=Url::toRoute(['notice/index']);?>" class="notice" style="top:3rem;">
  16. <i style="float: left;" class="iconfont icon-xiaoxi"></i>
  17. <p>
  18. <?php $title = empty($datas->information)?'':$datas->information?>
  19. <?=empty($title->title)?'':$title->title?>
  20. </p>
  21. <i class="iconfont icon-gengduo right"></i>
  22. </a>
  23. <?php endif;?>
  24. <a href="javascript:void(0);" class="notice" style="text-align:center;height:1.844rem;line-height:1.844rem;font-size:0.8rem;">
  25. <p>
  26. 点击下面图标看样板房和工地
  27. </p>
  28. </a>
  29. <!--定位按钮-->
  30. <div class="location-icon">
  31. <a href="javascript:;" id="location">
  32. <i class="iconfont icon-dingwei"></i>
  33. </a>
  34. </div>
  35. <!--定位按钮end-->
  36. <!--搜索按钮-->
  37. <div class="search-icon">
  38. <a href="<?=Url::toRoute(['search/index']);?>" class="open-popup" data-target="#full">
  39. <i class="iconfont icon-sousuo"></i>
  40. </a>
  41. </div>
  42. <!--搜索按钮-->
  43. <!--位置按钮-->
  44. <div class="dw-icon">
  45. <a href="<?=Url::toRoute(['position/index']);?>">
  46. <i class="iconfont icon-weizhi"></i>
  47. </a>
  48. </div>
  49. <!--位置按钮-->
  50. <!--换一换按钮-->
  51. <div class="refresh-btn" >
  52. <a href="javascript:void(0);" id="reload" >
  53. <i class="iconfont icon-iconfont08"></i>
  54. 换一换
  55. </a>
  56. </div>
  57. <!--换一换按钮-->
  58. <!--个人中心按钮-->
  59. <div class="user-icon">
  60. <a href="<?=Url::toRoute(['user/index']);?>">
  61. <i class="iconfont icon-wode"></i>
  62. </a>
  63. </div>
  64. <!--个人中心按钮-->
  65. <!--红包按钮-->
  66. <div class="hb-icon">
  67. <a href="<?=Url::toRoute(['redactivity/redlog']);?>">
  68. <i class="iconfont icon-hongbao"></i>
  69. </a>
  70. </div>
  71. <!--红包弹出层-->
  72. <div class="redbag">
  73. <div class="title">
  74. <a href="#" class="close"><i class="iconfont icon-guanbi"></i></a>
  75. <h2> <span>元</span></h2>
  76. <p>预约后可领取该红包</p>
  77. </div>
  78. <div class="rb-info">
  79. <i class="iconfont icon-fangzi"></i>
  80. <h2><a href="#"></a></h2>
  81. <p class="add"></p>
  82. <a href="javascript:;" class="yy-btn">立即预约</a>
  83. <p><a href="<?=Url::toRoute(['redactivity/redlog']);?>" class="notes">我的红包记录</a></p>
  84. </div>
  85. <input type="hidden" id="building_id" />
  86. </div>
  87. <div class="p_bg"></div>
  88. <?= Html::jsFile('@web/js/jquery.min.js'); ?>
  89. <?= Html::jsFile('@web/js/jquery-weui.min.js'); ?>
  90. <script src="//webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
  91. <script type="text/javascript">
  92. var tel = '<?=empty($usertel)?'':$usertel?>';
  93. //基本地图加载
  94. var map ="";
  95. var lnglatXY = new Array();
  96. var page = 1;
  97. var p = 1;
  98. AMapUI.loadUI(['misc/PositionPicker'], function(PositionPicker) {
  99. <?php if(!empty($city)){ ?>
  100. map = new AMap.Map("container", {
  101. resizeEnable: true,
  102. //center: [res.longitude,res.latitude],//地图中心点
  103. zoom: 13 //地图显示的缩放级别
  104. });
  105. var MSearch;
  106. function placeSearch() { //POI搜索,关键字查询
  107. var key_1 = "<?= $city ?>";
  108. map.plugin(["AMap.PlaceSearch"], function() { //构造地点查询类
  109. MSearch = new AMap.PlaceSearch({
  110. pageSize:10,
  111. pageIndex:1,
  112. city:"021" //城市
  113. });
  114. AMap.event.addListener(MSearch, "complete", function(data){
  115. var poiArr = data.poiList.pois;
  116. var lngX = poiArr[0].location.getLng();
  117. var latY = poiArr[0].location.getLat();
  118. map.setCenter(new AMap.LngLat(lngX, latY));
  119. // AMap.Marker({
  120. // map:map,
  121. // iconStyle: { //自定义外观
  122. // url: '../images/pointer.png',
  123. // ancher: [24, 40],
  124. // size: [28, 48]
  125. // }
  126. // });
  127. querybuilding(latY,lngX);
  128. });//返回地点查询结果
  129. MSearch.search(key_1); //关键字查询
  130. });
  131. }
  132. placeSearch();
  133. <?php }else{ ?>
  134. wx.config({
  135. debug: false,
  136. appId: '<?= $signPackage['appId']; ?>', // 必填,公众号的唯一标识
  137. timestamp:<?= $signPackage['timestamp']; ?>, // 必填,生成签名的
  138. nonceStr: '<?= $signPackage['nonceStr']; ?>', // 必填,生成签名的
  139. signature: '<?= $signPackage['signature'];?>',
  140. jsApiList: ['getLocation','checkJsApi']
  141. });
  142. wx.ready(function() {
  143. wx.getLocation({
  144. type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  145. success: function (res) {
  146. var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
  147. var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
  148. var speed = res.speed; // 速度,以米/每秒计
  149. var accuracy = res.accuracy; // 位置精度
  150. lnglatXY = [res.longitude,res.latitude];
  151. map = new AMap.Map("container", {
  152. resizeEnable: true,
  153. center: [longitude,latitude],//地图中心点
  154. zoom: 13 //地图显示的缩放级别
  155. });
  156. position();
  157. }
  158. });
  159. });
  160. <?php } ?>
  161. function position(){
  162. // 拖拽选址标注
  163. var positionPicker = new PositionPicker({
  164. mode: 'dragMap',
  165. map: map,
  166. iconStyle: { //自定义外观
  167. url: '../images/pointer.png',
  168. ancher: [24, 40],
  169. size: [28, 48]
  170. }
  171. });
  172. // 开始拖拽
  173. positionPicker.start();
  174. // 拖拽结束后,如果获取成功,将触发success事件,否则将触发fail事件。
  175. positionPicker.on('success', function(positionResult) {
  176. page =1;
  177. if(markers.length>0) {
  178. map.remove(markers);
  179. }
  180. querybuilding(positionResult.position.lat,positionResult.position.lng);
  181. });
  182. positionPicker.on('fail', function(positionResult) {
  183. //$.alert('定位失败');
  184. });
  185. }
  186. function querybuilding(lat,lng)
  187. {
  188. $.ajax({
  189. url: '<?=Url::toRoute(['site/querybuilding'])?>',
  190. type: 'POST',
  191. dataType:"json",
  192. data: {latitude:lat,longitude:lng,'_csrf-backend':'<?=Yii::$app->request->csrfToken;?>'},
  193. success: function (resultdata) {
  194. if(resultdata.error==0){
  195. if(resultdata.count>0)
  196. {
  197. p = Math.ceil(resultdata.count/<?= \frontend\controllers\SiteController::$pagenum ?>);
  198. }
  199. defaultdata(resultdata.msg);
  200. }
  201. }
  202. });
  203. }
  204. var markers =[];
  205. function defaultdata(data)
  206. {
  207. var lnglats = [];
  208. markers =[];
  209. for(var i in data)
  210. {
  211. var type = data[i]['type'];
  212. if(type==1){
  213. type='gd';
  214. icon = gd_icon;
  215. }else if(type==2){
  216. type = 'ybf';
  217. icon = ybf_icon;
  218. }else if(type ==3)
  219. {
  220. type ='hb';
  221. icon = hb_icon;
  222. }
  223. lnglats[i] = {
  224. position:[data[i]['longitude'],data[i]['latitude']],
  225. id:type,
  226. name:'<?=Url::toRoute(['building/detail']);?>?id='+data[i]['id'],
  227. icon: icon,
  228. compound:data[i]['title'],
  229. address:data[i]['address'],
  230. building_id :data[i]['id'],
  231. building_type :data[i]['type'],
  232. building_opening_begin :data[i]['opening_begin'],
  233. building_opening_end :data[i]['opening_end']
  234. }
  235. }
  236. for(var i= 0;i<lnglats.length;i++){
  237. var marker=new AMap.Marker({
  238. position:lnglats[i].position, //采用默认样式,无需自定义
  239. map:map,
  240. icon:lnglats[i].icon
  241. });
  242. markers.push(marker);
  243. content = [];
  244. popup = [];
  245. info_c = [];
  246. info_a = [];
  247. building_id = [];
  248. building_type = [];
  249. building_opening_begin = [];
  250. building_opening_end = [];
  251. //info_s = [];
  252. content.push(lnglats[i].name);
  253. popup.push(lnglats[i].id);
  254. info_c.push(lnglats[i].compound);
  255. info_a.push(lnglats[i].address);
  256. building_id.push(lnglats[i].building_id);
  257. building_type.push(lnglats[i].building_type);
  258. building_opening_begin.push(lnglats[i].building_opening_begin);
  259. building_opening_end.push(lnglats[i].building_opening_end);
  260. //info_s.push(lnglats[i].sum);
  261. marker.content = content;
  262. marker.popup = popup;
  263. marker.info_c = info_c;
  264. marker.info_a = info_a;
  265. marker.building_id = building_id;
  266. marker.building_type = building_type;
  267. marker.building_opening_begin = building_opening_begin;
  268. marker.building_opening_end = building_opening_end;
  269. //marker.info_s = info_s;
  270. marker.on('click', markerClick);
  271. }
  272. }
  273. //解析定位错误信息
  274. function onError(data) {
  275. $.alert('定位失败');
  276. }
  277. //安装位置标记
  278. var gd_icon = new AMap.Icon({ //自定义图标
  279. size: new AMap.Size(50, 50), //图标大小
  280. image: "../images/gd-icon.png"
  281. });
  282. var ybf_icon = new AMap.Icon({
  283. size: new AMap.Size(50, 50),
  284. image: "../images/ybf-icon.png"
  285. });
  286. var hb_icon = new AMap.Icon({
  287. size: new AMap.Size(50, 50),
  288. image: "../images/hb-icon.png"
  289. });
  290. // 信息窗口
  291. var build_id = '';
  292. var build_type = '';
  293. var build_opening_begin = '';
  294. var build_opening_end = '';
  295. function markerClick(e){
  296. //标记点击事件
  297. var name =e.target.content; //跳转地址
  298. var compound =e.target.info_c; //小区名称
  299. var address =e.target.info_a; //小区地址
  300. var sum =0; //红包金额
  301. var building_id = e.target.building_id ;
  302. build_id = e.target.building_id;
  303. build_type = e.target.building_type;
  304. build_opening_begin = e.target.building_opening_begin;
  305. build_opening_end = e.target.building_opening_end;
  306. if(e.target.popup == "hb"){
  307. if(tel=='') {
  308. window.location.href = "<?=Url::toRoute(['user/usertel', 'id' => 'index']);?>";
  309. return false;
  310. }
  311. $.ajax({
  312. url: '<?=Url::toRoute(['site/getred'])?>',
  313. type: 'POST',
  314. dataType:"json",
  315. data: {building_id:building_id[0],'_csrf-backend':'<?=Yii::$app->request->csrfToken;?>'},
  316. success: function (data) {
  317. console.log(data);
  318. if(data.error==0)
  319. {
  320. $('.redbag,.p_bg').show();
  321. $('.redbag .title h2,.rb-info h2,.rb-info p.add').empty();
  322. $('.redbag .title h2').html(data.amount +' <span>元</span>');
  323. $('.rb-info h2').html('<a href="'+ name +'">' + compound +'</a>');
  324. $('.rb-info p.add').html(address);
  325. $('#buiding').val(building_id[0]);
  326. }else if(data.error==1)
  327. {
  328. location.href= name ;
  329. }
  330. }
  331. }
  332. );
  333. }
  334. else{
  335. location.href= name ;
  336. }
  337. };
  338. $('.redbag .close').click(function () {
  339. $('.redbag,.p_bg').hide();
  340. });
  341. var display =false;
  342. $('.redbag .yy-btn').click(function () {
  343. if(display==false) {
  344. var time = '';
  345. var shijianchuo = new Date(build_opening_begin*1000);
  346. var y = shijianchuo.getFullYear();
  347. var m = shijianchuo.getMonth()+1;
  348. var d = shijianchuo.getDate();
  349. var begin = y+"-"+m+"-"+d;
  350. var shijianchuo1 = new Date(build_opening_end*1000);
  351. var y1 = shijianchuo1.getFullYear();
  352. var m1 = shijianchuo1.getMonth()+1;
  353. var d1 = shijianchuo1.getDate();
  354. var end = y1+"-"+m1+"-"+d1;
  355. $('body').append('<div class="date"><input class="weui-input" id="time-inline" type="text" value="" readonly><div class="title">选择时间<span>(可预约时间:'+begin+'到'+end+')</span></div><div id="time-container"></div><div class="date-btn"><a href="#" class="close-date">取消</a><a id="subscribe"href="javascript:;" >马上预约</a></div></div>');
  356. $("#time-inline").datetimePicker({
  357. container: '#time-container',
  358. onChange: function (picker, values, displayValues) {
  359. var a = values;
  360. var a1 = a.slice(0, 3);
  361. var a2 = a.slice(3, 5);
  362. var date = a1.join("/")+' '+a2.join(":");
  363. time = (new Date(date)).getTime()/1000;
  364. }
  365. });
  366. $('.date #subscribe').click(function(){
  367. var pid = build_id[0];
  368. if(tel==''){
  369. window.location.href = "<?=Url::toRoute(['user/usertel','id'=>'index']);?>";
  370. }else{
  371. var nowTime = <?=time()?>;
  372. var type = build_type[0];
  373. var begin = '';
  374. if(build_opening_begin==''){
  375. var begin = nowTime;
  376. }else{
  377. var begin = build_opening_begin
  378. }
  379. var end = build_opening_end;
  380. if(time<nowTime-60){
  381. alert('请选择当前时间后面的时间');
  382. $('.date,.p_bg').remove();
  383. return false;
  384. }
  385. if(time<begin||time>end){
  386. alert('请选择可预约时间内');
  387. $('.date,.p_bg').remove();
  388. return false;
  389. }
  390. var lock = true;
  391. if(lock){
  392. $.ajax({
  393. url: '<?=Url::toRoute(['building/appointment'])?>',
  394. type: 'POST',
  395. dataType:"json",
  396. data: {pid:pid,type:type,time:time, '_csrf-frontend': '<?=Yii::$app->request->getCsrfToken();?>'},
  397. success: function (data) {
  398. if(data.sign==0){
  399. alert(data.msg);
  400. }else if(data.sign==1){
  401. alert('预约成功');
  402. location.href='<?=Url::toRoute(['user/appointment'])?>';
  403. //$('.date,.p_bg').remove();
  404. }
  405. }
  406. });
  407. }
  408. }
  409. });
  410. $('.date .close-date').click(function () {
  411. $('.date').hide();
  412. });
  413. display =true;
  414. }else{
  415. $('.date').show();
  416. }
  417. });
  418. $("#reload").on('click',function () {
  419. page ++;
  420. if(page>p)
  421. {
  422. if(page==2)
  423. {
  424. return false;
  425. }
  426. page = 1;
  427. }
  428. $.ajax({
  429. url: '<?=Url::toRoute(['site/querybuilding'])?>',
  430. type: 'POST',
  431. dataType:"json",
  432. data: {latitude:lnglatXY[1],longitude:lnglatXY[0],page:page,'_csrf-backend':'<?=Yii::$app->request->csrfToken;?>'},
  433. success: function (resultdata) {
  434. if(resultdata.error==0){
  435. map.remove(markers);
  436. defaultdata(resultdata.msg);
  437. }else if(resultdata.error==1){
  438. $.alert('定位失败');
  439. }
  440. }
  441. });
  442. });
  443. // 定位按钮
  444. function locationNew() {
  445. var location = document.getElementById('location');
  446. AMap.event.addDomListener(location, 'click', function() {
  447. map.panTo(lnglatXY);
  448. });
  449. }
  450. locationNew();
  451. });
  452. // map.setFitView();
  453. </script>
  454. <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
  455. </body>
  456. </html>