This commit is contained in:
李想 2025-04-27 08:58:22 +08:00
commit 72f6122d4f
9 changed files with 884 additions and 46 deletions

View File

@ -24,10 +24,53 @@ export function editBuiness(data = {}) {
}
export function delBuiness(params = {}) {
return request('/product-businesse/business/deleteBusiness', {
return request('/product-business/business/deleteBusiness', {
method: 'DELETE',
params,
});
}
// #endregion
/* 经营主体审核相关 */
export function getBuinesCheckList(params = {}) {
return request('/product-business/business/businessCheckPage', {
method: 'GET',
params,
});
}
export function doBusinessCheck(data = {}) {
return request('/product-business/business/businessCheck', {
method: 'PUT',
data,
});
}
export function exportBusinessCheck(params = {}) {
return request('/product-business/business/businessCheckExport', {
method: 'GET',
params,
responseType: 'blob',
});
}
// #endregion
/* 经营主体审核历史相关 */
export function getBuinesCheckRecord(params = {}) {
return request('/product-business/business/businessCheckLogPage', {
method: 'GET',
params,
});
}
export function exportBusinessCheckRecord(params = {}) {
return request('/product-business/business/businessCheckLogExport', {
method: 'GET',
params,
responseType: 'blob',
});
}
// #endregion

View File

@ -43,7 +43,7 @@
</div>
</template>
<script setup>
import { reactive, ref } from 'vue';
import { computed, reactive, ref } from 'vue';
import { useApp } from '@/hooks';
import { CRUD_OPTIONS, pageData } from '@/config';
import { isEmpty, downloadFile } from '@/utils';
@ -58,7 +58,7 @@ const crudRef = ref(null);
let timeVal = ref([]);
const searchCondition = ref({
businessType: '',
businessType: null,
businessId: '',
productType: '', //
createStartTime: '',
@ -66,7 +66,15 @@ const searchCondition = ref({
primaryProduct: '',
});
const labelProp = ref({});
// :0->,1->,2->,3->
const column0 = [];
const column1 = [];
const column2 = [];
const column3 = [];
const state = reactive({
loading: false,
form: {},
@ -87,6 +95,8 @@ const state = reactive({
width: '80px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
span: 24,
props: {
label: 'dictLabel',
@ -116,6 +126,8 @@ const state = reactive({
width: '160px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
search: true,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
@ -126,6 +138,8 @@ const state = reactive({
width: '120px',
remote: false,
search: true,
addDisplay: false,
editDisplay: false,
props: {
label: 'dictLabel',
value: 'dictValue',
@ -148,6 +162,8 @@ const state = reactive({
width: '120px',
showOverflowTooltip: true,
search: false,
addDisplay: false,
editDisplay: false,
rules: {
required: true,
message: '请输入',
@ -160,6 +176,28 @@ const state = reactive({
search: false,
width: '200px',
labelWidth: '160px',
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '规模',
prop: 'villageCount',
search: false,
width: '200px',
labelWidth: '160px',
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '负责人',
prop: 'headName',
search: false,
width: '200px',
labelWidth: '160px',
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
@ -170,8 +208,8 @@ const state = reactive({
width: '200px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: true,
editDisplay: true,
addDisplay: false,
editDisplay: false,
search: true,
props: {
label: 'areaName',
@ -191,6 +229,8 @@ const state = reactive({
search: false,
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
@ -198,11 +238,9 @@ const state = reactive({
prop: 'phone',
width: '160px',
search: false,
rules: {
required: true,
message: '请输入',
trigger: 'blur',
},
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '审核状态',
@ -288,6 +326,199 @@ const state = reactive({
search: true,
},
],
group: [
{
label: '基本信息>',
prop: 'caseInfo',
column: [
{
label: '主体代码',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体名称',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体类型',
prop: 'businessType',
type: 'radio',
width: '80px',
ellipsis: true,
showOverflowTooltip: true,
span: 24,
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list?dictType=sys_business_type&current=1&size=10`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '经营产品种类',
prop: 'productType',
type: 'select',
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
dicQuery: {
dictType: 'sys_business_product_type',
current: 1,
size: 100,
},
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
},
{
label: '主要产品',
prop: 'product',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '规模',
prop: 'villageCount',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '负责人',
prop: 'headName',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '负责人电话',
prop: 'phone',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '联系地址',
prop: 'addressCode',
type: 'cascader',
checkStrictly: false,
width: '200px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
search: true,
props: {
label: 'areaName',
value: 'areaCode',
children: 'areaChildVOS',
},
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data ?? [],
rules: [{ required: true, message: '请选择', trigger: 'blur' }],
},
{
label: '详细地址',
prop: 'detailAddress',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '营业执照>',
prop: 'caseInfo',
column: [
{
label: '统一社会信用代码',
prop: 'notes',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '营业执照',
prop: 'license',
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '经营项目',
prop: 'inspectionSituation',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '经营许可证>',
prop: 'caseInfo',
column: [
{
label: '经营许可证编号',
prop: 'operationType',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '经营许可证',
prop: 'permit',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '审核操作>',
prop: 'caseInfo',
column: [
{
label: '是否通过',
prop: 'isIllegal',
span: 24,
display: true,
type: 'radio',
editDisplay: true,
addDisplay: false,
dicData: [
{
label: '是',
value: '1',
},
{
label: '否',
value: '0',
},
],
},
{
label: '审核意见',
prop: 'note',
type: 'textarea',
span: 24,
minRows: 3, //
maxRows: 5, //
overHidden: true,
width: 200,
},
],
},
],
actions: [
{
name: '详情',
@ -398,8 +629,8 @@ const rowSave = (row, done, loading) => {
//
const rowEdit = (row) => {
row.addressCode = row.provinceCode + ',' + row.cityCode + ',' + row.countyCode + ',' + row.townCode;
console.info('编辑', row);
// row.addressCode = row.provinceCode + ',' + row.cityCode + ',' + row.countyCode + ',' + row.townCode;
// console.info('', row);
crudRef.value.rowEdit(row);
};

View File

@ -43,6 +43,7 @@ import {
getAddrCropByLand,
importOperationRecord,
} from '@/apis/land';
import { getBuinesCheckList, doBusinessCheck, exportBusinessCheck } from '@/apis/productOperateMain';
const { VITE_APP_BASE_API } = import.meta.env;
const app = useApp();

View File

@ -1,5 +1,556 @@
<template>
<div></div>
<div class="custom-page">
<avue-crud
ref="crudRef"
v-model="state.form"
v-model:search="state.query"
v-model:page="state.pageData"
:table-loading="state.loading"
:data="state.data"
:option="state.options"
@refresh-change="refreshChange"
@search-reset="searchChange"
@search-change="searchChange"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
>
<template #menu-left>
<el-button type="success" icon="download" @click="onExport">导出</el-button>
</template>
<template #status="{ row }">
<el-tag v-if="row.status == '0'" type="warning" size="small">待审核</el-tag>
<el-tag v-if="row.status == '1'" type="success" size="small">通过</el-tag>
<el-tag v-if="row.status == '2'" type="danger" size="small">拒绝</el-tag>
</template>
<!-- <template #menu="scope">
<custom-table-operate :actions="state.options.actions" :data="scope" />
</template> -->
</avue-crud>
</div>
</template>
<script setup></script>
<style></style>
<script setup>
import { reactive, ref } from 'vue';
import { useApp } from '@/hooks';
import { CRUD_OPTIONS } from '@/config';
import { isEmpty, downloadFile } from '@/utils';
import { useUserStore } from '@/store/modules/user';
import {
getOperationRecord,
saveOperationRecord,
editOperationRecord,
delOperationRecord,
exportOperationRecord,
getAddrCropByLand,
importOperationRecord,
} from '@/apis/land';
import { getBuinesCheckRecord, exportBusinessCheckRecord } from '@/apis/productOperateMain';
const { VITE_APP_BASE_API } = import.meta.env;
const app = useApp();
const UserStore = useUserStore();
const crudRef = ref(null);
const jobTypeOptions = reactive([
{ label: '蔬菜', value: '0' },
{ label: '水果', value: '1' },
]);
const bTypeOptions = reactive([
{ label: '个体', value: '0' },
{ label: '村集体', value: '1' },
{ label: '合作社', value: '2' },
{ label: '企业', value: '3' },
]);
const auditStatusOptions = reactive([
{ label: '待审核', value: '0' },
{ label: '已通过', value: '1' },
{ label: '已拒绝', value: '2' },
]);
const productTypeOptions = reactive([
{ label: '蔬菜', value: '0' },
{ label: '水果', value: '1' },
]);
let bTypeVal = ref('0');
const baseColumn = reactive([]);
const individualBase = [
{ label: '身份证号', prop: 'crop' },
{ label: '联系电话', prop: 'crop' },
{ label: '联系地址', prop: 'crop' },
];
const collectiveBase = [
{ label: '负责人', prop: 'crop' },
{ label: '负责人电话', prop: 'crop' },
{ label: '联系地址', prop: 'crop' },
];
const enterpriseBase = [
{ label: '企业规模', prop: 'crop' },
{ label: '负责人', prop: 'crop' },
{ label: '负责人电话', prop: 'crop' },
{ label: '公司地址', prop: 'crop' },
];
const state = reactive({
loading: false,
query: {
current: 1,
size: 10,
},
form: {},
selection: [],
options: {
...CRUD_OPTIONS,
addBtnText: '添加',
addBtn: false,
searchLabelWidth: '120px',
searchSpan: 8,
searchGutter: 100,
searchMenuPosition: 'center',
column: [
{
label: '主体类型',
prop: 'businessType',
type: 'radio',
search: true,
width: '80px',
ellipsis: true,
showOverflowTooltip: true,
span: 24,
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list?dictType=sys_business_type&current=1&size=10`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '主体代码',
prop: 'id',
width: '120px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
search: true,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体名称',
prop: 'businessName',
width: '160px',
ellipsis: true,
showOverflowTooltip: true,
search: true,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '经营产品种类',
prop: 'productType',
type: 'select',
width: '120px',
remote: false,
search: true,
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
dicQuery: {
dictType: 'sys_business_product_type',
current: 1,
size: 100,
},
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
rules: [{ required: true, message: '请选择', trigger: 'blur' }],
},
{
label: '主要经营产品',
prop: 'primaryProduct',
width: '120px',
showOverflowTooltip: true,
search: false,
rules: {
required: true,
message: '请输入',
trigger: 'blur',
},
},
{
label: '统一信用代码/证件号码',
prop: 'idCard',
search: false,
width: '200px',
labelWidth: '160px',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '联系地址',
prop: 'addressCode',
type: 'cascader',
checkStrictly: false,
width: '200px',
ellipsis: true,
showOverflowTooltip: true,
addDisplay: true,
editDisplay: true,
search: true,
props: {
label: 'areaName',
value: 'areaCode',
children: 'areaChildVOS',
},
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data ?? [],
rules: [{ required: true, message: '请选择', trigger: 'blur' }],
},
{
label: '详细地址',
prop: 'detailAddress',
search: false,
ellipsis: true,
showOverflowTooltip: true,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '联系电话',
prop: 'phone',
width: '160px',
search: false,
rules: {
required: true,
message: '请输入',
trigger: 'blur',
},
},
{
label: '审核状态',
prop: 'status',
width: '80px',
addDisplay: false,
editDisplay: false,
search: false,
rules: {
required: true,
message: '请输入',
trigger: 'blur',
},
},
{
label: '审核意见',
prop: 'remark',
addDisplay: false,
editDisplay: false,
width: '200px',
ellipsis: true,
showOverflowTooltip: true,
rules: {
required: true,
message: '请输入',
trigger: 'blur',
},
},
{ label: '创建时间', prop: 'createTime', addDisplay: false, editDisplay: false, search: false },
],
searchColumn: [
{ label: '主体代码', prop: 'landName', search: true },
{ label: '主体名称', prop: 'crop', search: true },
{
label: '经营产品种类',
prop: 'productType',
type: 'select',
width: '120px',
remote: false,
search: true,
props: {
label: 'dictLabel',
value: 'dictValue',
},
dicUrl: `${VITE_APP_BASE_API}/system/dict/data/list`,
dicQuery: {
dictType: 'sys_business_product_type',
current: 1,
size: 100,
},
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data.records ?? [],
rules: [{ required: true, message: '请选择', trigger: 'blur' }],
},
{
label: '主体类型',
prop: 'operationType',
type: 'select',
search: true,
dicData: bTypeOptions,
},
{
label: '创建日期',
prop: 'operationDate',
type: 'daterange',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
search: true,
},
],
group: [
{
label: '基本信息>',
prop: 'caseInfo',
column: [
{
label: '主体代码',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体名称',
prop: 'taskCode',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '主体类型',
prop: 'bType',
type: 'select',
dicData: bTypeOptions,
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '经营产品种类',
type: 'select',
dicData: productTypeOptions,
rules: { required: true, message: '请选择', trigger: 'blur' },
},
{
label: '主要产品',
prop: 'product',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '合作社规模',
prop: 'inspectionType',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '负责人',
prop: 'inspectionTarget',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '负责人电话',
prop: 'inspectionTarget',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '联系地址',
prop: 'inspectionTarget',
rules: { required: true, message: '请输入', trigger: 'blur' },
type: 'select',
props: {
label: 'areaName',
value: 'areaCode',
children: 'areaChildVOS',
},
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data ?? [],
},
{
label: '详细地址',
prop: 'notes',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '营业执照>',
prop: 'caseInfo',
column: [
{
label: '统一社会信用代码',
prop: 'notes',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '营业执照',
prop: 'license',
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
{
label: '经营项目',
prop: 'inspectionSituation',
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '经营许可证>',
prop: 'caseInfo',
column: [
{
label: '经营许可证编号',
prop: 'operationType',
rules: { required: false, message: '请输入', trigger: 'blur' },
},
{
label: '经营许可证',
prop: 'permit',
rules: { required: false, message: '请选择', trigger: 'blur' },
},
{
label: '有效期至',
prop: 'operationDate',
type: 'date',
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
width: 200,
rules: { required: true, message: '请输入', trigger: 'blur' },
},
],
},
{
label: '审核操作>',
prop: 'caseInfo',
column: [
{
label: '是否通过',
prop: 'isIllegal',
span: 24,
display: true,
type: 'radio',
editDisplay: true,
addDisplay: false,
dicData: [
{
label: '是',
value: '1',
},
{
label: '否',
value: '0',
},
],
},
{
label: '审核意见',
prop: 'note',
type: 'textarea',
span: 24,
minRows: 3, //
maxRows: 5, //
overHidden: true,
width: 200,
},
],
},
],
},
pageData: {
total: 0,
currentPage: 1,
pageSize: 10,
},
data: [],
currentRow: {},
});
//
const loadData = () => {
state.loading = true;
getBuinesCheckRecord(state.query)
.then((res) => {
if (res.code === 200) {
const { current, size, total, records } = res.data;
state.data = records;
state.pageData = {
currentPage: current || 1,
pageSize: size || 10,
total: total,
};
}
})
.catch((err) => {
app.$message.error(err.msg);
state.data = [];
})
.finally(() => {
state.loading = false;
});
};
loadData();
//
const currentChange = (current) => {
state.query.current = current;
loadData();
};
//
const sizeChange = (size) => {
state.query.size = size;
loadData();
};
//
const searchChange = (params, done) => {
if (done) done();
state.query = params;
state.query.current = 1;
loadData();
};
//
const refreshChange = () => {
loadData();
app.$message.success('刷新成功');
};
const onExport = () => {
if (isEmpty(state.data)) {
app.$message.error('当前暂时没有可供导出的数据!');
return;
}
state.loading = true;
const fileName = '网格明细表';
exportBusinessCheckRecord(state.query)
.then((res) => {
if (res.status === 200) {
downloadFile(res.data, `${fileName}.xlsx`, 'blob');
app.$message.success('导出成功!');
}
})
.catch((err) => {
app.$message.error('导出失败!');
})
.finally(() => {
state.loading = false;
});
};
</script>

View File

@ -81,8 +81,8 @@ const navlist = ref([
{ title: '土地资源', name: 'land' },
{ title: '投入品', name: 'inputs' },
{ title: '生产经营主体', name: 'entities' },
{ title: '智慧种植检测', name: 'plant' },
{ title: '智慧养殖检测', name: 'breed' },
// { title: '', name: 'plant' },
// { title: '', name: 'breed' },
{ title: '全流程溯源', name: 'trace' },
{ title: '产业预警决策', name: 'early' },
]);

View File

@ -47,8 +47,8 @@ const navlist = ref([
{ title: '土地资源', name: 'land' },
{ title: '投入品', name: 'inputs' },
{ title: '生产经营主体', name: 'entities' },
{ title: '智慧种植测', name: 'plant' },
{ title: '智慧养殖测', name: 'breed' },
{ title: '智慧种植测', name: 'plant' },
{ title: '智慧养殖测', name: 'breed' },
{ title: '全流程溯源', name: 'trace' },
{ title: '产业预警决策', name: 'early' },
]);

View File

@ -6,7 +6,7 @@
* @LastEditTime: 2024-03-22 10:11:34
*/
import 'virtual:svg-icons-register';
import { createApp } from 'vue';
import { createApp, nextTick } from 'vue';
import App from './App.vue';
import router from './router';
import pinia from './store';
@ -31,14 +31,16 @@ initAMapApiLoader({
version: '2.0',
},
AMapUI: {
plugins: ['misc/PathSimplifier'],
lugins: ['misc/PathSimplifier'],
},
plugins: ['AMap.MapType', 'AMap.DistrictSearch'],
plugins: ['AMap.MapType'],
});
const app = createApp(App);
app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap);
registerGlobalComponents(app);
registerElIcons(app);
registerDirective(app);
registerMicroApps(app);
nextTick(() => {
registerGlobalComponents(app);
registerElIcons(app);
registerDirective(app);
registerMicroApps(app);
});

View File

@ -62,7 +62,7 @@ onMounted(() => {
if (chartsData.valData && chartsData.valData.length) {
chartsData.valData.forEach((m, index) => {
let num = 100;
m.value = (Number(m.value) + Math.random() + num).toFixed(2);
m.value = (Number(m.value) + Math.random() + num).toFixed(0);
});
}
});

View File

@ -1,10 +1,13 @@
<template>
<div class="plant-gs-warp">
<div ref="viewwarp" class="plant-gs-content" :style="{ 'background-image': 'url(' + getAssetsFile('images/plant/bg1.png') + ')' }">
<el-amap ref="mapRef" :zoom="11" :center="[99.402267, 23.538889]" :mask="yunnan" view-mode="3D" @init="initMap">
<el-amap :zoom="11" :center="[99.402267, 23.538889]" ref="mapRef" view-mode="3D">
<!-- 带孔洞的四边形 -->
<el-amap-layer-satellite :visible="visible" />
<el-amap-polygon :path="polygon" :fill-opacity="0.5" fill-color="#748cb7" stroke-color="transparent" />
<!-- <el-amap-loca>
<el-amap-loca-heatmap :source-url="sourceUrl" :layer-style="layerStyle" />
</el-amap-loca> -->
</el-amap>
</div>
</div>
@ -34,23 +37,30 @@ const polygon = reactive([
]);
const mapRef = ref(null);
const yunnan = ref([]);
function initMap(e) {
var opts = {
subdistrict: 0,
extensions: 'all',
level: 'province',
};
var district = new AMap.DistrictSearch(opts);
district.search('云南省', function (status, result) {
console.log('res', result);
var bounds = result.districtList[0].boundaries;
for (var i = 0; i < bounds.length; i += 1) {
yunnan.value.push([bounds[i]]);
}
console.log('mask.value', yunnan.value);
});
}
const sourceUrl = ref('https://a.amap.com/Loca/static/loca-v2/demos/mock_data/hz_house_order.json');
const layerStyle = ref({
radius: 20,
unit: 'px',
height: 90,
// radius: 10,
// unit: 'px',
// height: 10,
gradient: {
0.1: 'rgba(50,48,118,1)',
0.2: 'rgba(127,60,255,1)',
0.4: 'rgba(166,53,219,1)',
0.6: 'rgba(254,64,95,1)',
0.8: 'rgba(255,98,4,1)',
1: 'rgba(236,220,79,1)',
},
value(index, feature) {
return feature.properties.count;
},
min: 0,
max: 10, //4.6
heightBezier: [0, 0.53, 0.37, 0.98],
});
onMounted(() => {});
</script>
<style lang="scss" scoped>
.plant-gs-warp {