注:除了根據下面更改外一定要替換map文件
注意??:需要安裝:npm install vue-jsonp --save
平臺端與門店端后臺:
文件是:view/admin源碼目錄
1、鏈接:/src/main.js
添加如圖所示:
方便復制:
import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp);
2、鏈接:/src/components/map/map.vue
下載附件 注:沒有改過代碼的直接覆蓋,改過代碼的對照一下
注:1和2平臺端和門店端都需要更改
3、平臺端修改:
a、鏈接:/src/api/store.js
添加接口如圖所示:
方便復制:
/**
* @description 門店-添加門店
* data--地址轉id
*/
export function getResolveCity (data) {
return request({
url: `resolve/city`,
method: 'get',
params: data
})
}
b、鏈接:/src/pages/store/addStore/index.vue(3.0.1之前鏈接:src/pages/store/components/addStore.vue)
方便復制:
提示:為減少誤差,建議門店地址與定位地區保持一致
.tip{
color: #ed4014;
}
方便復制:
getResolveCity
方便復制:
resolveCity(address){
let data = {
address:address
}
getResolveCity(data).then(res=>{
let array = []
res.data.forEach(item=>{
array.push(item.id)
})
this.formItem.addressSelect = array
}).catch(err=>{
this.$Message.error(res.msg)
})
},
// 地圖信息獲取
getCoordinates(data) {
this.formItem.latitude = data.location.lat || 34.34127
this.formItem.longitude = data.location.lng || 108.93984
if(data.address_reference){
let landmark = data.address_reference.landmark_l2;
this.formItem.detailed_address = landmark.title;
this.formItem.latitude = landmark.location.lat || 34.34127;
this.formItem.longitude = landmark.location.lng || 108.93984;
let component = data.address_component;
let town = data.address_reference.town.title;
town = town == '丈八街道'?'丈八溝街道':town;
let address = [component.province,component.city,component.district,town];
this.storeAddress = address.join('');
this.formItem.address = address.join('');
this.resolveCity(address.join('/'));
}
},
查找函數getInfo();刪除里面的onSearch()
查找函數 addchack()里面添加如圖:
方便復制:this.formItem.addressSelect = e;
4、門店端修改:
文件是:view/store源碼目錄
a、鏈接:/src/api/setting.js
方便復制:
/**
* @description 門店-添加門店
* data--地址轉id
*/
export function getResolveCity (data) {
return request({
url: `resolve/city`,
method: 'get',
params: data
})
}
b、鏈接:/src/pages/setting/index.vue
方便復制:
提示:為減少誤差,建議門店地址與定位地區保持一致
v-if="isApi && currentTab == 1"
.tip{
color: #ed4014;
}
方便復制:getResolveCity
方便復制:
resolveCity(address){
let data = {
address:address
}
getResolveCity(data).then(res=>{
let array = []
res.data.forEach(item=>{
array.push(item.id)
})
this.formItem.addressSelect = array
}).catch(err=>{
this.$Message.error(res.msg)
})
},
// 地圖信息獲取
getCoordinates(data) {
this.formItem.latitude = data.location.lat || 34.34127
this.formItem.longitude = data.location.lng || 108.93984
if(data.address_reference){
let landmark = data.address_reference.landmark_l2;
this.formItem.detailed_address = landmark.title;
this.formItem.latitude = landmark.location.lat || 34.34127;
this.formItem.longitude = landmark.location.lng || 108.93984;
let component = data.address_component;
let town = data.address_reference.town.title;
town = town == '丈八街道'?'丈八溝街道':town;
let address = [component.province,component.city,component.district,town];
this.formItem.address = address.join('');
this.resolveCity(address.join('/'));
}
},
查找函數getInfo();刪除里面的onSearch()
查找函數 addchack()里面添加如圖:
方便復制:this.formItem.addressSelect = e;
需要安裝:npm install vue-jsonp --save
5、需要重新打包 (平臺后臺、門店后臺)
打包文檔: https://doc.www.2233z.cn/pro/crmebprov2/2354
php代碼修改:
6、文件:route/admin.php
增加如下接口:
//解析(導入地圖城市地址)
Route::get('resolve/city', 'Common/resolveCityList')->option(['real_name' => '解析導入地圖城市地址']);
放在下圖所在位置:
7、文件:app/controller/admin/Common.php
增加如下方法:
/**
* 解析(獲取導入地圖城市地址)
* @param CityAreaServices $services
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function resolveCityList(CityAreaServices $services)
{
$address = $this->request->param('address', '');
if (!$address)
return app('json')->fail('地址不存在');
if (strpos($address, '/') === false) {
$address = implode('/', array_values($services->addressHandle($address)));
}
$city = $services->searchCity(compact('address'));
if (!$city) return app('json')->fail('地址暫未錄入,請聯系管理員');
$where = [['id', 'in', array_merge([$city['id']], explode('/', trim($city->path, '/')))]];
return app('json')->success($services->getCityList($where, 'id as value,id,name as label,parent_id as pid', ['children']));
}
可以放在,下圖所示位置:
8、文件:route/store.php
增加如下接口:
//解析(導入地圖城市地址)
Route::get('resolve/city', 'Common/resolveCityList')->option(['real_name' => '解析導入地圖城市地址']);
放在下圖所在位置:
9、文件:app/controller/store/Common.php
增加如下代碼:
/**
* 解析(獲取導入地圖城市地址)
* @param CityAreaServices $services
* @param Request $request
* @return \think\Response
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function resolveCityList(CityAreaServices $services, Request $request)
{
$address = $request->param('address', '');
if (!$address)
return app('json')->fail('地址不存在');
if (strpos($address, '/') === false) {
$address = implode('/', array_values($services->addressHandle($address)));
}
$city = $services->searchCity(compact('address'));
if (!$city) return app('json')->fail('地址暫未錄入,請聯系管理員');
$where = [['id', 'in', array_merge([$city['id']], explode('/', trim($city->path, '/')))]];
return app('json')->success($services->getCityList($where, 'id as value,id,name as label,parent_id as pid', ['children']));
}
可以放在,下圖所示位置:
10、文件:app/controller/admin/v1/store/SystemStore.php
方法:save,增加如下兩部分代碼:
11、文件:app/controller/store/system/Store.php
方法:update, 增加如下代碼
12、文件:app/services/store/SystemStoreServices.php
增加代碼:
$storeInfo['addressSelect'] = [$storeInfo['province'], $storeInfo['city'], $storeInfo['area'], $storeInfo['street']];
14、重啟swoole
注意??:
附件中有完整修改打包后文件,
可以下載:地圖修改.zip,
在項目站點根目錄解壓(針對技術小白)