diff --git a/main/package.json b/main/package.json index a21b5b8..c302e24 100644 --- a/main/package.json +++ b/main/package.json @@ -24,6 +24,7 @@ "dayjs": "^1.11.11", "echarts": "^5.6.0", "echarts-gl": "^2.0.9", + "echarts-liquidfill": "^3.1.0", "element-plus": "^2.7.3", "file-saver": "^2.0.5", "js-base64": "^3.7.7", diff --git a/main/src/components/custom-echart-bar-line/index.vue b/main/src/components/custom-echart-radar/index.vue similarity index 52% rename from main/src/components/custom-echart-bar-line/index.vue rename to main/src/components/custom-echart-radar/index.vue index cdc2fc2..3efd034 100644 --- a/main/src/components/custom-echart-bar-line/index.vue +++ b/main/src/components/custom-echart-radar/index.vue @@ -1,23 +1,27 @@ - diff --git a/main/src/components/custom-table-tree/index.vue b/main/src/components/custom-table-tree/index.vue index 8a971cd..b891761 100644 --- a/main/src/components/custom-table-tree/index.vue +++ b/main/src/components/custom-table-tree/index.vue @@ -1,25 +1,34 @@ diff --git a/sub-government-affairs-service/src/views/home/index.vue b/sub-government-affairs-service/src/views/home/index.vue index dcc062d..5dfcbfd 100644 --- a/sub-government-affairs-service/src/views/home/index.vue +++ b/sub-government-affairs-service/src/views/home/index.vue @@ -1,6 +1,464 @@ - + + 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] }} + + + + + + @@ -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 @@