Files
xk-api-yii/admin/components/UI/Form/Location.php
2024-09-19 11:32:39 +08:00

97 lines
2.2 KiB
PHP

<?php
namespace admin\components\UI\Form;
/**
* 地图
* @package backend\components\UI\Form
*/
class Location extends Element implements Component
{
protected array $map = [
'province' => 'province',
'city' => 'city',
'district' => 'district',
'street' => 'street',
'streetNumber' => 'streetNumber',
'address' => 'address',
'lat' => 'lat',
'lng' => 'lng'
];
/**
* @param string $name
* @param string $field
* @param string $has
*/
public function __construct(string $name, string $field, string $has = '')
{
$this->name = $name;
$this->field = $field;
$this->has = $has;
}
/**
* @return array
*/
public function render(): array
{
$child = [];
return [
'nodeName' => 'app-map',
'vModel:value' => $this->getModelField(),
'child' => $child,
'placeholder' => '请输入' . $this->name,
];
}
/**
* @param $data
* @return array
*/
public function appendInput($data): array
{
$ret = [];
if ($data->province) {
$ret[$this->map['province']] = $data->province;
}
if ($data->city) {
$ret[$this->map['city']] = $data->city;
}
if ($data->district) {
$ret[$this->map['district']] = $data->district;
}
if ($data->street) {
$ret[$this->map['street']] = $data->street;
}
if ($data->streetNumber) {
$ret[$this->map['streetNumber']] = $data->streetNumber;
}
if ($data->address) {
$ret[$this->map['address']] = $data->address;
}
if ($data->lat) {
$ret[$this->map['lat']] = $data->lat;
}
if ($data->lng) {
$ret[$this->map['lng']] = $data->lng;
}
return $ret;
}
/**
* @param $data
* @return string|null
*/
public function dataValue($data): ?array
{
$data = $this->getValue($data);
if( empty($data) ){
return [];
}else{
return json_decode($data,true);
}
}
}