WholeProcessPlatform/frontend/src/views/DataQueryMenuModule/components/conventionalHydropower/photoBase/index.vue
王兴凯 35db4003a1 将数据管理子系统的页面挪到全过程新框架,自定义筛选列打开时会自己刷新表格一下,
环保数据改为监测数据,操作列去掉,,,把地图配置,无用api,无用代码,组件去掉。
2026-08-28 10:08:15 +08:00

276 lines
5.6 KiB
Vue

<!-- <template>
<div class="w-full h-full flex flex-col pt-[20px] pl-[20px] body_one">
<PhotoSearch
@search-finish="onSearchFinish"
@reset="onReset"
@add="handleAdd"
ref="searchRef"
/>
<BasicTable
ref="tableRef"
:enableEllipsis="true"
:scrollX="tableScrollX"
:scrollY="tableScrollY"
:columns="columns"
:list-url="getOpPageList"
>
<template #action="{ record }">
<a-button
type="link"
class="text-[#2f6b98]"
size="small"
@click="handleEdit(record)"
>编辑</a-button
>
<a-button type="link" danger size="small" @click="handleDelete(record)"
>删除</a-button
>
</template>
</BasicTable>
<EditPhotoModal
v-model:open="editVisible"
:record="editRecord"
:is-add="isAdd"
@success="handleEditSuccess"
/>
<DeleteConfirmModal
ref="deleteModalRef"
:delete-fn="deleteOpFn"
:label="'倾斜摄影站点'"
title="删除倾斜摄影站点"
@success="handleEditSuccess"
/>
</div>
</template>
<script setup lang="ts">
import { ref, computed, onMounted, nextTick } from 'vue';
import dayjs from 'dayjs';
import PhotoSearch from './PhotoSearch.vue';
import BasicTable from '@/components/BasicTable/index.vue';
import EditPhotoModal from './EditPhotoModal.vue';
import DeleteConfirmModal from '@/views/conventionalHydropower/BasicData/DeleteConfirmModal.vue';
import { getOpPageList, deleteOpInfo } from '@/api/DataQueryMenuModule';
import { calcTableScrollY } from '@/utils/index';
const tableRef = ref();
const searchRef = ref();
const tableScrollY = ref<string | number>(0);
const currentSearchParams = ref<any>({});
// 编辑相关
const editVisible = ref(false);
const editRecord = ref<any>(null);
const isAdd = ref(false);
const deleteModalRef = ref();
const columns = ref<any[]>([
{
key: 'stnm',
title: '站点名称',
dataIndex: 'stnm',
visible: true,
width: 200,
fixed: 'left',
ellipsis: true
},
{
key: 'stcd',
title: '站点编码',
dataIndex: 'stcd',
visible: true,
width: 160,
ellipsis: true
},
{
key: 'sttpName',
title: '测站类型',
dataIndex: 'sttpName',
visible: true,
width: 100,
ellipsis: true
},
{
key: 'stlc',
title: '位置',
dataIndex: 'stlc',
visible: true,
width: 160,
ellipsis: true
},
{
key: 'baseName',
title: '水电基地',
dataIndex: 'baseName',
visible: true,
width: 100,
ellipsis: true
},
{
key: 'ennm',
title: '所属电站',
dataIndex: 'ennm',
visible: true,
width: 100,
ellipsis: true
},
{
key: 'url',
title: '在线地址',
dataIndex: 'url',
visible: true,
width: 200,
ellipsis: true
},
{
key: 'usflName',
title: '是否启用',
dataIndex: 'usflName',
visible: true,
width: 80,
ellipsis: true
},
{
key: 'jcdt',
title: '建成日期',
dataIndex: 'jcdt',
visible: true,
width: 110,
customRender: ({ text }) => {
if (!text || text === '-') return '-';
const date = dayjs(text);
return date.isValid() ? date.format('YYYY-MM-DD') : '-';
}
},
{
key: 'remark',
title: '备注',
dataIndex: 'remark',
visible: true,
ellipsis: true
},
{
key: 'action',
title: '操作',
dataIndex: 'action',
fixed: 'right',
width: 120
}
]);
const tableScrollX = computed(() =>
Math.max(
columns.value.reduce(
(sum: number, col: any) => sum + (col.width || 180),
0
),
600
)
);
const buildSearchParams = (values: any) => {
return {
logic: 'and',
filters: [
values.rstcd
? {
field: 'rstcd',
operator: 'eq',
dataType: 'string',
value: values.rstcd
}
: null,
values.baseId !== 'all'
? {
field: 'baseId',
operator: 'eq',
dataType: 'string',
value: values.baseId
}
: null,
values.stnm
? {
field: 'stnm',
operator: 'contains',
dataType: 'string',
value: values.stnm
}
: null,
values.sttp
? {
field: 'sttp',
operator: 'eq',
dataType: 'string',
value: values.sttp
}
: null
].filter(Boolean)
};
};
const onSearchFinish = (values: any) => {
currentSearchParams.value = values;
initTable(values);
};
const onReset = (values: any) => {
currentSearchParams.value = values;
initTable(values);
};
const initTable = (values: any) => {
const params = buildSearchParams(values);
tableRef.value.getList(params);
};
// 新增
const handleAdd = () => {
isAdd.value = true;
editRecord.value = null;
editVisible.value = true;
};
// 编辑
const handleEdit = (record: any) => {
isAdd.value = false;
editRecord.value = { ...record };
editVisible.value = true;
};
// 编辑成功回调
const handleEditSuccess = () => {
initTable(currentSearchParams.value);
};
// 删除
const deleteOpFn = async (record: any, reason: string) => {
return deleteOpInfo({
ids: [record.stcd],
source: reason
});
};
const handleDelete = (record: any) => {
deleteModalRef.value?.open(record, () => {
initTable(currentSearchParams.value);
});
};
onMounted(() => {
nextTick(() => {
tableScrollY.value = calcTableScrollY();
});
});
</script>
<style scoped lang="scss">
.body_one {
position: relative;
z-index: 900;
pointer-events: all;
}
</style> -->