经营主体

This commit is contained in:
13713575202 2025-04-25 15:35:21 +08:00
parent 4be3c6bc11
commit d2a5958c1e
9 changed files with 892 additions and 36 deletions

View File

@ -24,10 +24,53 @@ export function editBuiness(data = {}) {
} }
export function delBuiness(params = {}) { export function delBuiness(params = {}) {
return request('/product-businesse/business/deleteBusiness', { return request('/product-business/business/deleteBusiness', {
method: 'DELETE', method: 'DELETE',
params, params,
}); });
} }
// #endregion // #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> </div>
</template> </template>
<script setup> <script setup>
import { reactive, ref } from 'vue'; import { computed, reactive, ref } from 'vue';
import { useApp } from '@/hooks'; import { useApp } from '@/hooks';
import { CRUD_OPTIONS, pageData } from '@/config'; import { CRUD_OPTIONS, pageData } from '@/config';
import { isEmpty, downloadFile } from '@/utils'; import { isEmpty, downloadFile } from '@/utils';
@ -58,7 +58,7 @@ const crudRef = ref(null);
let timeVal = ref([]); let timeVal = ref([]);
const searchCondition = ref({ const searchCondition = ref({
businessType: '', businessType: null,
businessId: '', businessId: '',
productType: '', // productType: '', //
createStartTime: '', createStartTime: '',
@ -66,7 +66,15 @@ const searchCondition = ref({
primaryProduct: '', primaryProduct: '',
}); });
const labelProp = ref({}); // :0->,1->,2->,3->
const column0 = [];
const column1 = [];
const column2 = [];
const column3 = [];
const state = reactive({ const state = reactive({
loading: false, loading: false,
form: {}, form: {},
@ -87,6 +95,8 @@ const state = reactive({
width: '80px', width: '80px',
ellipsis: true, ellipsis: true,
showOverflowTooltip: true, showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
span: 24, span: 24,
props: { props: {
label: 'dictLabel', label: 'dictLabel',
@ -116,6 +126,8 @@ const state = reactive({
width: '160px', width: '160px',
ellipsis: true, ellipsis: true,
showOverflowTooltip: true, showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
search: true, search: true,
rules: { required: true, message: '请输入', trigger: 'blur' }, rules: { required: true, message: '请输入', trigger: 'blur' },
}, },
@ -126,6 +138,8 @@ const state = reactive({
width: '120px', width: '120px',
remote: false, remote: false,
search: true, search: true,
addDisplay: false,
editDisplay: false,
props: { props: {
label: 'dictLabel', label: 'dictLabel',
value: 'dictValue', value: 'dictValue',
@ -148,6 +162,8 @@ const state = reactive({
width: '120px', width: '120px',
showOverflowTooltip: true, showOverflowTooltip: true,
search: false, search: false,
addDisplay: false,
editDisplay: false,
rules: { rules: {
required: true, required: true,
message: '请输入', message: '请输入',
@ -160,6 +176,28 @@ const state = reactive({
search: false, search: false,
width: '200px', width: '200px',
labelWidth: '160px', 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' }, rules: { required: true, message: '请输入', trigger: 'blur' },
}, },
{ {
@ -170,8 +208,8 @@ const state = reactive({
width: '200px', width: '200px',
ellipsis: true, ellipsis: true,
showOverflowTooltip: true, showOverflowTooltip: true,
addDisplay: true, addDisplay: false,
editDisplay: true, editDisplay: false,
search: true, search: true,
props: { props: {
label: 'areaName', label: 'areaName',
@ -191,6 +229,8 @@ const state = reactive({
search: false, search: false,
ellipsis: true, ellipsis: true,
showOverflowTooltip: true, showOverflowTooltip: true,
addDisplay: false,
editDisplay: false,
rules: { required: true, message: '请输入', trigger: 'blur' }, rules: { required: true, message: '请输入', trigger: 'blur' },
}, },
{ {
@ -198,11 +238,9 @@ const state = reactive({
prop: 'phone', prop: 'phone',
width: '160px', width: '160px',
search: false, search: false,
rules: { addDisplay: false,
required: true, editDisplay: false,
message: '请输入', rules: { required: true, message: '请输入', trigger: 'blur' },
trigger: 'blur',
},
}, },
{ {
label: '审核状态', label: '审核状态',
@ -288,6 +326,199 @@ const state = reactive({
search: true, 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: [ actions: [
{ {
name: '详情', name: '详情',
@ -398,8 +629,8 @@ const rowSave = (row, done, loading) => {
// //
const rowEdit = (row) => { const rowEdit = (row) => {
row.addressCode = row.provinceCode + ',' + row.cityCode + ',' + row.countyCode + ',' + row.townCode; // row.addressCode = row.provinceCode + ',' + row.cityCode + ',' + row.countyCode + ',' + row.townCode;
console.info('编辑', row); // console.info('', row);
crudRef.value.rowEdit(row); crudRef.value.rowEdit(row);
}; };

View File

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

View File

@ -1,5 +1,556 @@
<template> <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> </template>
<script setup></script> <script setup>
<style></style> 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: 'land' },
{ title: '投入品', name: 'inputs' }, { title: '投入品', name: 'inputs' },
{ title: '生产经营主体', name: 'entities' }, { title: '生产经营主体', name: 'entities' },
{ title: '智慧种植检测', name: 'plant' }, // { title: '', name: 'plant' },
{ title: '智慧养殖检测', name: 'breed' }, // { title: '', name: 'breed' },
{ title: '全流程溯源', name: 'trace' }, { title: '全流程溯源', name: 'trace' },
{ title: '产业预警决策', name: 'early' }, { title: '产业预警决策', name: 'early' },
]); ]);

View File

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

View File

@ -6,7 +6,7 @@
* @LastEditTime: 2024-03-22 10:11:34 * @LastEditTime: 2024-03-22 10:11:34
*/ */
import 'virtual:svg-icons-register'; import 'virtual:svg-icons-register';
import { createApp } from 'vue'; import { createApp, nextTick } from 'vue';
import App from './App.vue'; import App from './App.vue';
import router from './router'; import router from './router';
import pinia from './store'; import pinia from './store';
@ -24,21 +24,24 @@ import '@vuemap/vue-amap/dist/style.css';
// 初始化高德地图 API // 初始化高德地图 API
initAMapApiLoader({ initAMapApiLoader({
key: 'c843a50db7157faf295c6fa37c48719f', key: 'c843a50db7157faf295c6fa37c48719f',
securityJsCode: 'f09302d3ed65110614bdb26e44717ddf', // 新版key需要配合安全密钥使用 securityJsCode: 'f09302d3ed65110614bdb26e44717ddf', // 新版key需要配合安全密钥使用
version: '2.0',
Loca: {
version: '2.0', version: '2.0',
}, Loca: {
AMapUI: { version: '2.0',
plugins: ['misc/PathSimplifier'], },
}, AMapUI: {
plugins: ['AMap.MapType'], plugins: ['misc/PathSimplifier'],
},
plugins: ['AMap.MapType'],
}); });
const app = createApp(App); const app = createApp(App);
app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap); app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap);
registerGlobalComponents(app); nextTick(() => {
registerElIcons(app); registerGlobalComponents(app);
registerDirective(app); registerElIcons(app);
registerMicroApps(app); registerDirective(app);
registerMicroApps(app);
})

View File

@ -62,7 +62,7 @@ onMounted(() => {
if (chartsData.valData && chartsData.valData.length) { if (chartsData.valData && chartsData.valData.length) {
chartsData.valData.forEach((m, index) => { chartsData.valData.forEach((m, index) => {
let num = 100; 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> <template>
<div class="plant-gs-warp"> <div class="plant-gs-warp">
<div ref="viewwarp" class="plant-gs-content" :style="{ 'background-image': 'url(' + getAssetsFile('images/plant/bg1.png') + ')' }"> <div ref="viewwarp" class="plant-gs-content" :style="{ 'background-image': 'url(' + getAssetsFile('images/plant/bg1.png') + ')' }">
<el-amap :zoom="11" :center="[99.402267, 23.538889]" ref="mapRef"> <el-amap :zoom="11" :center="[99.402267, 23.538889]" ref="mapRef" view-mode="3D">
<!-- 带孔洞的四边形 --> <!-- 带孔洞的四边形 -->
<el-amap-layer-satellite :visible="visible" /> <el-amap-layer-satellite :visible="visible" />
<el-amap-polygon :path="polygon" :fill-opacity="0.5" fill-color="#748cb7" stroke-color="transparent" /> <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> </el-amap>
</div> </div>
</div> </div>
@ -13,6 +16,7 @@
import { isEmpty, getAssetsFile } from '@/utils'; import { isEmpty, getAssetsFile } from '@/utils';
import { ref, reactive, onMounted } from 'vue'; import { ref, reactive, onMounted } from 'vue';
import { ElAmap, ElAmapPolygon } from '@vuemap/vue-amap'; import { ElAmap, ElAmapPolygon } from '@vuemap/vue-amap';
import { ElAmapLoca, ElAmapLocaHeatmap } from '@vuemap/vue-amap-loca';
onMounted(() => {}); onMounted(() => {});
const zoom = ref(15); const zoom = ref(15);
@ -33,6 +37,29 @@ const polygon = reactive([
]); ]);
const mapRef = ref(null); const mapRef = ref(null);
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(() => {}); onMounted(() => {});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>