Browse Source

👈 编写高德地图组件

master
wangxiang 3 years ago
parent
commit
a8b70c0edd
  1. 72
      kicc-ui/src/components/AMap/src/Amap.vue
  2. 11
      kicc-ui/src/components/AMap/src/data.ts

72
kicc-ui/src/components/AMap/src/Amap.vue

@ -13,33 +13,50 @@
<span title="展开"></span> <span title="展开"></span>
<p title="隐藏"></p> <p title="隐藏"></p>
</div> </div>
<div> <div class="operatePanel-form">
<AForm> <AForm :labelCol="{ style: { width: '80px' } }"
<AFormItem> :wrapperCol="{ style: { width: '100%', 'margin-right': '10px' } }"
<a-input/> :model="mapState.modelRef"
>
<AFormItem label="起点">
<ASelect v-model:value="mapState.modelRef.specimenMarkerId" :options="[]"/>
</AFormItem>
<AFormItem label="途径点">
<ASelect v-model:value="mapState.modelRef.smallHospitalId"
:options="[
{ value: '001', label: '下级医院:第三医院'},
{ value: '002', label: '下级医院:神经病医院'},
{ value: '003', label: '下级医院:湘雅医院'}
]"
/>
</AFormItem>
<AFormItem label="终点">
<ASelect v-model:value="mapState.modelRef.largeHospitalId" :options="[]"/>
</AFormItem> </AFormItem>
</AForm> </AForm>
</div> </div>
<div class="operatePanel-list">
<BasicTable @register="registerTable"/>
</div>
</div> </div>
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import AMapLoader from '@amap/amap-jsapi-loader'; import AMapLoader from '@amap/amap-jsapi-loader';
import { reactive, getCurrentInstance, onBeforeMount, onUnmounted } from 'vue'; import { reactive, getCurrentInstance, onBeforeMount, onUnmounted } from 'vue';
import { largeHospitalMapList, smallHospitalMapList, specimenMapList } from './data'; import { largeHospitalMapList, smallHospitalMapList, specimenMapList, columns } from './data';
import hospital from '/@/assets/images/hospital.svg'; import hospital from '/@/assets/images/hospital.svg';
import medicalKit from '/@/assets/images/medical-kit.svg'; import medicalKit from '/@/assets/images/medical-kit.svg';
import hospitalTwinkle from '/@/assets/images/hospital-twinkle.gif'; import hospitalTwinkle from '/@/assets/images/hospital-twinkle.gif';
import redFlag from '/@/assets/images/redFlag.svg'; import redFlag from '/@/assets/images/redFlag.svg';
import { PageWrapper } from '/@/components/Page'; import { PageWrapper } from '/@/components/Page';
import { Form } from 'ant-design-vue'; import { Form, Select } from 'ant-design-vue';
import { BasicTable, useTable } from '/@/components/Table';
let map; let map;
let largeHospitalMarkerCluster; let largeHospitalMarkerCluster;
let smallHospitalMarkerCluster; let smallHospitalMarkerCluster;
let specimenMarkerCluster; let specimenMarkerCluster;
const AForm = Form;
const AFormItem = Form.Item;
const instance = getCurrentInstance(); const instance = getCurrentInstance();
const mapState = reactive({ const mapState = reactive({
loading: false, loading: false,
@ -48,7 +65,32 @@
p: 'block', p: 'block',
siderWidth: 371 siderWidth: 371
}, },
toggleStatus: true toggleStatus: true,
modelRef: {
largeHospitalId: '',
smallHospitalId: '',
specimenMarkerId: ''
}
});
const AForm = Form;
const AFormItem = Form.Item;
const ASelect = Select;
const [registerTable, { reload }] = useTable({
title: '地图任务列表',
rowKey: 'id',
dataSource: [{
taskName: '测试任务1'
},{
taskName: '测试任务2'
}],
columns,
showTableSetting: true,
tableSetting: {
setting: false,
fullScreen: true
},
bordered: true,
showIndexColumn: true
}); });
onBeforeMount(() => { onBeforeMount(() => {
@ -318,7 +360,7 @@
.operatePanel { .operatePanel {
width: v-bind('mapState.toggleOperatePanelClass.siderWidth + "px"'); width: v-bind('mapState.toggleOperatePanelClass.siderWidth + "px"');
height: 100%; height: 100%;
background: #fff; background: #ffffff;
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
@ -328,7 +370,7 @@
width: 15px; width: 15px;
height: 94px; height: 94px;
margin: -48px 0 0 -15px; margin: -48px 0 0 -15px;
background: #15a3fa; background: #0075ff;
position: absolute; position: absolute;
top: 50%; top: 50%;
cursor: pointer; cursor: pointer;
@ -350,6 +392,14 @@
display: v-bind('mapState.toggleOperatePanelClass.p'); display: v-bind('mapState.toggleOperatePanelClass.p');
} }
} }
.operatePanel-form {
margin-top: 10px;
}
.operatePanel-list {
}
} }
:deep(.amap-marker-label) { :deep(.amap-marker-label) {

11
kicc-ui/src/components/AMap/src/data.ts

@ -1,3 +1,5 @@
import {BasicColumn} from '/@/components/Table';
/** /**
* @program: kicc-ui * @program: kicc-ui
* @description: * @description:
@ -10,7 +12,7 @@ type mapType = {
orientation: number; orientation: number;
lng: number; lng: number;
lat: number; lat: number;
notify: boolean; notify?: boolean;
}; };
export const largeHospitalMapList: mapType[] = [ export const largeHospitalMapList: mapType[] = [
@ -30,3 +32,10 @@ export const specimenMapList: mapType[] = [
{title: '收样员:小红', orientation: 0, lng: 112.914481, lat: 28.294977}, {title: '收样员:小红', orientation: 0, lng: 112.914481, lat: 28.294977},
{title: '收样员:小明', orientation: 0, lng: 112.913864, lat: 28.295114} {title: '收样员:小明', orientation: 0, lng: 112.913864, lat: 28.295114}
]; ];
export const columns: BasicColumn[] = [
{
title: '任务名称',
dataIndex: 'taskName'
}
];

Loading…
Cancel
Save