Compare commits
No commits in common. "abd00758951aed27aa2a2159511b3fd641de06d4" and "41955b2edf1ad5feb3a15e4a72a4abd57e7d9e2a" have entirely different histories.
abd0075895
...
41955b2edf
@ -4,11 +4,9 @@ VITE_APP_NAME = 'daimp-front-main'
|
|||||||
VITE_APP_TITLE = '数字农业产业管理平台'
|
VITE_APP_TITLE = '数字农业产业管理平台'
|
||||||
VITE_APP_SUB_OS = '//localhost:9526/sub-operation-service/'
|
VITE_APP_SUB_OS = '//localhost:9526/sub-operation-service/'
|
||||||
VITE_APP_SUB_OA = '//localhost:9527/sub-operation-admin/'
|
VITE_APP_SUB_OA = '//localhost:9527/sub-operation-admin/'
|
||||||
# VITE_APP_SUB_GAS = 'http://192.168.18.128:9528/sub-government-affairs-service/'
|
|
||||||
VITE_APP_SUB_GAS = '//localhost:9528/sub-government-affairs-service/'
|
VITE_APP_SUB_GAS = '//localhost:9528/sub-government-affairs-service/'
|
||||||
VITE_APP_SUB_GAA = '//localhost:9525/sub-government-admin/'
|
VITE_APP_SUB_GAA = '//localhost:9525/sub-government-affairs-admin/'
|
||||||
VITE_APP_SUB_GSS = '//localhost:9529/sub-government-screen-service/'
|
VITE_APP_SUB_GSS = '//localhost:9529/sub-government-screen-service/'
|
||||||
VITE_APP_SUB_GSR = '//localhost:9530/new-digital-agriculture-screen/'
|
|
||||||
# 接口
|
# 接口
|
||||||
VITE_APP_BASE_API = '/apis'
|
VITE_APP_BASE_API = '/apis'
|
||||||
VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
|
VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
# 本地环境
|
|
||||||
VITE_APP_NAME = 'daimp-front-main'
|
|
||||||
VITE_APP_TITLE = '数字农业产业管理平台'
|
|
||||||
VITE_APP_SUB_OS = '//localhost:8090/sub-operation-service/'
|
|
||||||
VITE_APP_SUB_OA = '//localhost:8090/sub-operation-admin/'
|
|
||||||
VITE_APP_SUB_GAS = '//localhost:8090/sub-government-affairs-service/'
|
|
||||||
VITE_APP_SUB_GAA = '//localhost:8090/sub-government-admin/'
|
|
||||||
VITE_APP_SUB_GSS = '//localhost:8090/sub-government-screen-service/'
|
|
||||||
# 接口
|
|
||||||
VITE_APP_BASE_API = '/apis'
|
|
||||||
VITE_APP_BASE_URL = ''
|
|
||||||
VITE_APP_UPLOAD_API = '/uploadApis'
|
|
||||||
VITE_APP_UPLOAD_URL = ''
|
|
@ -6,7 +6,6 @@ VITE_APP_SUB_OA = '//http://47.109.205.240:88/sub-operation-admin/'
|
|||||||
VITE_APP_SUB_GAS = '//http://47.109.205.240:88/sub-government-affairs-service/'
|
VITE_APP_SUB_GAS = '//http://47.109.205.240:88/sub-government-affairs-service/'
|
||||||
VITE_APP_SUB_GAA = '//http://47.109.205.240:88/sub-government-affairs-admin/'
|
VITE_APP_SUB_GAA = '//http://47.109.205.240:88/sub-government-affairs-admin/'
|
||||||
VITE_APP_SUB_GSS = '//http://47.109.205.240:88/sub-government-screen-service/'
|
VITE_APP_SUB_GSS = '//http://47.109.205.240:88/sub-government-screen-service/'
|
||||||
VITE_APP_SUB_GSR = '//http://47.109.205.240:88/new-digital-agriculture-screen/'
|
|
||||||
# 接口
|
# 接口
|
||||||
VITE_APP_BASE_API = '/apis'
|
VITE_APP_BASE_API = '/apis'
|
||||||
VITE_APP_BASE_URL = ''
|
VITE_APP_BASE_URL = ''
|
||||||
|
@ -4,9 +4,8 @@ VITE_APP_TITLE = '数字农业产业管理平台'
|
|||||||
VITE_APP_SUB_OS = '//192.168.18.99:88/sub-operation-service/'
|
VITE_APP_SUB_OS = '//192.168.18.99:88/sub-operation-service/'
|
||||||
VITE_APP_SUB_OA = '//192.168.18.99:88/sub-operation-admin/'
|
VITE_APP_SUB_OA = '//192.168.18.99:88/sub-operation-admin/'
|
||||||
VITE_APP_SUB_GAS = '//192.168.18.99:88/sub-government-affairs-service/'
|
VITE_APP_SUB_GAS = '//192.168.18.99:88/sub-government-affairs-service/'
|
||||||
VITE_APP_SUB_GAA = '//192.168.18.99:88/sub-government-admin/'
|
VITE_APP_SUB_GAA = '//192.168.18.99:88/sub-government-affairs-admin/'
|
||||||
VITE_APP_SUB_GSS = '//192.168.18.99:88/sub-government-screen-service/'
|
VITE_APP_SUB_GSS = '//192.168.18.99:88/sub-government-screen-service/'
|
||||||
VITE_APP_SUB_GSR = '//192.168.18.99:88/new-digital-agriculture-screen/'
|
|
||||||
# 接口
|
# 接口
|
||||||
VITE_APP_BASE_API = '/apis'
|
VITE_APP_BASE_API = '/apis'
|
||||||
VITE_APP_BASE_URL = ''
|
VITE_APP_BASE_URL = ''
|
||||||
|
@ -7,13 +7,13 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title></title>
|
<title></title>
|
||||||
<script>
|
<script>
|
||||||
// window._AMapSecurityConfig = {
|
window._AMapSecurityConfig = {
|
||||||
// securityJsCode: 'f09302d3ed65110614bdb26e44717ddf',
|
securityJsCode: 'f09302d3ed65110614bdb26e44717ddf',
|
||||||
// };
|
};
|
||||||
</script>
|
</script>
|
||||||
<!-- <script type="text/javascript"
|
<script type="text/javascript"
|
||||||
src="https://webapi.amap.com/maps?v=2.0&key=c843a50db7157faf295c6fa37c48719f&plugin=AMap.PlaceSearch,AMap.Geocoder"></script>
|
src="https://webapi.amap.com/maps?v=2.0&key=c843a50db7157faf295c6fa37c48719f&plugin=AMap.PlaceSearch,AMap.Geocoder"></script>
|
||||||
<script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script> -->
|
<script src="https://webapi.amap.com/ui/1.1/main.js?v=1.0.11"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -37,20 +37,10 @@ export default {
|
|||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, getInstance, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions, getInstance } = useEcharts(chartRef);
|
||||||
const option = reactive({
|
const option = reactive({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
tooltip: {
|
|
||||||
backgroundColor: 'rgba(12, 36, 56, 0.9)', // 背景颜色(支持RGBA格式)
|
|
||||||
borderColor: '#2cf4fd', // 边框颜色
|
|
||||||
borderWidth: 1, // 边框宽度
|
|
||||||
textStyle: {
|
|
||||||
color: '#fff', // 文字颜色
|
|
||||||
fontSize: 12,
|
|
||||||
},
|
|
||||||
formatter: '{b}:{c}',
|
|
||||||
},
|
|
||||||
axisPointer: {
|
axisPointer: {
|
||||||
type: 'shadow',
|
type: 'shadow',
|
||||||
label: {
|
label: {
|
||||||
@ -107,11 +97,6 @@ export default {
|
|||||||
option.series = props.isSeries && option.series.length > 0 ? option.series : seriesData;
|
option.series = props.isSeries && option.series.length > 0 ? option.series : seriesData;
|
||||||
option.xAxis.data = xAxisData;
|
option.xAxis.data = xAxisData;
|
||||||
setOptions(option);
|
setOptions(option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
getInstance()?.off('click', onClick);
|
getInstance()?.off('click', onClick);
|
||||||
getInstance()?.on('click', onClick);
|
getInstance()?.on('click', onClick);
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ export default {
|
|||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, getInstance, resize, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions, getInstance, resize } = useEcharts(chartRef);
|
||||||
const optionVal = reactive({});
|
const optionVal = reactive({});
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
@ -55,11 +55,6 @@ export default {
|
|||||||
Object.assign(optionVal, cloneDeep(props.option));
|
Object.assign(optionVal, cloneDeep(props.option));
|
||||||
}
|
}
|
||||||
setOptions(props.option);
|
setOptions(props.option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
resize();
|
resize();
|
||||||
getInstance()?.off('click', onClick);
|
getInstance()?.off('click', onClick);
|
||||||
getInstance()?.on('click', onClick);
|
getInstance()?.on('click', onClick);
|
||||||
|
@ -34,7 +34,7 @@ export default {
|
|||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, getInstance, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions, getInstance } = useEcharts(chartRef);
|
||||||
const option = reactive({
|
const option = reactive({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
@ -138,11 +138,6 @@ export default {
|
|||||||
option.series = seriesData;
|
option.series = seriesData;
|
||||||
option.xAxis.data = xAxisData;
|
option.xAxis.data = xAxisData;
|
||||||
setOptions(option);
|
setOptions(option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
getInstance()?.off('click', onClick);
|
getInstance()?.off('click', onClick);
|
||||||
getInstance()?.on('click', onClick);
|
getInstance()?.on('click', onClick);
|
||||||
}
|
}
|
||||||
|
@ -29,17 +29,10 @@ export default {
|
|||||||
},
|
},
|
||||||
setup(props) {
|
setup(props) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions } = useEcharts(chartRef);
|
||||||
const option = reactive({
|
const option = reactive({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
backgroundColor: 'rgba(12, 36, 56, 0.9)', // 背景颜色(支持RGBA格式)
|
|
||||||
borderColor: '#2cf4fd', // 边框颜色
|
|
||||||
borderWidth: 1, // 边框宽度
|
|
||||||
textStyle: {
|
|
||||||
color: '#fff', // 文字颜色
|
|
||||||
fontSize: 12,
|
|
||||||
},
|
|
||||||
axisPointer: {
|
axisPointer: {
|
||||||
type: 'shadow',
|
type: 'shadow',
|
||||||
label: {
|
label: {
|
||||||
@ -91,11 +84,6 @@ export default {
|
|||||||
option.series = seriesData;
|
option.series = seriesData;
|
||||||
option.xAxis.data = xAxisData;
|
option.xAxis.data = xAxisData;
|
||||||
setOptions(option);
|
setOptions(option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return { chartRef };
|
return { chartRef };
|
||||||
},
|
},
|
||||||
|
@ -33,7 +33,7 @@ export default {
|
|||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, getInstance, resize, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions, getInstance, resize } = useEcharts(chartRef);
|
||||||
const option = reactive({
|
const option = reactive({
|
||||||
grid: {
|
grid: {
|
||||||
left: '3%',
|
left: '3%',
|
||||||
@ -42,6 +42,9 @@ export default {
|
|||||||
top: '11%',
|
top: '11%',
|
||||||
containLabel: true,
|
containLabel: true,
|
||||||
},
|
},
|
||||||
|
tooltip: {
|
||||||
|
formatter: '{b}',
|
||||||
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'pictorialBar',
|
type: 'pictorialBar',
|
||||||
@ -101,11 +104,6 @@ export default {
|
|||||||
Object.assign(option, cloneDeep(props.option));
|
Object.assign(option, cloneDeep(props.option));
|
||||||
}
|
}
|
||||||
setOptions(option);
|
setOptions(option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
resize();
|
resize();
|
||||||
getInstance()?.off('click', onClick);
|
getInstance()?.off('click', onClick);
|
||||||
getInstance()?.on('click', onClick);
|
getInstance()?.on('click', onClick);
|
||||||
|
@ -33,16 +33,9 @@ export default {
|
|||||||
emits: ['click'],
|
emits: ['click'],
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const chartRef = ref(null);
|
const chartRef = ref(null);
|
||||||
const { setOptions, getInstance, resize, startAutoPlay } = useEcharts(chartRef);
|
const { setOptions, getInstance, resize } = useEcharts(chartRef);
|
||||||
const option = reactive({
|
const option = reactive({
|
||||||
tooltip: {
|
tooltip: {
|
||||||
backgroundColor: 'rgba(12, 36, 56, 0.9)', // 背景颜色(支持RGBA格式)
|
|
||||||
borderColor: '#2cf4fd', // 边框颜色
|
|
||||||
borderWidth: 1, // 边框宽度
|
|
||||||
textStyle: {
|
|
||||||
color: '#fff', // 文字颜色
|
|
||||||
fontSize: 12,
|
|
||||||
},
|
|
||||||
formatter: '{b} ({c})',
|
formatter: '{b} ({c})',
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
@ -81,11 +74,6 @@ export default {
|
|||||||
}
|
}
|
||||||
option.series[0].data = props.chartData;
|
option.series[0].data = props.chartData;
|
||||||
setOptions(option);
|
setOptions(option);
|
||||||
startAutoPlay({
|
|
||||||
interval: 2000,
|
|
||||||
seriesIndex: 0,
|
|
||||||
showTooltip: true,
|
|
||||||
});
|
|
||||||
resize();
|
resize();
|
||||||
getInstance()?.off('click', onClick);
|
getInstance()?.off('click', onClick);
|
||||||
getInstance()?.on('click', onClick);
|
getInstance()?.on('click', onClick);
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="state.visible"
|
v-model="state.visible"
|
||||||
draggable
|
draggable
|
||||||
append-to-body
|
title="文件导入"
|
||||||
:title="title"
|
|
||||||
width="50%"
|
width="50%"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
@ -17,7 +16,7 @@
|
|||||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||||
<div class="el-upload__text">将文件放在此处或单击上传</div>
|
<div class="el-upload__text">将文件放在此处或单击上传</div>
|
||||||
<template #tip>
|
<template #tip>
|
||||||
<div class="el-upload__tip">仅允许导入xls、xlsx格式文件,excel文件大小小于500kb</div>
|
<div class="el-upload__tip">excel文件大小小于500kb</div>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -30,10 +29,6 @@
|
|||||||
import { reactive, ref, shallowRef } from 'vue';
|
import { reactive, ref, shallowRef } from 'vue';
|
||||||
import { isEmpty } from '@/utils';
|
import { isEmpty } from '@/utils';
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: '文件导入',
|
|
||||||
},
|
|
||||||
tips: {
|
tips: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '提示:导入前请先下载模板填写信息,然后再导入!',
|
default: '提示:导入前请先下载模板填写信息,然后再导入!',
|
||||||
|
@ -1,144 +0,0 @@
|
|||||||
<template>
|
|
||||||
<section class="custom_number_select_" style="">
|
|
||||||
<el-input-number
|
|
||||||
v-model="data.num"
|
|
||||||
:precision="_numberSet.precision"
|
|
||||||
:step="_numberSet.step"
|
|
||||||
:min="_numberSet.min"
|
|
||||||
:controls-position="_numberSet.controlsPosition"
|
|
||||||
@change="handleChange"
|
|
||||||
>
|
|
||||||
</el-input-number>
|
|
||||||
<el-select v-model="data.value1" class="_center" @change="handleChange">
|
|
||||||
<el-option
|
|
||||||
v-for="item in props.options1"
|
|
||||||
:key="'custom_' + Date.now() + item[props.prop.value]"
|
|
||||||
:label="item[props.prop.label]"
|
|
||||||
:value="item[props.prop.value]"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
<el-select v-model="data.value2" @change="handleChange">
|
|
||||||
<el-option
|
|
||||||
v-for="item in props.options2"
|
|
||||||
:key="'custom_' + Date.now() + item[props.prop.value]"
|
|
||||||
:label="item[props.prop.label]"
|
|
||||||
:value="item[props.prop.value]"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { ref, watchEffect } from 'vue';
|
|
||||||
|
|
||||||
const emit = defineEmits(['update:value']);
|
|
||||||
const props = defineProps({
|
|
||||||
value: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {
|
|
||||||
num: 1,
|
|
||||||
value1: '1',
|
|
||||||
value2: '1',
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
options1: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [
|
|
||||||
{
|
|
||||||
value: '1',
|
|
||||||
label: 'value1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '2',
|
|
||||||
label: 'value2',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '3',
|
|
||||||
label: 'value3',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
options2: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [
|
|
||||||
{
|
|
||||||
value: '1',
|
|
||||||
label: '_value1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '2',
|
|
||||||
label: '_value2',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '3',
|
|
||||||
label: '_value3',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
set: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
numberSet: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
prop: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return { label: 'label', value: 'value' };
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const _numberSet = ref({
|
|
||||||
precision: 2,
|
|
||||||
step: 1,
|
|
||||||
min: 1,
|
|
||||||
controlsPosition: 'right',
|
|
||||||
});
|
|
||||||
const data = ref({
|
|
||||||
num: 1,
|
|
||||||
value1: '1',
|
|
||||||
value2: '1',
|
|
||||||
});
|
|
||||||
watchEffect(() => {
|
|
||||||
data.value = Object.assign(data.value, props.value);
|
|
||||||
_numberSet.value = Object.assign(_numberSet.value, props.numberSet);
|
|
||||||
if (data.value.num === null) {
|
|
||||||
data.value.num = _numberSet.value.min;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function handleChange() {
|
|
||||||
emit('update:value', data.value);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.custom_number_select_ {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 56% 22% 22%;
|
|
||||||
::v-deep() {
|
|
||||||
.el-input-number {
|
|
||||||
width: 100%;
|
|
||||||
.el-input__wrapper {
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.el-select__wrapper {
|
|
||||||
border-radius: 0 4px 4px 0 !important;
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
._center {
|
|
||||||
.el-select__wrapper {
|
|
||||||
border-radius: 0 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,112 +0,0 @@
|
|||||||
<template>
|
|
||||||
<section class="custom_number_select_" style="">
|
|
||||||
<el-input-number
|
|
||||||
v-model="data.num"
|
|
||||||
:precision="_numberSet.precision"
|
|
||||||
:step="_numberSet.step"
|
|
||||||
:min="_numberSet.min"
|
|
||||||
:controls-position="_numberSet.controlsPosition"
|
|
||||||
@change="handleChange"
|
|
||||||
>
|
|
||||||
</el-input-number>
|
|
||||||
<el-select v-model="data.type" @change="handleChange">
|
|
||||||
<el-option
|
|
||||||
v-for="item in props.options"
|
|
||||||
:key="'custom_' + Date.now() + item[props.prop.value]"
|
|
||||||
:label="item[props.prop.label]"
|
|
||||||
:value="item[props.prop.value]"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</section>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { ref, watchEffect } from 'vue';
|
|
||||||
|
|
||||||
const emit = defineEmits(['update:value']);
|
|
||||||
const props = defineProps({
|
|
||||||
value: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {
|
|
||||||
num: 1,
|
|
||||||
type: '1',
|
|
||||||
};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
options: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [
|
|
||||||
{
|
|
||||||
value: '1',
|
|
||||||
label: 'value1',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '2',
|
|
||||||
label: 'value2',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: '3',
|
|
||||||
label: 'value3',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
set: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
numberSet: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
},
|
|
||||||
prop: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {
|
|
||||||
return { label: 'label', value: 'value' };
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const _numberSet = ref({
|
|
||||||
precision: 2,
|
|
||||||
step: 1,
|
|
||||||
min: 1,
|
|
||||||
controlsPosition: 'right',
|
|
||||||
});
|
|
||||||
const data = ref({
|
|
||||||
num: 1,
|
|
||||||
type: '1',
|
|
||||||
});
|
|
||||||
watchEffect(() => {
|
|
||||||
data.value = Object.assign(data.value, props.value);
|
|
||||||
_numberSet.value = Object.assign(_numberSet.value, props.numberSet);
|
|
||||||
if (data.value.num === null) {
|
|
||||||
data.value.num = _numberSet.value.min;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
function handleChange() {
|
|
||||||
emit('update:value', data.value);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.custom_number_select_ {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 75% 25%;
|
|
||||||
::v-deep() {
|
|
||||||
.el-input-number {
|
|
||||||
width: 100%;
|
|
||||||
.el-input__wrapper {
|
|
||||||
border-radius: 4px 0 0 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.el-select__wrapper {
|
|
||||||
border-radius: 0 4px 4px 0 !important;
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -19,8 +19,6 @@ import CustomEchartPieGauge from './custom-echart-pie-gauge';
|
|||||||
import CustomEchartWordCloud from './custom-echart-word-cloud';
|
import CustomEchartWordCloud from './custom-echart-word-cloud';
|
||||||
import customEchartScatterBlister from './custom-echart-scatter-blister';
|
import customEchartScatterBlister from './custom-echart-scatter-blister';
|
||||||
import customEchartMaps from './custom-echart-maps';
|
import customEchartMaps from './custom-echart-maps';
|
||||||
import customNumberSelect from './custom-number-select';
|
|
||||||
import customNumberSelectDouble from './custom-number-select-double';
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
SvgIcon,
|
SvgIcon,
|
||||||
@ -44,6 +42,4 @@ export {
|
|||||||
CustomEchartWordCloud,
|
CustomEchartWordCloud,
|
||||||
customEchartScatterBlister,
|
customEchartScatterBlister,
|
||||||
customEchartMaps,
|
customEchartMaps,
|
||||||
customNumberSelect,
|
|
||||||
customNumberSelectDouble,
|
|
||||||
};
|
};
|
||||||
|
@ -6,57 +6,6 @@ import { useBreakpoint } from './useBreakpoint';
|
|||||||
import echarts from '../utils/echarts';
|
import echarts from '../utils/echarts';
|
||||||
|
|
||||||
export const useEcharts = (elRef, theme = 'default') => {
|
export const useEcharts = (elRef, theme = 'default') => {
|
||||||
// 新增轮播相关状态
|
|
||||||
const autoPlayTimer = ref(null);
|
|
||||||
const currentIndex = ref(-1);
|
|
||||||
const dataLength = ref(0);
|
|
||||||
|
|
||||||
// 新增方法 - 启动轮播
|
|
||||||
const startAutoPlay = (options = {}) => {
|
|
||||||
const {
|
|
||||||
interval = 2000, // 轮播间隔(ms)
|
|
||||||
seriesIndex = 0, // 默认操作第一个系列
|
|
||||||
showTooltip = true, // 是否显示提示框
|
|
||||||
} = options;
|
|
||||||
|
|
||||||
stopAutoPlay(); // 先停止已有轮播
|
|
||||||
|
|
||||||
// 获取数据长度
|
|
||||||
const seriesData = unref(getOptions).series?.[seriesIndex]?.data;
|
|
||||||
dataLength.value = seriesData?.length || 0;
|
|
||||||
if (dataLength.value === 0) return;
|
|
||||||
|
|
||||||
autoPlayTimer.value = setInterval(() => {
|
|
||||||
currentIndex.value = (currentIndex.value + 1) % dataLength.value;
|
|
||||||
|
|
||||||
// 执行轮播动作
|
|
||||||
chartInstance?.dispatchAction({
|
|
||||||
type: 'downplay',
|
|
||||||
seriesIndex: seriesIndex,
|
|
||||||
});
|
|
||||||
chartInstance?.dispatchAction({
|
|
||||||
type: 'highlight',
|
|
||||||
seriesIndex: seriesIndex,
|
|
||||||
dataIndex: currentIndex.value,
|
|
||||||
});
|
|
||||||
if (showTooltip) {
|
|
||||||
chartInstance?.dispatchAction({
|
|
||||||
type: 'showTip',
|
|
||||||
seriesIndex: seriesIndex,
|
|
||||||
dataIndex: currentIndex.value,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, interval);
|
|
||||||
};
|
|
||||||
|
|
||||||
// 新增方法 - 停止轮播
|
|
||||||
const stopAutoPlay = () => {
|
|
||||||
if (autoPlayTimer.value) {
|
|
||||||
clearInterval(autoPlayTimer.value);
|
|
||||||
autoPlayTimer.value = null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const getDarkMode = computed(() => {
|
const getDarkMode = computed(() => {
|
||||||
return theme === 'default' ? 'dark' : theme;
|
return theme === 'default' ? 'dark' : theme;
|
||||||
});
|
});
|
||||||
@ -82,39 +31,23 @@ export const useEcharts = (elRef, theme = 'default') => {
|
|||||||
if (!el || !unref(el)) {
|
if (!el || !unref(el)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
|
||||||
if (el.offsetWidth === 0 || el.offsetHeight === 0) {
|
|
||||||
// console.warn('图表容器不可见,延迟初始化');
|
|
||||||
useTimeoutFn(() => initCharts(t), 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
chartInstance = echarts.init(el, t);
|
chartInstance = echarts.init(el, t);
|
||||||
const { removeEvent } = useEventListener({
|
const { removeEvent } = useEventListener({
|
||||||
el: window,
|
el: window,
|
||||||
name: 'resize',
|
name: 'resize',
|
||||||
listener: resizeFn,
|
listener: resizeFn,
|
||||||
});
|
|
||||||
removeResizeFn = removeEvent;
|
|
||||||
const { widthRef } = useBreakpoint();
|
|
||||||
if (unref(widthRef) <= 768 || el.offsetHeight === 0) {
|
|
||||||
useTimeoutFn(() => {
|
|
||||||
resizeFn();
|
|
||||||
}, 30);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
removeResizeFn = removeEvent;
|
||||||
|
const { widthRef } = useBreakpoint();
|
||||||
|
if (unref(widthRef) <= 768 || el.offsetHeight === 0) {
|
||||||
|
useTimeoutFn(() => {
|
||||||
|
resizeFn();
|
||||||
|
}, 30);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setOptions(options = {}, clear = true) {
|
function setOptions(options = {}, clear = true) {
|
||||||
const mergedOptions = {
|
|
||||||
animation: true,
|
|
||||||
animationDuration: 3000,
|
|
||||||
animationEasing: 'cubicOut',
|
|
||||||
...unref(options),
|
|
||||||
animationThreshold: 2000, // 数据量超过2000自动关闭动画
|
|
||||||
animationDelayUpdate: (idx) => idx * 50, // 数据项延迟
|
|
||||||
};
|
|
||||||
cacheOptions.value = mergedOptions;
|
|
||||||
cacheOptions.value = options;
|
cacheOptions.value = options;
|
||||||
if (unref(elRef)?.offsetHeight === 0) {
|
if (unref(elRef)?.offsetHeight === 0) {
|
||||||
useTimeoutFn(() => {
|
useTimeoutFn(() => {
|
||||||
@ -165,7 +98,6 @@ export const useEcharts = (elRef, theme = 'default') => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
tryOnUnmounted(() => {
|
tryOnUnmounted(() => {
|
||||||
stopAutoPlay(); // 清理定时器
|
|
||||||
if (!chartInstance) return;
|
if (!chartInstance) return;
|
||||||
removeResizeFn();
|
removeResizeFn();
|
||||||
chartInstance.dispose();
|
chartInstance.dispose();
|
||||||
@ -183,9 +115,7 @@ export const useEcharts = (elRef, theme = 'default') => {
|
|||||||
setOptions,
|
setOptions,
|
||||||
resize,
|
resize,
|
||||||
echarts,
|
echarts,
|
||||||
getInstance: () => chartInstance,
|
getInstance,
|
||||||
registerMap,
|
registerMap,
|
||||||
startAutoPlay, // 暴露轮播方法
|
|
||||||
stopAutoPlay,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import actions from './actions';
|
import actions from './actions';
|
||||||
|
|
||||||
const { VITE_APP_SUB_OS, VITE_APP_SUB_ADMIN, VITE_APP_SUB_GAS, VITE_APP_SUB_GSS, VITE_APP_SUB_GSR } = import.meta.env;
|
const { VITE_APP_SUB_OS, VITE_APP_SUB_ADMIN, VITE_APP_SUB_GAS, VITE_APP_SUB_GSS } = import.meta.env;
|
||||||
|
|
||||||
export const leftApps = [
|
export const leftApps = [
|
||||||
{
|
{
|
||||||
@ -11,23 +11,23 @@ export const leftApps = [
|
|||||||
icon: 'images/platform/icon-home.png',
|
icon: 'images/platform/icon-home.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-operation-admin',
|
name: 'sub-admin',
|
||||||
entry: VITE_APP_SUB_OS,
|
entry: VITE_APP_SUB_ADMIN,
|
||||||
activeRule: '/sub-operation-admin',
|
activeRule: '/sub-admin',
|
||||||
title: '管理后台',
|
title: '管理后台',
|
||||||
icon: 'images/platform/icon-admin.png',
|
icon: 'images/platform/icon-admin.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-app',
|
name: 'sub-app',
|
||||||
entry: VITE_APP_SUB_GAS,
|
entry: VITE_APP_SUB_ADMIN,
|
||||||
activeRule: '/sub-app',
|
activeRule: '/sub-app',
|
||||||
title: 'APP',
|
title: 'APP',
|
||||||
icon: 'images/platform/icon-app.png',
|
icon: 'images/platform/icon-app.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-government-screen-service',
|
name: 'sub-screen',
|
||||||
entry: VITE_APP_SUB_GSS,
|
entry: VITE_APP_SUB_ADMIN,
|
||||||
activeRule: '/sub-government-screen-service',
|
activeRule: '/sub-screen',
|
||||||
title: '数据大屏',
|
title: '数据大屏',
|
||||||
icon: 'images/platform/icon-screen.png',
|
icon: 'images/platform/icon-screen.png',
|
||||||
},
|
},
|
||||||
@ -43,45 +43,28 @@ export const rightApps = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-government-admin',
|
name: 'sub-government-admin',
|
||||||
entry: VITE_APP_SUB_GAS,
|
entry: VITE_APP_SUB_ADMIN,
|
||||||
activeRule: '/sub-government-affairs-service',
|
activeRule: '/sub-government-admin',
|
||||||
title: '管理后台',
|
title: '管理后台',
|
||||||
icon: 'images/platform/icon-admin.png',
|
icon: 'images/platform/icon-admin.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-app',
|
name: 'sub-government-app',
|
||||||
entry: VITE_APP_SUB_GAS,
|
entry: VITE_APP_SUB_ADMIN,
|
||||||
activeRule: '/sub-app',
|
activeRule: '/sub-government-app',
|
||||||
title: 'APP',
|
title: 'APP',
|
||||||
icon: 'images/platform/icon-app.png',
|
icon: 'images/platform/icon-app.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// name: 'sub-government-screen-service',
|
name: 'sub-government-screen-service',
|
||||||
name: 'new-digital-agriculture-screen',
|
entry: VITE_APP_SUB_GSS,
|
||||||
// entry: VITE_APP_SUB_GSS,
|
activeRule: '/sub-government-screen-service',
|
||||||
entry: VITE_APP_SUB_GSR,
|
|
||||||
// activeRule: '/sub-government-screen-service',
|
|
||||||
activeRule: '/new-digital-agriculture-screen',
|
|
||||||
title: '数据大屏',
|
title: '数据大屏',
|
||||||
icon: 'images/platform/icon-screen.png',
|
icon: 'images/platform/icon-screen.png',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export const defaultApps = [
|
export const defaultApps = [
|
||||||
{
|
|
||||||
name: 'sub-operation-service',
|
|
||||||
entry: VITE_APP_SUB_OS,
|
|
||||||
activeRule: '/sub-operation-service',
|
|
||||||
title: '运营服务',
|
|
||||||
icon: 'images/platform/icon-home.png',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'sub-operation-admin',
|
|
||||||
entry: VITE_APP_SUB_OS,
|
|
||||||
activeRule: '/sub-operation-admin',
|
|
||||||
title: '运营管理后台',
|
|
||||||
icon: 'images/platform/icon-admin.png',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'sub-government-affairs-service',
|
name: 'sub-government-affairs-service',
|
||||||
entry: VITE_APP_SUB_GAS,
|
entry: VITE_APP_SUB_GAS,
|
||||||
@ -91,28 +74,23 @@ export const defaultApps = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'sub-government-screen-service',
|
name: 'sub-government-screen-service',
|
||||||
// name: 'new-digital-agriculture-screen',
|
|
||||||
entry: VITE_APP_SUB_GSS,
|
entry: VITE_APP_SUB_GSS,
|
||||||
// entry: VITE_APP_SUB_GSR,
|
|
||||||
activeRule: '/sub-government-screen-service',
|
activeRule: '/sub-government-screen-service',
|
||||||
// activeRule: '/new-digital-agriculture-screen',
|
|
||||||
title: '数据大屏',
|
title: '数据大屏',
|
||||||
icon: 'images/platform/icon-screen.png',
|
icon: 'images/platform/icon-screen.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
// name: 'sub-government-screen-service',
|
name: 'sub-operation-service',
|
||||||
name: 'new-digital-agriculture-screen',
|
entry: VITE_APP_SUB_OS,
|
||||||
// entry: VITE_APP_SUB_GSS,
|
activeRule: '/sub-operation-service',
|
||||||
entry: VITE_APP_SUB_GSR,
|
title: '运营服务',
|
||||||
// activeRule: '/sub-government-screen-service',
|
icon: 'images/platform/icon-home.png',
|
||||||
activeRule: '/new-digital-agriculture-screen',
|
|
||||||
title: '数据大屏',
|
|
||||||
icon: 'images/platform/icon-screen.png',
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// export const microApps = [...defaultApps, ...leftApps, ...rightApps];
|
||||||
export const microApps = [...defaultApps];
|
export const microApps = [...defaultApps];
|
||||||
console.log(microApps);
|
|
||||||
const apps = microApps.map((item) => {
|
const apps = microApps.map((item) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
|
@ -2,18 +2,6 @@
|
|||||||
<div class="platform">
|
<div class="platform">
|
||||||
<h2 class="platform-title">数字农业产业管理平台</h2>
|
<h2 class="platform-title">数字农业产业管理平台</h2>
|
||||||
<div class="platform-panel">
|
<div class="platform-panel">
|
||||||
<div class="platform-panel-item">
|
|
||||||
<div class="icon"><img :src="getAssetsFile('images/platform/icon-zw.png')" /></div>
|
|
||||||
<b>农业产业政务服务平台</b>
|
|
||||||
<ul class="entry">
|
|
||||||
<li v-for="item in rightApps" :key="item.name" @click="gotoPage(item)">
|
|
||||||
<span class="entry-icon">
|
|
||||||
<img :src="getAssetsFile(item.icon)" />
|
|
||||||
</span>
|
|
||||||
<span class="entry-name">{{ item.title }} </span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="platform-panel-item">
|
<div class="platform-panel-item">
|
||||||
<div class="icon"><img :src="getAssetsFile('images/platform/icon-yy.png')" /></div>
|
<div class="icon"><img :src="getAssetsFile('images/platform/icon-yy.png')" /></div>
|
||||||
<b>农业产业运营服务平台</b>
|
<b>农业产业运营服务平台</b>
|
||||||
@ -26,17 +14,28 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="platform-panel-item">
|
||||||
|
<div class="icon"><img :src="getAssetsFile('images/platform/icon-zw.png')" /></div>
|
||||||
|
<b>农业产业政务服务平台</b>
|
||||||
|
<ul class="entry">
|
||||||
|
<li v-for="item in rightApps" :key="item.name" @click="gotoPage(item)">
|
||||||
|
<span class="entry-icon">
|
||||||
|
<img :src="getAssetsFile(item.icon)" />
|
||||||
|
</span>
|
||||||
|
<span class="entry-name">{{ item.title }} </span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { leftApps, rightApps } from '@/micro/app';
|
import { leftApps, rightApps, microApps } from '@/micro/app';
|
||||||
|
import actions from '@/micro/actions';
|
||||||
import { getAssetsFile } from '@/utils';
|
import { getAssetsFile } from '@/utils';
|
||||||
|
|
||||||
const gotoPage = (row) => {
|
const gotoPage = (row) => {
|
||||||
console.log(row);
|
|
||||||
console.log(window.history.pushState({}, row.name, row.activeRule));
|
|
||||||
window.history.pushState({}, row.name, row.activeRule);
|
window.history.pushState({}, row.name, row.activeRule);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*.{js,jsx,ts,tsx,vue}]
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
end_of_line = auto
|
|
@ -1,19 +0,0 @@
|
|||||||
# 开发环境
|
|
||||||
# VITE_PORT = 9530
|
|
||||||
# VITE_APP_NAME = 'new-digital-agriculture-screen'
|
|
||||||
# VITE_APP_TITLE = '政务云数字农业智慧大屏'
|
|
||||||
# VITE_APP_BASE_API = '/apis'
|
|
||||||
# VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
|
|
||||||
|
|
||||||
|
|
||||||
# 开发环境
|
|
||||||
VITE_PORT = 9530
|
|
||||||
VITE_MODE = 'DEV'
|
|
||||||
VITE_APP_TITLE = '政务云数字农业智慧大屏'
|
|
||||||
VITE_APP_MIAN = 'daimp-front-main'
|
|
||||||
VITE_APP_MIAN_URL = 'http://localhost:9530'
|
|
||||||
VITE_APP_NAME = 'new-digital-agriculture-screen'
|
|
||||||
VITE_APP_BASE_API = '/apis'
|
|
||||||
VITE_APP_BASE_URL = 'http://192.168.18.99:8080'
|
|
||||||
VITE_APP_UPLOAD_API = '/uploadApis'
|
|
||||||
VITE_APP_UPLOAD_URL = 'http://192.168.18.99:9300'
|
|
@ -1,14 +0,0 @@
|
|||||||
# 生产环境
|
|
||||||
# VITE_APP_NAME = 'new-digital-agriculture-screen'
|
|
||||||
# VITE_APP_TITLE = '政务云数字农业智慧大屏'
|
|
||||||
# VITE_APP_BASE_API = '/apis'
|
|
||||||
# VITE_APP_BASE_URL = ''
|
|
||||||
|
|
||||||
VITE_APP_MIAN = 'daimp-front-main'
|
|
||||||
VITE_APP_MIAN_URL = 'http://47.109.205.240:88'
|
|
||||||
VITE_APP_NAME = 'new-digital-agriculture-screen'
|
|
||||||
# 接口
|
|
||||||
VITE_APP_BASE_API = '/apis'
|
|
||||||
VITE_APP_BASE_URL = ''
|
|
||||||
VITE_APP_UPLOAD_API = '/uploadApis'
|
|
||||||
VITE_APP_UPLOAD_URL = ''
|
|
@ -1,14 +0,0 @@
|
|||||||
*.sh
|
|
||||||
*.md
|
|
||||||
*.woff
|
|
||||||
*.ttf
|
|
||||||
.vscode
|
|
||||||
.idea
|
|
||||||
.husky
|
|
||||||
.local
|
|
||||||
dist
|
|
||||||
src/assets
|
|
||||||
node_modules
|
|
||||||
Dockerfile
|
|
||||||
stats.html
|
|
||||||
tailwind.config.js
|
|
@ -1,62 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Descripttion: .eslintrc.cjs
|
|
||||||
* 在VSCode中安装ESLint插件,编写过程中检测代码质量
|
|
||||||
* ESLint 代码质量校验相关配置
|
|
||||||
* 这里使用prettier作为代码格式化工具,用ESLint做代码质检
|
|
||||||
* 相关配置使用下面extends扩展先做默认设置
|
|
||||||
* 在.prettierrc.cjs文件中配置好后,格式化规则会以.prettierrc.cjs作为最终格式,所以不建议在本文件中做代码格式化相关配置
|
|
||||||
* 相关prettier配置ESLint会默认加载为代码质检 格式化以prettier为主
|
|
||||||
* 在本配置文件中只做代码质量约束规范配置
|
|
||||||
* @Author: zenghua.wang
|
|
||||||
* @Date: 2022-09-22 15:53:58
|
|
||||||
* @LastEditors: zenghua.wang
|
|
||||||
* @LastEditTime: 2024-03-22 10:19:39
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
es2021: true,
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
extends: [
|
|
||||||
'eslint-config-prettier',
|
|
||||||
'eslint:recommended',
|
|
||||||
// 'plugin:@typescript-eslint/recommended',
|
|
||||||
'plugin:vue/vue3-recommended',
|
|
||||||
'plugin:vue/vue3-essential',
|
|
||||||
'plugin:prettier/recommended',
|
|
||||||
],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
env: {
|
|
||||||
node: true,
|
|
||||||
},
|
|
||||||
files: ['.eslintrc.{js,cjs}'],
|
|
||||||
parserOptions: {
|
|
||||||
sourceType: 'script',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
parserOptions: {
|
|
||||||
ecmaVersion: 'latest',
|
|
||||||
sourceType: 'module',
|
|
||||||
requireConfigFile: false,
|
|
||||||
parser: '@babel/eslint-parser',
|
|
||||||
// parser: '@typescript-eslint/parser',
|
|
||||||
},
|
|
||||||
plugins: ['vue', 'prettier'],
|
|
||||||
globals: {
|
|
||||||
defineProps: 'readonly',
|
|
||||||
defineEmits: 'readonly',
|
|
||||||
defineExpose: 'readonly',
|
|
||||||
withDefaults: 'readonly',
|
|
||||||
},
|
|
||||||
// 这里时配置规则的,自己看情况配置
|
|
||||||
rules: {
|
|
||||||
'prettier/prettier': 'error',
|
|
||||||
'no-debugger': 'off',
|
|
||||||
'no-unused-vars': 'off',
|
|
||||||
'vue/no-unused-vars': 'off',
|
|
||||||
'vue/multi-word-component-names': 'off',
|
|
||||||
},
|
|
||||||
};
|
|
115
new-digital-agriculture-screen/.gitignore
vendored
@ -1,115 +0,0 @@
|
|||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
# .env
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
.parcel-cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
out
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
# yarn v2
|
|
||||||
.yarn/cache
|
|
||||||
.yarn/unplugged
|
|
||||||
.yarn/build-state.yml
|
|
||||||
.yarn/install-state.gz
|
|
||||||
.pnp.*
|
|
@ -1,52 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Descripttion: .prettierrc.cjs
|
|
||||||
* 在VSCode中安装prettier插件 打开插件配置填写`.prettierrc.js` 将本文件作为其代码格式化规范
|
|
||||||
* 在本文件中修改格式化规则,不会同时触发改变ESLint代码检查,所以每次修改本文件需要重启VSCode,ESLint检查才能同步代码格式化
|
|
||||||
* 需要相应的代码格式化规范请自行查阅配置,下面为默认项目配置
|
|
||||||
* @Author: zenghua.wang
|
|
||||||
* @Date: 2022-09-22 15:53:58
|
|
||||||
* @LastEditors: zenghua.wang
|
|
||||||
* @LastEditTime: 2024-01-24 19:22:25
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
// 一行最多多少个字符
|
|
||||||
printWidth: 150,
|
|
||||||
// 指定每个缩进级别的空格数
|
|
||||||
tabWidth: 2,
|
|
||||||
// 使用制表符而不是空格缩进行
|
|
||||||
useTabs: false,
|
|
||||||
// 在语句末尾是否需要分号
|
|
||||||
semi: true,
|
|
||||||
// 是否使用单引号
|
|
||||||
singleQuote: true,
|
|
||||||
// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
|
|
||||||
quoteProps: 'as-needed',
|
|
||||||
// 在JSX中使用单引号而不是双引号
|
|
||||||
jsxSingleQuote: false,
|
|
||||||
// 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
|
|
||||||
trailingComma: 'es5',
|
|
||||||
// 在对象文字中的括号之间打印空格
|
|
||||||
bracketSpacing: true,
|
|
||||||
// jsx 标签的反尖括号需要换行
|
|
||||||
jsxBracketSameLine: false,
|
|
||||||
// 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
|
|
||||||
arrowParens: 'always',
|
|
||||||
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
|
|
||||||
rangeStart: 0,
|
|
||||||
rangeEnd: Infinity,
|
|
||||||
// 指定要使用的解析器,不需要写文件开头的 @prettier
|
|
||||||
requirePragma: false,
|
|
||||||
// 不需要自动在文件开头插入 @prettier
|
|
||||||
insertPragma: false,
|
|
||||||
// 使用默认的折行标准 always\never\preserve
|
|
||||||
proseWrap: 'preserve',
|
|
||||||
// 指定HTML文件的全局空格敏感度 css\strict\ignore
|
|
||||||
htmlWhitespaceSensitivity: 'css',
|
|
||||||
// Vue文件脚本和样式标签缩进
|
|
||||||
vueIndentScriptAndStyle: false,
|
|
||||||
//在 windows 操作系统中换行符通常是回车 (CR) 加换行分隔符 (LF),也就是回车换行(CRLF),
|
|
||||||
//然而在 Linux 和 Unix 中只使用简单的换行分隔符 (LF)。
|
|
||||||
//对应的控制字符为 "\n" (LF) 和 "\r\n"(CRLF)。auto意为保持现有的行尾
|
|
||||||
// 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
|
|
||||||
endOfLine: 'auto',
|
|
||||||
};
|
|
@ -1,17 +0,0 @@
|
|||||||
# .stylelintignore
|
|
||||||
# 旧的不需打包的样式库
|
|
||||||
*.min.css
|
|
||||||
|
|
||||||
# 其他类型文件
|
|
||||||
*.js
|
|
||||||
*.jpg
|
|
||||||
*.png
|
|
||||||
*.eot
|
|
||||||
*.ttf
|
|
||||||
*.woff
|
|
||||||
*.json
|
|
||||||
|
|
||||||
# 测试和打包目录
|
|
||||||
/dist/*
|
|
||||||
/node_modules/*
|
|
||||||
/src/assets/*
|
|
@ -1,131 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Descripttion: .stylelintrc.cjs
|
|
||||||
* @Author: zenghua.wang
|
|
||||||
* @Date: 2022-09-22 15:53:58
|
|
||||||
* @LastEditors: zenghua.wang
|
|
||||||
* @LastEditTime: 2024-01-24 18:49:26
|
|
||||||
*/
|
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
plugins: ['stylelint-order', 'stylelint-scss'],
|
|
||||||
extends: [
|
|
||||||
'stylelint-config-standard',
|
|
||||||
'stylelint-config-standard-scss',
|
|
||||||
'stylelint-config-prettier',
|
|
||||||
'stylelint-config-html/vue',
|
|
||||||
'stylelint-config-recommended-vue',
|
|
||||||
'stylelint-config-recommended-scss'
|
|
||||||
],
|
|
||||||
overrides: [
|
|
||||||
{
|
|
||||||
files: ['**/*.{html,vue}'],
|
|
||||||
customSyntax: 'postcss-html'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
indentation: 2,
|
|
||||||
'selector-pseudo-element-no-unknown': [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
ignorePseudoElements: ['v-deep', ':deep']
|
|
||||||
}
|
|
||||||
],
|
|
||||||
'number-leading-zero': 'always',
|
|
||||||
'no-descending-specificity': null,
|
|
||||||
'function-url-quotes': 'always',
|
|
||||||
'string-quotes': 'single',
|
|
||||||
'unit-case': null,
|
|
||||||
'color-hex-case': 'lower',
|
|
||||||
'color-hex-length': 'long',
|
|
||||||
'rule-empty-line-before': 'never',
|
|
||||||
'font-family-no-missing-generic-family-keyword': null,
|
|
||||||
'selector-type-no-unknown': null,
|
|
||||||
'block-opening-brace-space-before': 'always',
|
|
||||||
'at-rule-no-unknown': null,
|
|
||||||
'no-duplicate-selectors': null,
|
|
||||||
'property-no-unknown': null,
|
|
||||||
'no-empty-source': null,
|
|
||||||
'selector-class-pattern': null,
|
|
||||||
'keyframes-name-pattern': null,
|
|
||||||
'selector-pseudo-class-no-unknown': [true, { ignorePseudoClasses: ['global', 'deep'] }],
|
|
||||||
'function-no-unknown': null,
|
|
||||||
'order/properties-order': [
|
|
||||||
'position',
|
|
||||||
'top',
|
|
||||||
'right',
|
|
||||||
'bottom',
|
|
||||||
'left',
|
|
||||||
'z-index',
|
|
||||||
'display',
|
|
||||||
'justify-content',
|
|
||||||
'align-items',
|
|
||||||
'float',
|
|
||||||
'clear',
|
|
||||||
'overflow',
|
|
||||||
'overflow-x',
|
|
||||||
'overflow-y',
|
|
||||||
'margin',
|
|
||||||
'margin-top',
|
|
||||||
'margin-right',
|
|
||||||
'margin-bottom',
|
|
||||||
'margin-left',
|
|
||||||
'padding',
|
|
||||||
'padding-top',
|
|
||||||
'padding-right',
|
|
||||||
'padding-bottom',
|
|
||||||
'padding-left',
|
|
||||||
'width',
|
|
||||||
'min-width',
|
|
||||||
'max-width',
|
|
||||||
'height',
|
|
||||||
'min-height',
|
|
||||||
'max-height',
|
|
||||||
'font-size',
|
|
||||||
'font-family',
|
|
||||||
'font-weight',
|
|
||||||
'border',
|
|
||||||
'border-style',
|
|
||||||
'border-width',
|
|
||||||
'border-color',
|
|
||||||
'border-top',
|
|
||||||
'border-top-style',
|
|
||||||
'border-top-width',
|
|
||||||
'border-top-color',
|
|
||||||
'border-right',
|
|
||||||
'border-right-style',
|
|
||||||
'border-right-width',
|
|
||||||
'border-right-color',
|
|
||||||
'border-bottom',
|
|
||||||
'border-bottom-style',
|
|
||||||
'border-bottom-width',
|
|
||||||
'border-bottom-color',
|
|
||||||
'border-left',
|
|
||||||
'border-left-style',
|
|
||||||
'border-left-width',
|
|
||||||
'border-left-color',
|
|
||||||
'border-radius',
|
|
||||||
'text-align',
|
|
||||||
'text-justify',
|
|
||||||
'text-indent',
|
|
||||||
'text-overflow',
|
|
||||||
'text-decoration',
|
|
||||||
'white-space',
|
|
||||||
'color',
|
|
||||||
'background',
|
|
||||||
'background-position',
|
|
||||||
'background-repeat',
|
|
||||||
'background-size',
|
|
||||||
'background-color',
|
|
||||||
'background-clip',
|
|
||||||
'opacity',
|
|
||||||
'filter',
|
|
||||||
'list-style',
|
|
||||||
'outline',
|
|
||||||
'visibility',
|
|
||||||
'box-shadow',
|
|
||||||
'text-shadow',
|
|
||||||
'resize',
|
|
||||||
'transition'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,2 +0,0 @@
|
|||||||
{
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
nodeLinker: node-modules
|
|
75
new-digital-agriculture-screen/auto-imports.d.ts
vendored
@ -1,75 +0,0 @@
|
|||||||
/* eslint-disable */
|
|
||||||
/* prettier-ignore */
|
|
||||||
// @ts-nocheck
|
|
||||||
// noinspection JSUnusedGlobalSymbols
|
|
||||||
// Generated by unplugin-auto-import
|
|
||||||
export {}
|
|
||||||
declare global {
|
|
||||||
const EffectScope: typeof import('vue')['EffectScope']
|
|
||||||
const computed: typeof import('vue')['computed']
|
|
||||||
const createApp: typeof import('vue')['createApp']
|
|
||||||
const customRef: typeof import('vue')['customRef']
|
|
||||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
|
||||||
const defineComponent: typeof import('vue')['defineComponent']
|
|
||||||
const effectScope: typeof import('vue')['effectScope']
|
|
||||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
|
||||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
|
||||||
const h: typeof import('vue')['h']
|
|
||||||
const inject: typeof import('vue')['inject']
|
|
||||||
const isProxy: typeof import('vue')['isProxy']
|
|
||||||
const isReactive: typeof import('vue')['isReactive']
|
|
||||||
const isReadonly: typeof import('vue')['isReadonly']
|
|
||||||
const isRef: typeof import('vue')['isRef']
|
|
||||||
const markRaw: typeof import('vue')['markRaw']
|
|
||||||
const nextTick: typeof import('vue')['nextTick']
|
|
||||||
const onActivated: typeof import('vue')['onActivated']
|
|
||||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
|
||||||
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
|
||||||
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
|
||||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
|
||||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
|
||||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
|
||||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
|
||||||
const onMounted: typeof import('vue')['onMounted']
|
|
||||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
|
||||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
|
||||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
|
||||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
|
||||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
|
||||||
const onUpdated: typeof import('vue')['onUpdated']
|
|
||||||
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
|
|
||||||
const provide: typeof import('vue')['provide']
|
|
||||||
const reactive: typeof import('vue')['reactive']
|
|
||||||
const readonly: typeof import('vue')['readonly']
|
|
||||||
const ref: typeof import('vue')['ref']
|
|
||||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
|
||||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
|
||||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
|
||||||
const shallowRef: typeof import('vue')['shallowRef']
|
|
||||||
const toRaw: typeof import('vue')['toRaw']
|
|
||||||
const toRef: typeof import('vue')['toRef']
|
|
||||||
const toRefs: typeof import('vue')['toRefs']
|
|
||||||
const toValue: typeof import('vue')['toValue']
|
|
||||||
const triggerRef: typeof import('vue')['triggerRef']
|
|
||||||
const unref: typeof import('vue')['unref']
|
|
||||||
const useAttrs: typeof import('vue')['useAttrs']
|
|
||||||
const useCssModule: typeof import('vue')['useCssModule']
|
|
||||||
const useCssVars: typeof import('vue')['useCssVars']
|
|
||||||
const useId: typeof import('vue')['useId']
|
|
||||||
const useLink: typeof import('vue-router')['useLink']
|
|
||||||
const useModel: typeof import('vue')['useModel']
|
|
||||||
const useRoute: typeof import('vue-router')['useRoute']
|
|
||||||
const useRouter: typeof import('vue-router')['useRouter']
|
|
||||||
const useSlots: typeof import('vue')['useSlots']
|
|
||||||
const useTemplateRef: typeof import('vue')['useTemplateRef']
|
|
||||||
const watch: typeof import('vue')['watch']
|
|
||||||
const watchEffect: typeof import('vue')['watchEffect']
|
|
||||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
|
||||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
|
||||||
}
|
|
||||||
// for type re-export
|
|
||||||
declare global {
|
|
||||||
// @ts-ignore
|
|
||||||
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
|
||||||
import('vue')
|
|
||||||
}
|
|
@ -7,13 +7,7 @@ export {}
|
|||||||
|
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
<<<<<<< HEAD
|
|
||||||
CenterMap: typeof import('./src/components/centerMap.vue')['default']
|
CenterMap: typeof import('./src/components/centerMap.vue')['default']
|
||||||
=======
|
|
||||||
BaseBg: typeof import('./src/components/baseBg.vue')['default']
|
|
||||||
CenterMap: typeof import('./src/components/centerMap.vue')['default']
|
|
||||||
'CenterMap copy': typeof import('./src/components/centerMap copy.vue')['default']
|
|
||||||
>>>>>>> maps
|
|
||||||
CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default']
|
CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default']
|
||||||
Components: typeof import('./src/components/index.js')['default']
|
Components: typeof import('./src/components/index.js')['default']
|
||||||
copy: typeof import('./src/components/centerMap copy.vue')['default']
|
copy: typeof import('./src/components/centerMap copy.vue')['default']
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/logo.png" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>政务云数字农业智慧大屏</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script type="module" src="/src/main.js"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
13213
new-digital-agriculture-screen/package-lock.json
generated
@ -1,84 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "digital-agriculture-screen",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.1",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite --mode development",
|
|
||||||
"build": "vite build --mode production",
|
|
||||||
"test": "vite build --mode test",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'",
|
|
||||||
"eslint": "npx eslint --init",
|
|
||||||
"lint": "npm run lint:script && npm run lint:style",
|
|
||||||
"lint:style": "stylelint 'src/**/*.{vue,scss,css,sass,less}' --fix",
|
|
||||||
"lint:script": "eslint --ext .js,.ts,.tsx,.vue --fix --quiet ./src"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@element-plus/icons-vue": "^2.3.1",
|
|
||||||
"@smallwei/avue": "^3.6.2",
|
|
||||||
"@vuemap/vue-amap": "^2.0",
|
|
||||||
"@vuemap/vue-amap-loca": "^2.0",
|
|
||||||
"@wangeditor/editor": "^5.1.23",
|
|
||||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
|
||||||
"animate.css": "^4.1.1",
|
|
||||||
"axios": "^1.6.5",
|
|
||||||
"echarts": "^5.6.0",
|
|
||||||
"echarts-gl": "^2.0.9",
|
|
||||||
"echarts-liquidfill": "^3.1.0",
|
|
||||||
"echarts-wordcloud": "^2.1.0",
|
|
||||||
"element-plus": "^2.7.2",
|
|
||||||
"js-base64": "^3.7.6",
|
|
||||||
"lodash": "^4.17.21",
|
|
||||||
"moment": "^2.30.1",
|
|
||||||
"nprogress": "^0.2.0",
|
|
||||||
"path-browserify": "^1.0.1",
|
|
||||||
"pinia": "^2.1.7",
|
|
||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
|
||||||
"screenfull": "^6.0.2",
|
|
||||||
"vue": "^3.3.11",
|
|
||||||
"vue-cesium": "^3.2.9",
|
|
||||||
"vue-echarts": "^7.0.3",
|
|
||||||
"vue-router": "^4.2.5",
|
|
||||||
"vue3-scroll-seamless": "^1.0.6"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.23.7",
|
|
||||||
"@babel/eslint-parser": "^7.23.3",
|
|
||||||
"@types/path-browserify": "^1.0.2",
|
|
||||||
"@vitejs/plugin-vue": "^4.5.2",
|
|
||||||
"autoprefixer": "^10.4.17",
|
|
||||||
"eslint": "^8.56.0",
|
|
||||||
"eslint-config-prettier": "^9.1.0",
|
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
|
||||||
"eslint-plugin-vue": "^9.20.1",
|
|
||||||
"mockjs": "^1.1.0",
|
|
||||||
"postcss": "^8.4.33",
|
|
||||||
"postcss-html": "^1.6.0",
|
|
||||||
"postcss-import": "^16.0.0",
|
|
||||||
"prettier": "^3.2.4",
|
|
||||||
"sass": "^1.70.0",
|
|
||||||
"stylelint": "^16.2.0",
|
|
||||||
"stylelint-config-html": "^1.1.0",
|
|
||||||
"stylelint-config-prettier": "^9.0.5",
|
|
||||||
"stylelint-config-rational-order": "^0.1.2",
|
|
||||||
"stylelint-config-recommended": "^14.0.0",
|
|
||||||
"stylelint-config-recommended-scss": "^14.0.0",
|
|
||||||
"stylelint-config-recommended-vue": "^1.5.0",
|
|
||||||
"stylelint-config-standard": "^36.0.0",
|
|
||||||
"stylelint-config-standard-scss": "^13.0.0",
|
|
||||||
"stylelint-order": "^6.0.4",
|
|
||||||
"stylelint-scss": "^6.1.0",
|
|
||||||
"terser": "^5.27.0",
|
|
||||||
"unplugin-auto-import": "^0.17.3",
|
|
||||||
"unplugin-vue-components": "^0.26.0",
|
|
||||||
"vite": "^5.0.8",
|
|
||||||
"vite-plugin-compression": "^0.5.1",
|
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
|
||||||
"vite-plugin-mock": "^3.0.1",
|
|
||||||
"vite-plugin-progress": "^0.0.7",
|
|
||||||
"vite-plugin-qiankun": "^1.0.15",
|
|
||||||
"vite-plugin-svg-icons": "^2.0.1",
|
|
||||||
"vite-plugin-vue-setup-extend": "^0.4.0"
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 6.2 KiB |
@ -1,21 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-config-provider :size="size" :locale="zhCn">
|
|
||||||
<router-view />
|
|
||||||
</el-config-provider>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup name="app">
|
|
||||||
import { computed, ref, onMounted, onUnmounted } from 'vue';
|
|
||||||
import { useSettingStore } from '@/store/modules/setting';
|
|
||||||
// 配置element中文
|
|
||||||
import zhCn from 'element-plus/es/locale/lang/zh-cn';
|
|
||||||
import { createApp } from 'vue';
|
|
||||||
import App from './App.vue';
|
|
||||||
|
|
||||||
const SettingStore = useSettingStore();
|
|
||||||
// 配置全局组件大小
|
|
||||||
const size = computed(() => SettingStore.themeConfig.globalComSize);
|
|
||||||
</script>
|
|
||||||
<style lang="scss">
|
|
||||||
@import './styles/style';
|
|
||||||
</style>
|
|
@ -1,35 +0,0 @@
|
|||||||
// import request from '@/utils/axios';
|
|
||||||
// import { isEmpty } from '@/utils';
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * @Title: 获取字典
|
|
||||||
// */
|
|
||||||
// export function CommonDicData(params = { pageNum: 1, pageSize: 20, dictType: null }) {
|
|
||||||
// if (isEmpty(params?.dictType)) return;
|
|
||||||
// return request(`/system/dict/data/list`, {
|
|
||||||
// method: 'GET',
|
|
||||||
// apisType: 'dicData',
|
|
||||||
// params,
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * @Title: 上传图片
|
|
||||||
// */
|
|
||||||
// export function CommonUpload(data, params) {
|
|
||||||
// return request(`/upload`, {
|
|
||||||
// method: 'POST',
|
|
||||||
// apisType: 'upload',
|
|
||||||
// uploadType: 'multipart/form-data',
|
|
||||||
// data,
|
|
||||||
// params,
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //云南省所有区域信息
|
|
||||||
// export function getRegion(code) {
|
|
||||||
// let codeVal = code ? code : '530000';
|
|
||||||
// return request('/system/area/region?areaCode=' + codeVal, {
|
|
||||||
// method: 'GET',
|
|
||||||
// });
|
|
||||||
// }
|
|
@ -1,11 +0,0 @@
|
|||||||
import request from '@/utils/axios';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Title: 获取投入品信息
|
|
||||||
* https://doc.apipost.net/docs/detail/4516a8efdce0000?target_id=f010812312008&locale=zh-cn
|
|
||||||
*/
|
|
||||||
export function GetInputsInfo(code) {
|
|
||||||
return request('/inputGoods/inputView/getData', {
|
|
||||||
method: 'GET',
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
import request from '@/utils/axios';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Title: 获取土地信息
|
|
||||||
* https://doc.apipost.net/docs/detail/4516a8efdce0000?target_id=f010812312008&locale=zh-cn
|
|
||||||
*/
|
|
||||||
export function GetLandInfo(code) {
|
|
||||||
return request('/inputGoods/inputView/getData', {
|
|
||||||
method: 'GET',
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: 'JinBuTi';
|
|
||||||
/* 自定义字体名称 */
|
|
||||||
src: url('./DingTalk JinBuTi.ttf') format('truetype');
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Sans';
|
|
||||||
/* 自定义字体名称 */
|
|
||||||
src: url('./DingTalk Sans.ttf') format('truetype');
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 517 B |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 517 B |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 8.6 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 601 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 601 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 326 KiB |
Before Width: | Height: | Size: 431 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 702 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 853 KiB |
Before Width: | Height: | Size: 502 KiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 448 KiB |
Before Width: | Height: | Size: 828 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 223 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 296 B |
Before Width: | Height: | Size: 296 B |