This commit is contained in:
李想 2025-04-08 09:27:53 +08:00
parent bf0b232f66
commit 0a8586b97e
7 changed files with 250 additions and 42 deletions

View File

@ -72,12 +72,12 @@ const inputSuppliesRoutes = [
// component: () => import('@/views/inputSuppliesManage/enterpriseDealerCheck/index.vue'), // component: () => import('@/views/inputSuppliesManage/enterpriseDealerCheck/index.vue'),
// meta: { title: '企业经销商抽检', icon: 'Document' }, // meta: { title: '企业经销商抽检', icon: 'Document' },
// }, // },
// { {
// path: '/sub-government-affairs-service/useSupervise', path: '/sub-government-affairs-service/useSupervise',
// name: 'useSupervise', name: 'useSupervise',
// component: () => import('@/views/inputSuppliesManage/useSupervise/index.vue'), component: () => import('@/views/inputSuppliesManage/useSupervise/index.vue'),
// meta: { title: '使用监管', icon: 'Document' }, meta: { title: '使用监管', icon: 'Document' },
// }, },
{ {
path: '/sub-government-affairs-service/leaseSupervise', path: '/sub-government-affairs-service/leaseSupervise',
name: 'leaseSupervise', name: 'leaseSupervise',

View File

@ -30,7 +30,6 @@
<script setup> <script setup>
import { ref, reactive, onMounted } from 'vue'; import { ref, reactive, onMounted } from 'vue';
import { CRUD_OPTIONS } from '@/config'; import { CRUD_OPTIONS } from '@/config';
import { size } from 'lodash';
onMounted(getData); onMounted(getData);

View File

@ -49,8 +49,8 @@ export function useBasicInfo(set = {}) {
materialTypes[moduleType].push(...handleTypes(children)); materialTypes[moduleType].push(...handleTypes(children));
handleTwoLevel(); handleTwoLevel();
}); });
console.log('materialTypes --- ', materialTypes); // console.log('materialTypes --- ', materialTypes);
console.log('materialTwoLevel --- ', materialTwoLevel); // console.log('materialTwoLevel --- ', materialTwoLevel);
} }
loadFinish.value = true; loadFinish.value = true;
let t = setInterval(() => { let t = setInterval(() => {

View File

@ -58,7 +58,7 @@
</template> </template>
<script setup> <script setup>
import { ref, reactive, onMounted, watch, h } from 'vue'; import { ref, reactive, onMounted, watch } from 'vue';
import TypeMenu from '../../common/TypeMenu.vue'; import TypeMenu from '../../common/TypeMenu.vue';
import { CRUD_OPTIONS, pageData, customRules } from '@/config'; import { CRUD_OPTIONS, pageData, customRules } from '@/config';
import { useBasicInfo } from '@/views/inputSuppliesManage/hooks/useBasicInfo'; import { useBasicInfo } from '@/views/inputSuppliesManage/hooks/useBasicInfo';

View File

@ -1,18 +1,198 @@
<template> <template>
<section class="custom-page">使用监管 </section> <section class="custom-page">
<avue-crud
ref="crudRef"
v-model:search="searchCondition"
v-model:page="pageData"
:table-loading="_loading"
:option="option"
:data="data"
@search-change="
(form, done) => {
getData(1);
done();
}
"
@search-reset="getData(1)"
@refresh-change="getData"
@current-change="getData"
@size-change="getData(1)"
@row-save="handleRowSave"
@row-update="handleRowUpdate"
>
<template #land-form="{ type }">
<section if="type == 'add'">地块</section>
</template>
</avue-crud>
</section>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue'; import { reactive, ref, watch } from 'vue';
import { CRUD_OPTIONS, pageData } from '@/config';
import { useBasicInfo } from '@/views/inputSuppliesManage/hooks/useBasicInfo';
const { loadFinish, materialTwoLevel, materialTypes } = useBasicInfo();
watch(
() => loadFinish.value,
(bol) => {
if (loadFinish.value) {
console.log('material', materialTypes);
}
}
);
/* --------------- data --------------- */ /* --------------- data --------------- */
// #region // #region
const crudRef = ref(null);
const _loading = ref(true);
const searchCondition = ref({
searchType: '',
keywords: '',
});
const types = reactive([
{ label: '农药监管', value: '1' },
{ label: '肥料监管', value: '2' },
{ label: '兽药监管', value: '3' },
]);
const data = ref([{}]);
const option = ref({
...CRUD_OPTIONS,
selection: false,
dialogWidth: '50%',
column: [
{
hide: true,
search: true,
addDisplay: false,
editDisplay: false,
label: '物资类型',
prop: 'searchType',
type: 'select',
dicData: types,
},
{
hide: true,
search: true,
addDisplay: false,
editDisplay: false,
label: '关键字',
prop: 'keywords',
},
{
editDisabled: true,
label: '物资类型',
prop: 'dataType',
type: 'select',
dicData: types,
clearable: false,
value: '1',
change: handleTypeChange,
},
{
label: '姓名',
prop: 'name',
},
{
label: '联系方式',
prop: 'phone',
},
{
label: '投入品名称',
prop: 'materialName',
},
{
label: '分类',
prop: 'type',
type: 'cascader',
dicData: [],
},
{
label: '购买量',
prop: 't1',
},
{
label: '购买时间',
prop: 't2',
},
{
label: '使用量',
prop: 't3',
},
{
label: '使用时间',
prop: 't4',
},
{
label: '使用对象',
prop: 't5',
},
{
label: '关联地块',
prop: 'land',
},
],
group: [
{
label: '农药检测',
prop: 'pesticide',
// addDisplay: false,
// editDisplay: false,
column: [
{
label: '检测时间',
prop: 'checkTime',
span: 24,
type: 'date',
valueFormat: 'yyyy-MM-dd',
format: 'yyyy-MM-dd',
},
{
label: '检测结果',
prop: 'result',
span: 24,
},
{
label: '投入品名称',
prop: 'unit',
span: 24,
},
{
label: '检测报告',
prop: 'report',
span: 24,
},
],
},
],
});
// #endregion // #endregion
/* --------------- methods --------------- */ /* --------------- methods --------------- */
// #region // #region
function getData(reset = 1) {
reset == 1 && (pageData.value.currentPage = 1);
console.log('get data');
}
function handleTypeChange(val) {
console.log(
'dicData',
materialTypes[val.value].filter((v) => v.value != '0')
);
option.value.column[6].dicData = materialTypes[val.value].filter((v) => v.value != '0');
}
function handleData(val) {
console.log('handleData', val);
}
function handleRowSave(row, done, laoding) {
handleData(row);
laoding();
}
function handleRowUpdate(row, index, done, loading) {
handleData(row);
loading();
}
// #endregion // #endregion
</script> </script>

View File

@ -76,12 +76,12 @@ import { ref, reactive, onMounted, watch } from 'vue';
import { CRUD_OPTIONS } from '@/config'; import { CRUD_OPTIONS } from '@/config';
import { useUserStore } from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import { getLandsList, exportLands, delLand, saveLand, importLands, editLand } from '@/apis/land.js'; import { getLandsList, exportLands, delLand, saveLand, importLands, editLand } from '@/apis/land.js';
import { getRegion } from '@/apis';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import useLandHook from './useLandHook'; import useLandHook from './useLandHook';
import Attrs from './common/Attrs.vue'; import Attrs from './common/Attrs.vue';
import { getAssetsFile, downloadFile } from '@/utils'; import { getAssetsFile, downloadFile } from '@/utils';
import { useApp } from '@/hooks'; import { useApp } from '@/hooks';
import { get } from 'lodash';
const app = useApp(); const app = useApp();
const { loadFinish, resetLandType, searchCondition, unitOptions, unitValue, landTreeDic } = useLandHook(); const { loadFinish, resetLandType, searchCondition, unitOptions, unitValue, landTreeDic } = useLandHook();
@ -93,6 +93,7 @@ watch(
() => { () => {
if (loadFinish.value == 2) { if (loadFinish.value == 2) {
getList(); getList();
handleGetRegion();
} }
} }
); );
@ -257,11 +258,10 @@ const option = reactive({
value: 'id', value: 'id',
label: 'gridName', label: 'gridName',
}, },
dicMethod: 'get',
dicHeaders: { dicHeaders: {
authorization: UserStore.token, authorization: UserStore.token,
}, },
dicFormatter: (res) => res?.data?.records ?? [], dicFormatter: handleGetGrid,
rules: [ rules: [
{ {
required: true, required: true,
@ -271,7 +271,7 @@ const option = reactive({
], ],
}, },
{ {
label: '用地分类', label: '用地分类1',
prop: 'landTypeId', prop: 'landTypeId',
type: 'cascader', type: 'cascader',
dicData: landTreeDic, dicData: landTreeDic,
@ -288,21 +288,17 @@ const option = reactive({
label: '用地分类', label: '用地分类',
prop: 'landClassificationType', prop: 'landClassificationType',
addDisplay: false, addDisplay: false,
editDisplay: false,
}, },
{ {
label: '位置', label: '位置',
prop: 'villageCode', prop: '_villageCode',
type: 'cascader', type: 'cascader',
props: { props: {
label: 'areaName', label: 'areaName',
value: 'areaCode', value: 'areaCode',
children: 'areaChildVOS', children: 'areaChildVOS',
}, },
dicUrl: `${VITE_APP_BASE_API}/system/area/region?areaCode=530000`,
dicHeaders: {
authorization: UserStore.token,
},
dicFormatter: (res) => res.data ?? [],
rules: [ rules: [
{ {
required: true, required: true,
@ -331,6 +327,7 @@ const option = reactive({
label: '是否土地流转', label: '是否土地流转',
prop: 'isTransferView', prop: 'isTransferView',
addDisplay: false, addDisplay: false,
editDisplay: false,
}, },
{ {
label: '面积', label: '面积',
@ -450,6 +447,7 @@ const landOwnerAttrs = ref([]);
const landAttrs = ref([]); const landAttrs = ref([]);
const rowData = ref([]); const rowData = ref([]);
const importExcelRef = ref(); const importExcelRef = ref();
const regionData = ref([]);
// #endregion // #endregion
/* --------------- methods --------------- */ /* --------------- methods --------------- */
@ -473,15 +471,39 @@ async function getList(reset = 1) {
const { total, records } = res.data; const { total, records } = res.data;
data.value = records; data.value = records;
data.value.forEach((v) => { data.value.forEach((v) => {
v.isTransfer = v.landTransfer || 1; v.isTransfer = v.landTransfer || '1';
v.isTransferView = v.landTransfer == 1 ? '否' : '是'; v.isTransferView = v.landTransfer == '1' ? '否' : '是';
v.coordinateView = v.coordinate; v.coordinateView = v.coordinate;
v.soilTypeName = v.soilType; v.soilTypeName = v.soilType;
v.soilTypeId = v.soilId; v.soilTypeId = v.soilId;
v._villageCode = handleArea(v);
v.landTypeId = [v.pid, v.landType];
console.log('vvv', v);
}); });
pageData.value.total = total; pageData.value.total = total;
} }
} }
function handleGetGrid(res) {
console.log('res', res);
return res.records ?? [];
}
async function handleGetRegion() {
let res = await getRegion();
if (res.code == 200) {
option.group[0].column[5];
}
console.log('region', res);
}
function handleArea(v) {
const { provinceCode, cityCode, county, townCode, villageCode } = v;
let _area = [provinceCode, cityCode, county, townCode, villageCode];
let _arr = [];
for (let i = 0; i < _area.length; i++) {
if (!_area[i]) return;
_arr.push(_area[i]);
}
return _arr;
}
function handleSizeChange(val) { function handleSizeChange(val) {
pageData.value.pageSize = val; pageData.value.pageSize = val;
@ -525,7 +547,7 @@ function handleDelete(id) {
.catch(() => {}); .catch(() => {});
} }
function handleView(obj) { function handleView(obj) {
handleAttrs(obj); handleOtherInfo(obj);
rowData.value = obj; rowData.value = obj;
crudRef.value.rowView(obj); crudRef.value.rowView(obj);
} }
@ -559,27 +581,30 @@ function handleData(val) {
data.propertyCertificateUrl = urls.join(); data.propertyCertificateUrl = urls.join();
data.landCertificateUrl = landOwnerUrls.join(); data.landCertificateUrl = landOwnerUrls.join();
data.landUrl = landUrls.join(); data.landUrl = landUrls.join();
data.villageCode = data.villageCode[data.villageCode.length - 1] || ''; data.villageCode = data._villageCode[data._villageCode.length - 1] || '';
data.landTypeId = data.landTypeId[data.landTypeId.length - 1]; data.landTypeId = data.landTypeId[data.landTypeId.length - 1];
data.soilType = data.soilTypeId; data.soilType = data.soilTypeId;
if (local.value.length != 0) { if (local.value.length != 0) {
data.coordinate = `${local.value[0]}E,${local.value[1]}N`; data.coordinate = `${local.value[0]}E,${local.value[1]}N`;
} }
delete data.address;
delete data.provinceCode;
delete data.cityCode;
delete data.county;
delete data.townCode;
return data; return data;
} }
async function handleRowSave(val, done, loading) { async function handleRowSave(val, done, loading) {
console.log('save', val);
let data = handleData(val); let data = handleData(val);
console.log('save -data', data); const res = await saveLand(data);
// const res = await saveLand(data);
loading(); loading();
// if (res.code == 200) { if (res.code == 200) {
// ElMessage.success(''); ElMessage.success('保存成功');
// getList(); getList();
// attrs.value = []; attrs.value = [];
// landOwnerAttrs.value = []; landOwnerAttrs.value = [];
// done(); done();
// } }
} }
async function handleRowUpdate(form, index, done, loading) { async function handleRowUpdate(form, index, done, loading) {
let data = handleData(form); let data = handleData(form);
@ -591,12 +616,15 @@ async function handleRowUpdate(form, index, done, loading) {
} }
} }
async function rowEdit(obj) { async function rowEdit(row) {
console.log('rowEdit', obj); console.log('rowEdit', row);
handleAttrs(obj); handleOtherInfo(row);
crudRef.value.rowEdit(obj); crudRef.value.rowEdit(row);
} }
function handleAttrs(obj) { function handleOtherInfo(obj) {
landArea.value = obj.area;
unitValue.value = obj.landUnit;
console.log('option', obj._villageCode, option.group[0].column[4]);
if (obj.propertyCertificateUrl) { if (obj.propertyCertificateUrl) {
attrs.value = obj.propertyCertificateUrl.split(',').map((v, i) => { attrs.value = obj.propertyCertificateUrl.split(',').map((v, i) => {
return { return {

View File

@ -522,6 +522,7 @@ const rowEdit = (row) => {
}; };
const rowUpdate = (row, index, done, loading) => { const rowUpdate = (row, index, done, loading) => {
delete row.base64; delete row.base64;
console.log('row', row);
setCity(row); setCity(row);
UpdateEntity(row) UpdateEntity(row)
.then((res) => { .then((res) => {