-
+
+
+
+
+ 综合数据统计
+
+
+ 农村人口
+
+ 万人
+
+
+ 耕地面积
+
+ 万亩
+
+
+ 农业总产值
+
+ 亿元
+
+
+ 品牌农产品销售情况
+
+ 亿元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
diff --git a/sub-government-affairs-service/src/views/landManage/component/landsManage/index.vue b/sub-government-affairs-service/src/views/landManage/component/landsManage/index.vue
index 121e574..7d854a7 100644
--- a/sub-government-affairs-service/src/views/landManage/component/landsManage/index.vue
+++ b/sub-government-affairs-service/src/views/landManage/component/landsManage/index.vue
@@ -611,11 +611,11 @@ function newTree(arr, i) {
arr.forEach((v) => {
if (i == 0) {
v.value = v.id;
- v.label = v.prentLandType;
+ v.label = v.landType;
v.disabled = !v.children || !v.children.length;
} else {
v.value = v.id;
- v.label = v.childLandCategory;
+ v.label = v.landType;
}
if (v.children) v.children = newTree(v.children, i + 1);
});
diff --git a/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/history.vue b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/history.vue
index 92cc35e..7367685 100644
--- a/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/history.vue
+++ b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/history.vue
@@ -83,7 +83,7 @@ let currentRow = reactive({});
const loadList = () => {
if (isShowVal.value) {
- console.info('loadList', props);
+ // console.info('loadList', props);
getList();
}
};
diff --git a/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/inputsList.vue b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/inputsList.vue
new file mode 100644
index 0000000..45bfcd1
--- /dev/null
+++ b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/inputsList.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
diff --git a/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/stage.vue b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/stage.vue
index 5048fd1..ff1c7bb 100644
--- a/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/stage.vue
+++ b/sub-government-affairs-service/src/views/landManage/component/plantPlan/component/stage.vue
@@ -27,6 +27,22 @@
{{ stageObj[row.stage] }}
+
+ {{ row.operationDate }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -41,6 +57,7 @@ import { CRUD_OPTIONS } from '@/config';
import { useUserStore } from '@/store/modules/user';
import { getPlantingStage, savePlantingStage, editPlantingStage, delPlantingStage } from '@/apis/land.js';
import { isEmpty, imageToBase64, getAssetsFile, downloadFile } from '@/utils';
+import inputs from '../component/inputsList.vue';
const props = defineProps({
isShow: {
@@ -56,15 +73,16 @@ const props = defineProps({
});
const emit = defineEmits(['close']);
+let refinputs = ref(null);
const { VITE_APP_BASE_API } = import.meta.env;
const app = useApp();
const UserStore = useUserStore();
const stateCrudRef = ref(null);
const stageOptions = reactive([
- { value: '0', label: '苗期' },
- { value: '1', label: '花果期' },
- { value: '2', label: '采收期' },
+ { value: 0, label: '苗期' },
+ { value: 1, label: '花果期' },
+ { value: 2, label: '采收期' },
]);
const workOptions = reactive([
@@ -87,7 +105,7 @@ let currentRow = reactive({});
const loadList = () => {
if (isShowVal.value) {
- console.info('loadList', props);
+ // console.info('loadList', props);
getStageList();
}
};
@@ -120,29 +138,27 @@ const stageState = reactive({
addBtn: false,
selection: false,
group: [
- { label: '所属阶段', prop: 'stage' },
- { label: '作业类型', prop: 'workType' },
- { label: '作业时间', prop: 'operationDate' },
+ {
+ prop: 'inputs',
+ label: '投入品',
+ column: [
+ {
+ prop: 'input',
+ span: 24,
+ labelWidth: 0,
+ },
+ ],
+ },
],
column: [
- // {
- // label: '种植产物',
- // prop: 'cropId',
- // type: 'select',
- // remote: false,
- // width: '160px',
- // showOverflowTooltip: true,
- // props: {
- // label: 'crop',
- // value: 'id',
- // },
- // dicHeaders: {
- // authorization: UserStore.token,
- // },
- // dicUrl: `${VITE_APP_BASE_API}/land-resource/baseInfo/planTypePage?current=1&size=999`,
- // dicFormatter: (res) => res.data.records ?? [],
- // rules: [{ required: true, message: '请选择', trigger: 'blur' }],
- // },
+ {
+ prop: 'input',
+ label: '投入品',
+ editDisplay: false,
+ addDisplay: false,
+ span: 24,
+ labelWidth: 0,
+ },
{
label: '所属阶段',
prop: 'stage',
@@ -154,6 +170,8 @@ const stageState = reactive({
message: '请选择',
trigger: 'blur',
},
+ editDisplay: true,
+ addDisplay: true,
},
{
label: '作业类型',
@@ -174,21 +192,14 @@ const stageState = reactive({
dicFormatter: (res) => res.data.records ?? [],
rules: { required: true, message: '请选择', trigger: 'blur' },
change: handleWorkChange,
- },
- {
- label: '作业时间(多少天后)',
- prop: 'workTime',
- rules: { required: true, message: '请输入', trigger: 'blur' },
- props: {
- type: 'Number',
- },
- addDisabled: true,
- editDisplay: false,
- viewDisplay: false,
+ editDisplay: true,
+ addDisplay: true,
},
{
label: '作业时间',
- prop: 'operationDate',
+ prop: 'workTime',
+ rules: { required: true, message: '请输入', trigger: 'blur' },
+ addDisabled: true,
editDisplay: false,
addDisplay: false,
},
@@ -222,7 +233,11 @@ async function getStageList() {
.then((res) => {
if (res.code === 200) {
const { current, size, total, records } = res.data;
- stageState.data = records || [];
+ // stageState.data = records || [];
+ stageState.data =
+ records.map((m) => {
+ return { ...m, input: m.input ? JSON.parse(m.input) : [] };
+ }) || [];
stageState.pageData = {
currentPage: current || 1,
pageSize: size || 10,
@@ -285,19 +300,22 @@ const stageRowDel = (row, index, done) => {
.catch(() => {});
};
const stageRowEdit = (row) => {
+ stageState.currentRow = row;
stateCrudRef.value.rowEdit(row);
};
const onStateAdd = () => {
+ stageState.currentRow = {};
if (!currentRow.id) {
app.$message.error('请选择种植规划');
return;
}
- stateCrudRef.value.rowAdd();
+ stateCrudRef.value.rowAdd({});
};
const stageRowSave = (row, done, loading) => {
row.planId = currentRow.id;
+ row.input = JSON.stringify(refinputs.value ? refinputs.value.saveList() : []);
console.info('stageRowSave', row);
savePlantingStage({ ...row })
.then((res) => {
@@ -317,6 +335,7 @@ const stageRowSave = (row, done, loading) => {
const stageRowUpdate = (row, index, done, loading) => {
console.info('stageRowUpdate');
+ row.input = JSON.stringify(refinputs.value ? refinputs.value.saveList() : []);
editPlantingStage(row)
.then((res) => {
if (res.code === 200) {
diff --git a/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue b/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue
index 6df4b11..2517bdb 100644
--- a/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue
+++ b/sub-government-affairs-service/src/views/plantingAndBreeding/base/index.vue
@@ -2,7 +2,7 @@
-
+
-
批量删除
@@ -47,20 +46,21 @@ import { useRouter } from 'vue-router';
import { useApp } from '@/hooks';
import { useUserStore } from '@/store/modules/user';
import { CRUD_OPTIONS } from '@/config';
-import { isEmpty, mockData, sleep } from '@/utils';
+import { isEmpty, mockData, sleep, setDicData } from '@/utils';
+import { getLandsList } from '@/apis/land';
const { VITE_APP_BASE_API, VITE_APP_NAME } = import.meta.env;
const app = useApp();
const UserStore = useUserStore();
const router = useRouter();
const crudRef = ref(null);
-const landTypeData = ref([
+const treeData = ref([
{
label: '基地分类',
- id: '0',
+ id: null,
children: [
- { label: '种植基地', id: '01', children: [], pId: '0' },
- { label: '养殖基地', id: '02', children: [], pId: '0' },
+ { label: '种植基地', id: '1', children: [], pid: null },
+ { label: '养殖基地', id: '2', children: [], pid: null },
],
},
]);
@@ -114,38 +114,31 @@ const state = reactive({
label: '地块名',
prop: 'landName',
width: 200,
- formslot: true,
+ type: 'select',
+ props: {
+ label: 'landName',
+ value: 'id',
+ },
+ dicUrl: `${VITE_APP_BASE_API}/land-resource/landManage/page?current=1&size=20`,
+ dicHeaders: {
+ authorization: UserStore.token,
+ },
+ dicFormatter: (res) => res.data?.records ?? [],
+ filterable: true,
+ remote: true,
+ clearable: true,
+ remoteMethod: (val) => remoteLandList(val),
+ change: (val) => selectedChange(val),
rules: {
required: true,
- message: '请输入',
+ message: '请选择',
trigger: 'blur',
},
+ // addDisplay: true,
+ // editDisplay: true,
+ // viewDisplay: false,
+ // overHidden: true,
},
- // {
- // label: '地块名',
- // prop: 'p2',
- // width: 200,
- // type: 'select',
- // // addDisplay: true,
- // // editDisplay: true,
- // // viewDisplay: false,
- // // 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',
- // },
- // overHidden: true,
- // },
{
label: '区域位置',
prop: 'p3',
@@ -284,7 +277,7 @@ const loadData = async () => {
state.data = mockData(
{
p1: '耿马镇一号基地',
- p2: '耿马镇2025001号地块',
+ landName: '耿马镇2025001号地块',
p3: '耿马傣族佤族自治县/耿马镇',
p4: '1000',
p5: '张三',
@@ -418,4 +411,19 @@ const onDel = (rows = []) => {
const rowDel = (row, index, done) => {
onDel([row]);
};
+
+// 远程搜搜
+const remoteLandList = async (val) => {
+ if (isEmpty(val)) return;
+ const query = { landName: val, current: 1, size: 20 };
+ const res = await getLandsList(query);
+ if (res.code === 200) {
+ setDicData(state.options.column, 'landName', res.data.records);
+ }
+};
+
+// 选择赋值
+const selectedChange = ({ value, item }) => {
+ console.log(430, value, item, item.landName, item.address, item.area);
+};
diff --git a/sub-government-screen-service/src/components/currentTime.vue b/sub-government-screen-service/src/components/currentTime.vue
index 98bfce9..d596602 100644
--- a/sub-government-screen-service/src/components/currentTime.vue
+++ b/sub-government-screen-service/src/components/currentTime.vue
@@ -36,11 +36,19 @@ const startTime = () => {
const chearTime = () => {
if (interval.value) {
- interval.value = null;
clearInterval(interval.value);
+ interval.value = null;
}
};
+onMounted(() => {
+ // startTime();
+});
+
+onUnmounted(() => {
+ // chearTime();
+});
+
defineExpose({
startTime,
chearTime,
@@ -50,7 +58,7 @@ defineExpose({
.current-time-warp {
position: fixed;
right: 16px;
- top: 32px;
+ top: 24px;
color: #add8f1;
z-index: 2;
}
diff --git a/sub-government-screen-service/src/utils/index.js b/sub-government-screen-service/src/utils/index.js
index 661856d..8563816 100644
--- a/sub-government-screen-service/src/utils/index.js
+++ b/sub-government-screen-service/src/utils/index.js
@@ -466,3 +466,18 @@ export const endDate = (num = 0, type = 'month', formater = 'YYYY-MM-DD HH:mm:ss
if (typeof num === 'string') return dayjs(num).endOf(type).format(formater);
return num === 0 ? dayjs().endOf(type).format(formater) : dayjs().subtract(num, type).endOf(type).format(formater);
};
+
+/**
+ * @Title: 生成随机数
+ * @param len
+ * @returns
+ */
+export const randomNumber = (len) => {
+ let randomlen = len ? len : 10;
+ const chars = '0123456789';
+ let result = '';
+ for (let i = 0; i < randomlen; i++) {
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
+ }
+ return result;
+};
diff --git a/sub-government-screen-service/src/views/entities/components/entitiesStatistics.vue b/sub-government-screen-service/src/views/entities/components/entitiesStatistics.vue
index b5cbac7..0102615 100644
--- a/sub-government-screen-service/src/views/entities/components/entitiesStatistics.vue
+++ b/sub-government-screen-service/src/views/entities/components/entitiesStatistics.vue
@@ -62,10 +62,10 @@ const chartsData = reactive({
{ name: '耿马', value: 100, type: '合作社', seriesType: 'bar', stack: '耿马' },
{ name: '耿马', value: 60, type: '经营企业', seriesType: 'bar', stack: '耿马', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '耿马', value: 10, type: '趋势', seriesType: 'line' },
- { name: '大香乡', value: 20, type: '个体户', seriesType: 'bar', stack: '耿马' },
- { name: '大香乡', value: 20, type: '村集体', seriesType: 'bar', stack: '耿马' },
- { name: '大香乡', value: 80, type: '合作社', seriesType: 'bar', stack: '耿马' },
- { name: '大香乡', value: 40, type: '经营企业', seriesType: 'bar', stack: '耿马', itemStyle: { borderRadius: [8, 8, 0, 0] } },
+ { name: '大香乡', value: 20, type: '个体户', seriesType: 'bar', stack: '大香乡' },
+ { name: '大香乡', value: 20, type: '村集体', seriesType: 'bar', stack: '大香乡' },
+ { name: '大香乡', value: 80, type: '合作社', seriesType: 'bar', stack: '大香乡' },
+ { name: '大香乡', value: 40, type: '经营企业', seriesType: 'bar', stack: '大香乡', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '大香乡', value: 50, type: '趋势', seriesType: 'line' },
],
});
diff --git a/sub-government-screen-service/src/views/entities/components/entitieslist.vue b/sub-government-screen-service/src/views/entities/components/entitieslist.vue
index 2c62c5c..a32b52e 100644
--- a/sub-government-screen-service/src/views/entities/components/entitieslist.vue
+++ b/sub-government-screen-service/src/views/entities/components/entitieslist.vue
@@ -80,7 +80,7 @@ const classOptions = {
.item-td {
padding: 4px 6px;
&.td-title {
- color: #6cd1f9 !important;
+ color: #6beff9 !important;
}
&.zebra-b {
background: #051225 !important;
diff --git a/sub-government-screen-service/src/views/home/components/comprehensive.vue b/sub-government-screen-service/src/views/home/components/comprehensive.vue
index e3a9837..154d1be 100644
--- a/sub-government-screen-service/src/views/home/components/comprehensive.vue
+++ b/sub-government-screen-service/src/views/home/components/comprehensive.vue
@@ -156,7 +156,7 @@ watch(
font-size: 13px;
}
.value {
- color: #6cd1f9;
+ color: #6beff9;
font-size: 16px;
font-weight: bold;
margin-top: 6px;
diff --git a/sub-government-screen-service/src/views/home/components/inputs.vue b/sub-government-screen-service/src/views/home/components/inputs.vue
index ab7e27e..64c862f 100644
--- a/sub-government-screen-service/src/views/home/components/inputs.vue
+++ b/sub-government-screen-service/src/views/home/components/inputs.vue
@@ -142,7 +142,7 @@ watch(
font-size: 13px;
}
.value {
- color: #6cd1f9;
+ color: #6beff9;
font-size: 16px;
font-weight: bold;
margin-top: 6px;
diff --git a/sub-government-screen-service/src/views/home/components/plantBreedCharts.vue b/sub-government-screen-service/src/views/home/components/plantBreedCharts.vue
index 1a4ae45..8cbf8b2 100644
--- a/sub-government-screen-service/src/views/home/components/plantBreedCharts.vue
+++ b/sub-government-screen-service/src/views/home/components/plantBreedCharts.vue
@@ -16,7 +16,7 @@ const plantBreed = ref({
},
},
legend: {
- data: ['耕地', '林地', '建设用地'],
+ data: ['种植面积', '养殖面积', '种植基地', '养殖基地'],
right: '0', // 距离左侧10%的位置
top: 'middle', // 垂直居中
orient: 'vertical', // 图例垂直排列
@@ -46,9 +46,10 @@ const plantBreed = ref({
],
},
valData: [
- { value: 100, name: '耕地' },
- { value: 105, name: '林地' },
- { value: 217, name: '建设用地' },
+ { value: 100, name: '种植面积' },
+ { value: 105, name: '养殖面积' },
+ { value: 217, name: '种植基地' },
+ { value: 315, name: '养殖基地' },
],
});
diff --git a/sub-government-screen-service/src/views/home/components/rolllist.vue b/sub-government-screen-service/src/views/home/components/rolllist.vue
index 7f8194f..659e106 100644
--- a/sub-government-screen-service/src/views/home/components/rolllist.vue
+++ b/sub-government-screen-service/src/views/home/components/rolllist.vue
@@ -1,14 +1,18 @@
-
-
-
+
+
+
{{ item.title || '--' }}
{{ item.value || '0' }}
-
+
{{ '0' + (index + 1) }}
@@ -31,10 +35,25 @@ const props = defineProps({
});
let list = reactive(props.items);
+let refroll = ref(null);
const classOptions = {
singleHeight: 48,
};
+
+let datalist = computed(() => {
+ let maxwidth = refroll.value && refroll.value.clientWidth;
+ return list.map((m) => {
+ return { ...m, percent: parseInt(Number(parseInt(m.value) / max.value) * maxwidth) };
+ });
+});
+
+let max = computed(() => {
+ let valueList = new Set(list.map((item) => parseInt(item.value)));
+ let sortValue = [...valueList].sort((a, b) => b - a) || [];
+ // console.info('valueList', sortValue);
+ return sortValue.length ? sortValue[0] : 0;
+});
diff --git a/sub-government-screen-service/src/views/plant/components/pathologyCharts.vue b/sub-government-screen-service/src/views/plant/components/pathologyCharts.vue
new file mode 100644
index 0000000..a3ce4fb
--- /dev/null
+++ b/sub-government-screen-service/src/views/plant/components/pathologyCharts.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
diff --git a/sub-government-screen-service/src/views/plant/components/waterfertilizerCharts.vue b/sub-government-screen-service/src/views/plant/components/waterfertilizerCharts.vue
new file mode 100644
index 0000000..831f4a0
--- /dev/null
+++ b/sub-government-screen-service/src/views/plant/components/waterfertilizerCharts.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item[b] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-screen-service/src/views/plant/index.vue b/sub-government-screen-service/src/views/plant/index.vue
index 9a1af8f..ee44dd3 100644
--- a/sub-government-screen-service/src/views/plant/index.vue
+++ b/sub-government-screen-service/src/views/plant/index.vue
@@ -13,25 +13,37 @@
-
+
+
+
- 1-1
+
-
+
+
+
+
+
-
+
+
+
+
+
@@ -61,6 +73,10 @@
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import plantTypeCharts from './components/plantTypeCharts.vue';
+import insectPestsCharts from './components/insectPestsCharts';
+import pathologyCharts from './components/pathologyCharts.vue';
+import waterfertilizerCharts from './components/waterfertilizerCharts.vue';
+import irrigationCharts from './components/irrigationCharts.vue';