Browse Source

Merge branch 'qs_local_master_9_27'

master
lanzu_qinsheng 5 years ago
parent
commit
7f3506bd66
  1. 6
      app/Admin/Common/LinkUrl.php
  2. 14
      app/Admin/Common/Map.php
  3. 23
      app/Admin/Controllers/ImsCjdcOrderMainController.php
  4. 156
      app/Admin/Extensions/MyDetailPage.php
  5. 1
      app/Admin/routes.php
  6. 6
      app/Http/Controllers/TestController.php
  7. 2
      app/Models/ImsCjdcOrder.php
  8. 5
      app/Models/ImsCjdcOrderMain.php
  9. 17
      public/css/detail.css
  10. 1
      public/js/element.js
  11. BIN
      public/uploads/map/56.png
  12. BIN
      public/uploads/map/60.png
  13. BIN
      public/uploads/map/horseman.gif
  14. BIN
      public/uploads/map/horseman.png
  15. BIN
      public/uploads/map/horseman1.png
  16. 10
      resources/views/orderdetail.php
  17. 1
      routes/web.php

6
app/Admin/Common/LinkUrl.php

@ -10,7 +10,11 @@ class LinkUrl
* js * js
*/ */
const VUE_JS = 'https://cdn.jsdelivr.net/npm/vue'; const VUE_JS = 'https://cdn.jsdelivr.net/npm/vue';
const ELEMENT_UI_JS = 'https://unpkg.com/element-ui/lib/index.js';
//const ELEMENT_UI_JS = 'https://unpkg.com/element-ui/lib/index.js';
const ELEMENT_UI_JS = 'js/element.js';
const API_GL_JS = 'https://map.qq.com/api/gljs?v=1.exp&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS';
/** /**

14
app/Admin/Common/Map.php

@ -0,0 +1,14 @@
<?php
namespace App\Admin\Common;
class Map
{
public static function routeInfo($m_lat,$m_lng,$u_lat,$u_lng,$type="bicycling")
{
$result = file_get_contents("https://apis.map.qq.com/ws/direction/v1/{$type}/?from={$m_lat},{$m_lng}&to={$u_lat},{$u_lng}&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS");
return $result;
}
}

23
app/Admin/Controllers/ImsCjdcOrderMainController.php

@ -4,6 +4,7 @@ namespace App\Admin\Controllers;
use App\Admin\Actions\Tools\ShowOrderStateHandle; use App\Admin\Actions\Tools\ShowOrderStateHandle;
use App\Admin\Common\Auth; use App\Admin\Common\Auth;
use App\Admin\Common\Map;
use App\Admin\Common\Rpc; use App\Admin\Common\Rpc;
use App\Admin\Extensions\CheckRow; use App\Admin\Extensions\CheckRow;
use App\Admin\Extensions\MyDetailPage; use App\Admin\Extensions\MyDetailPage;
@ -46,8 +47,6 @@ class ImsCjdcOrderMainController extends AdminController
$grid->tools(new ShowOrderStateHandle(8)); $grid->tools(new ShowOrderStateHandle(8));
$grid->tools(new ShowOrderStateHandle()); $grid->tools(new ShowOrderStateHandle());
$grid->paginate(10);//每页展示数据10条 $grid->paginate(10);//每页展示数据10条
//$grid->id;
//$grid->user_id('用户信息');
if (!(Admin::user()->isRole('market_service'))){ if (!(Admin::user()->isRole('market_service'))){
$marketId = \Request::get('market_id'); $marketId = \Request::get('market_id');
if ($marketId){ if ($marketId){
@ -78,7 +77,6 @@ class ImsCjdcOrderMainController extends AdminController
return date('Y-m-d H:i:s',$time); return date('Y-m-d H:i:s',$time);
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) use ($grid) { $grid->actions(function (Grid\Displayers\Actions $actions) use ($grid) {
$state = $actions->row->state; $state = $actions->row->state;
$lastUrl = isset($_SERVER['QUERY_STRING'])?base64_encode($_SERVER['QUERY_STRING']):''; $lastUrl = isset($_SERVER['QUERY_STRING'])?base64_encode($_SERVER['QUERY_STRING']):'';
$actions->append(new OrderDetail($actions->row->id, $grid->model()->getCurrentPage(),$lastUrl, '<div type="button" class="btn btn-outline-primary btn-sm">详情</div>')); $actions->append(new OrderDetail($actions->row->id, $grid->model()->getCurrentPage(),$lastUrl, '<div type="button" class="btn btn-outline-primary btn-sm">详情</div>'));
@ -197,5 +195,24 @@ class ImsCjdcOrderMainController extends AdminController
return json_encode($result['result']); return json_encode($result['result']);
} }
/**
* 地图路线规划
* @param $m_lat
* @param $m_lng
* @param $u_lat
* @param $u_lng
* @param $type
* @return false|string
*/
public function mapRoute()
{
$params = request()->input();
$m_lat = $params['m_lat'];
$m_lng = $params['m_lng'];
$u_lat = $params['u_lat'];
$u_lng = $params['u_lng'];
$type = $params['type'];
return Map::routeInfo($m_lat,$m_lng,$u_lat,$u_lng,$type);
}
} }

156
app/Admin/Extensions/MyDetailPage.php

@ -15,7 +15,7 @@ use Endroid\QrCode\Exceptions\DataDoesntExistsException;
class MyDetailPage extends LazyRenderable class MyDetailPage extends LazyRenderable
{ {
protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS];
protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS, LinkUrl::API_GL_JS];
protected static $css = [LinkUrl::DETAIL_CSS, LinkUrl::ELEMENT_UI_CSS]; protected static $css = [LinkUrl::DETAIL_CSS, LinkUrl::ELEMENT_UI_CSS];
@ -54,6 +54,12 @@ class MyDetailPage extends LazyRenderable
refuse_refund_note: "{$order['refuse_refund_note']}", refuse_refund_note: "{$order['refuse_refund_note']}",
total_refund_note: "{$order['total_refund_note']}", total_refund_note: "{$order['total_refund_note']}",
address: "{$order['address']}", address: "{$order['address']}",
market_lat:"{$order['market_lat']}",
//market_lat:"22.851115",
market_lng:"{$order['market_lng']}",
//market_lng:"108.346041",
user_lat:"{$order['lat']}",
user_lng:"{$order['lng']}",
note: "{$order['note']}", note: "{$order['note']}",
money: "{$order['money']}", money: "{$order['money']}",
total_money: "{$order['total_money']}", total_money: "{$order['total_money']}",
@ -73,7 +79,11 @@ class MyDetailPage extends LazyRenderable
order_child_id:null, order_child_id:null,
show_refund_2:true, show_refund_2:true,
show_refund_3:false, show_refund_3:false,
path:"{$path}"
path:"{$path}",
show_map:false,
close_map:true,
is_show:true,
map:""
}, },
methods: { methods: {
refundNote(name,order_goods_id,order_child_id) { refundNote(name,order_goods_id,order_child_id) {
@ -124,6 +134,148 @@ class MyDetailPage extends LazyRenderable
}); });
}).catch(() => { }).catch(() => {
}); });
},
showMap() {
this.is_show=true;
if (!this.show_map){
this.show_map = true;
this.close_map =false;
this.initMap()
}
},
closeMap() {
this.is_show=false;
this.show_map = false;
this.close_map =true;
},
change2D() {
this.map.setViewMode('2D');
},
change3D() {
this.map.setViewMode('3D');
this.map.setPitch(70);
},
initMap() {
var center = new TMap.LatLng(this.market_lat, this.market_lng);
//初始化地图
this.map = new TMap.Map("container", {rotation: 20,//设置地图旋转角度
pitch:30, //设置俯仰角度(0~45)
zoom:12,//设置地图缩放级别
center: center//设置地图中心点坐标
});
that = this;
$.ajax({
url: "map_route",
type: "get",
contentType: "text/html; charset=utf-8",
dataType: "json",
data: {
m_lat:that.market_lat,
m_lng:that.market_lng,
u_lat:that.user_lat,
u_lng:that.user_lng,
type:"bicycling"
},
success: function (res) {
if (res.status==0){
that.cb(res);
}
},
error: function (xhr, err) {
console.log("错误", err)
}
});
},
//定义请求回调函数,在此拿到计算得到的路线,并进行绘制
cb(ret) {
var coords = ret.result.routes[0].polyline, pl = [];
//坐标解压(返回的点串坐标,通过前向差分进行压缩)
var kr = 1000000;
for (var i = 2; i < coords.length; i++) {
coords[i] = Number(coords[i - 2]) + Number(coords[i]) / kr;
}
//将解压后的坐标放入点串数组pl中
for (var i = 0; i < coords.length; i += 2) {
pl.push(new TMap.LatLng(coords[i], coords[i+1]));
}
this.display_polyline(pl)//显示路线
//标记起终点marker
var marker = new TMap.MultiMarker({
id: 'marker-layer',
map: this.map,
styles: {
"start": new TMap.MarkerStyle({
"width": 25,
"height": 35,
"anchor": { x: 16, y: 32 },
"src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/start.png'
}),
"end": new TMap.MarkerStyle({
"width": 25,
"height": 35,
"anchor": { x: 16, y: 32 },
"src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/end.png'
}),
"marker": new TMap.MarkerStyle({
"width": 45,
"height": 52,
"anchor": { x: 16, y: 32 },
"src": "../uploads/map/561.png"
})
},
geometries: [{
"id": 'start',
"styleId": 'start',
"position": new TMap.LatLng(that.market_lat,that.market_lng)
}, {
"id": 'end',
"styleId": 'end',
"position": new TMap.LatLng(that.user_lat,that.user_lng)
},{ //点标注数据数组
"id": "horseman",
"styleId": "marker",
"position": new TMap.LatLng(22.805566,108.412079),
"properties": {
"title": "marker"
}
}]
});
},
display_polyline(pl){
//创建 MultiPolyline显示折线
var polylineLayer = new TMap.MultiPolyline({
id: 'polyline-layer', //图层唯一标识
map: this.map,//绘制到目标地图
//折线样式定义
styles: {
'style_blue': new TMap.PolylineStyle({
'color': '#3777FF', //线填充色
'width': 8, //折线宽度
'borderWidth': 5, //边线宽度
'borderColor': '#FFF', //边线颜色
'lineCap': 'round', //线端头方式
})
},
//折线数据定义
geometries: [
{
'id': 'pl_1',//折线唯一标识,删除时使用
'styleId': 'style_blue',//绑定样式名
'paths': pl
}
]
});
},
mounted: function () {
} }
} }
}); });

1
app/Admin/routes.php

@ -69,6 +69,7 @@ Route::group([
$router->resource('/order', 'ImsCjdcOrderMainController'); $router->resource('/order', 'ImsCjdcOrderMainController');
$router->any('/detail', 'ImsCjdcOrderMainController@orderDetail'); $router->any('/detail', 'ImsCjdcOrderMainController@orderDetail');
$router->any('/order_goods_refund', 'ImsCjdcOrderMainController@orderGoodsRefund'); $router->any('/order_goods_refund', 'ImsCjdcOrderMainController@orderGoodsRefund');
$router->any('/map_route', 'ImsCjdcOrderMainController@mapRoute');
$router->any('ops/files', 'v3\FileController@handle'); $router->any('ops/files', 'v3\FileController@handle');

6
app/Http/Controllers/TestController.php

@ -42,4 +42,10 @@ class TestController extends BaseController
} }
return $response->getBody()->getContents(); return $response->getBody()->getContents();
} }
public function testMap()
{
$result = file_get_contents("https://apis.map.qq.com/ws/direction/v1/bicycling/?from=39.984042,116.307535&to=39.980869,116.325238&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS");
return $result;
}
} }

2
app/Models/ImsCjdcOrder.php

@ -35,7 +35,7 @@ class ImsCjdcOrder extends Model
$show_refund = []; $show_refund = [];
foreach ($orders as &$or) { foreach ($orders as &$or) {
if (substr($or['store']['logo'], 0, 4) != 'http') { if (substr($or['store']['logo'], 0, 4) != 'http') {
$or['store']['logo'] = env('IMG_HOST') . '/' . $or['store']['logo'];
$or['store']['logo'] = env('OSS_IMG_HOST') . '/' . $or['store']['logo'].'?thumbnail_28';
} }
$or['goods'] = LanzuOrderGoods::where('order_id', $or['id'])->get()->toArray(); $or['goods'] = LanzuOrderGoods::where('order_id', $or['id'])->get()->toArray();
foreach ($or['goods'] as $goods){ foreach ($or['goods'] as $goods){

5
app/Models/ImsCjdcOrderMain.php

@ -99,8 +99,11 @@ class ImsCjdcOrderMain extends Model
// 获取市场 // 获取市场
$marketId = $order['market_id']?$order['market_id']:0; $marketId = $order['market_id']?$order['market_id']:0;
$market = MarketModel::getMarketInfo($marketId,'name');
$market = MarketModel::getMarketInfo($marketId,['name','lat','lng']);
$order['market_name'] = $market?$market['name']:''; $order['market_name'] = $market?$market['name']:'';
$order['market_lat'] = $market?$market['lat']:'';
$order['market_lng'] = $market?$market['lng']:'';
//获取市场经纬度 //获取市场经纬度
//$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray(); //$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray();

17
public/css/detail.css

@ -51,3 +51,20 @@
float: left; float: left;
font-size: 1.4rem; font-size: 1.4rem;
} }
#container {
width: 100%;
height: 100%;
}
input {
position: absolute;
top: 30px;
z-index: 9999;
}
#btn-2d {
left: 20px;
}
#btn-3d {
left: 80px;
}

1
public/js/element.js
File diff suppressed because it is too large
View File

BIN
public/uploads/map/56.png

After

Width: 56  |  Height: 62  |  Size: 3.7 KiB

BIN
public/uploads/map/60.png

After

Width: 60  |  Height: 50  |  Size: 4.0 KiB

BIN
public/uploads/map/horseman.gif

After

Width: 397  |  Height: 397  |  Size: 77 KiB

BIN
public/uploads/map/horseman.png

After

Width: 35  |  Height: 25  |  Size: 2.7 KiB

BIN
public/uploads/map/horseman1.png

After

Width: 65  |  Height: 50  |  Size: 2.0 KiB

10
resources/views/orderdetail.php

@ -1,4 +1,12 @@
<div id="detail"> <div id="detail">
<div v-if="shipping_type_num != 3">
<button class="btn btn-outline-primary btn-sm" @click="showMap()" v-show="close_map" >查看路线</button>
<button class="btn btn-outline-primary btn-sm" @click="closeMap()" style="margin-left: 0" v-show="show_map" >关闭地图</button>
<button class="btn btn-outline-primary btn-sm" id="btn-2d" @click="change2D()" v-show="show_map" style="margin-left: 0">切换2D</button>
<button class="btn btn-outline-primary btn-sm" id="btn-2d" @click="change3D()" v-show="show_map" title="按Ctrl键可调整视角" style="margin-left: 0">切换3D</button>
<p></p>
<div id="container" v-show="is_show"></div>
</div>
<!-- 用户信息表格 --> <!-- 用户信息表格 -->
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<tbody> <tbody>
@ -100,6 +108,6 @@
<el-button type="primary" @click="refundConfirm()"> </el-button> <el-button type="primary" @click="refundConfirm()"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>

1
routes/web.php

@ -19,4 +19,5 @@ Route::get('/', function(){
Route::get('/test', 'TestController@Test'); Route::get('/test', 'TestController@Test');
Route::any('/rpc', 'TestController@testRpc'); Route::any('/rpc', 'TestController@testRpc');
Route::any('/map', 'TestController@testMap');
Route::any('/add', 'Salesman@addData'); Route::any('/add', 'Salesman@addData');
Loading…
Cancel
Save