|
@@ -6,7 +6,7 @@
|
|
|
<el-form-item label="选择数据:" prop="planType" label-width="auto">
|
|
|
<div class="flex" style="align-items: center; justify-content: flex-start">
|
|
|
<el-select v-model="queryParams.dataType" placeholder="选择数据" @change="onDataTypeChange">
|
|
|
- <el-option v-for="item in type" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ <el-option v-for="item in type" :key="item.id" :label="item.layer_name" :value="item.id" />
|
|
|
</el-select>
|
|
|
<div class="info">
|
|
|
<span>数据更新:{{ dataUpdateTime }}</span>
|
|
@@ -21,8 +21,15 @@
|
|
|
<el-button plain icon="Upload" @click="openImportDialog">批量导入</el-button>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
- <el-table v-loading="loading" :data="tableData">
|
|
|
- <el-table-column v-for="(item, index) in tableHeader" :key="index" :prop="item.prop" :label="item.label" :fixed="item.fixed" min-width="80" />
|
|
|
+ <el-table v-loading="loading" :data="tableData" :max-height="tableHeight">
|
|
|
+ <el-table-column
|
|
|
+ v-for="(item, index) in tableHeader"
|
|
|
+ :key="index"
|
|
|
+ :prop="item.column_name"
|
|
|
+ :label="item.column_comment"
|
|
|
+ :min-width="item.column_comment.length * 25 > 100 ? item.column_comment.length * 25 : 100"
|
|
|
+ align="center"
|
|
|
+ />
|
|
|
<el-table-column label="操作" align="center" width="150px" fixed="right">
|
|
|
<template #default="scope">
|
|
|
<el-text v-hasPermi="['system:menu:View']" class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
|
|
@@ -34,16 +41,16 @@
|
|
|
<pagination v-show="total > 0" v-model:page="queryParams.page" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
|
|
<AddDataManagement
|
|
|
v-if="dataManagementAddState.show"
|
|
|
- :dataType="queryParams.dataType"
|
|
|
- :detailId="dataManagementAddState.id"
|
|
|
- @onCancel="handleCancel"
|
|
|
- @onConfirm="onConfirm"
|
|
|
+ :data-type="queryParams.dataType"
|
|
|
+ :detail-data="dataManagementAddState.data"
|
|
|
+ @on-cancel="handleCancel"
|
|
|
+ @on-confirm="onConfirm"
|
|
|
/>
|
|
|
<ViewDataManagement
|
|
|
v-if="dataManagementViewState.show"
|
|
|
- :dataType="queryParams.dataType"
|
|
|
- :detailId="dataManagementViewState.id"
|
|
|
- @onCancel="handleCancel"
|
|
|
+ :data-type="queryParams.dataType"
|
|
|
+ :detail-data="dataManagementViewState.data"
|
|
|
+ @on-cancel="handleCancel"
|
|
|
/>
|
|
|
<DataImport v-model="showImportDialog" :url="importUrl" :file-name="importUrl" :steps-text="fileName" />
|
|
|
</div>
|
|
@@ -52,6 +59,12 @@
|
|
|
<script lang="ts" setup>
|
|
|
import ViewDataManagement from './ViewDataManagement.vue';
|
|
|
import AddDataManagement from './AddDataManagement.vue';
|
|
|
+import {
|
|
|
+ deleteDataManagerInfo,
|
|
|
+ getDataManagerDataList,
|
|
|
+ getDataManagerInfo,
|
|
|
+ getDataManagerList
|
|
|
+} from '@/api/dataManagement/dataManagement';
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
const queryParams = reactive({
|
|
@@ -63,6 +76,7 @@ let loading = ref(false);
|
|
|
const total = ref(0); // 总条目数
|
|
|
const type = ref([]);
|
|
|
|
|
|
+const tableHeight = ref(document.documentElement.scrollHeight - 295 + 'px');
|
|
|
const tableHeader = ref([]);
|
|
|
// 表格数据
|
|
|
const tableData = ref([]);
|
|
@@ -75,27 +89,27 @@ let fileName = ref('');
|
|
|
|
|
|
let dataManagementViewState = reactive({
|
|
|
show: false,
|
|
|
- id: ''
|
|
|
+ data: {}
|
|
|
});
|
|
|
|
|
|
let dataManagementAddState = reactive({
|
|
|
show: false,
|
|
|
- id: ''
|
|
|
+ data: {}
|
|
|
});
|
|
|
|
|
|
// 打开新增
|
|
|
const handleAdd = () => {
|
|
|
- dataManagementAddState.id = '';
|
|
|
+ dataManagementAddState.data = {};
|
|
|
dataManagementAddState.show = true;
|
|
|
};
|
|
|
// 打开详情
|
|
|
const handleView = (row: any) => {
|
|
|
- dataManagementViewState.id = row.id;
|
|
|
+ dataManagementViewState.data = row;
|
|
|
dataManagementViewState.show = true;
|
|
|
};
|
|
|
// 打开修改
|
|
|
const handleUpdate = (row: any) => {
|
|
|
- dataManagementAddState.id = row.id;
|
|
|
+ dataManagementAddState.data = row;
|
|
|
dataManagementAddState.show = true;
|
|
|
};
|
|
|
// 关闭
|
|
@@ -106,17 +120,16 @@ const handleCancel = () => {
|
|
|
|
|
|
const onConfirm = () => {
|
|
|
handleCancel();
|
|
|
- queryParams.page = 1;
|
|
|
+ // queryParams.page = 1;
|
|
|
getList();
|
|
|
};
|
|
|
// 删除
|
|
|
const removeItem = (item) => {
|
|
|
proxy?.$modal.confirm('是否确认删除选择的数据项?').then(() => {
|
|
|
- const index = tableData.value.findIndex((row) => row.id === item.id);
|
|
|
- if (index !== -1) {
|
|
|
- tableData.value.splice(index, 1);
|
|
|
- }
|
|
|
- proxy?.$modal.msgSuccess('删除成功');
|
|
|
+ deleteDataManagerInfo(queryParams.dataType, item.id).then(() => {
|
|
|
+ proxy?.$modal.msgSuccess('删除成功');
|
|
|
+ getList();
|
|
|
+ });
|
|
|
});
|
|
|
};
|
|
|
|
|
@@ -124,122 +137,38 @@ const removeItem = (item) => {
|
|
|
const onDataTypeChange = () => {
|
|
|
const index = type.value.findIndex((row) => row.value === queryParams.dataType);
|
|
|
if (index !== -1) {
|
|
|
- importUrl.value = type.value[index].label + '.xlsx';
|
|
|
- fileName.value = type.value[index].label;
|
|
|
+ importUrl.value = type.value[index].layer_name + '.xlsx';
|
|
|
+ fileName.value = type.value[index].layer_name;
|
|
|
}
|
|
|
queryParams.page = 1;
|
|
|
getList();
|
|
|
};
|
|
|
|
|
|
// 获取表格数据
|
|
|
-const getList = () => {
|
|
|
+const getList = async () => {
|
|
|
loading.value = true;
|
|
|
- setTimeout(() => {
|
|
|
- if (queryParams.dataType === '1') {
|
|
|
- const tempTableHeader = [
|
|
|
- { label: 'ID', prop: 'id' },
|
|
|
- { label: '工程名称', prop: 'name' },
|
|
|
- { label: '建设单位', prop: 'unit' },
|
|
|
- { label: '人防专业监理工程师', prop: 'engineer' },
|
|
|
- { label: '建设地点', prop: 'location' },
|
|
|
- { label: '操作方式', prop: 'operation' },
|
|
|
- { label: '应建人防地下室面积(㎡)', prop: 'plannedArea' },
|
|
|
- { label: '实建人防地下室面积(㎡)', prop: 'actualArea' },
|
|
|
- { label: '更新时间', prop: 'updateTime' }
|
|
|
- ];
|
|
|
- for (let i = 0; i < tempTableHeader.length; i++) {
|
|
|
- if (tempTableHeader[i].prop === 'id') {
|
|
|
- tempTableHeader[i].fixed = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- tableHeader.value = tempTableHeader;
|
|
|
- tableData.value = [
|
|
|
- {
|
|
|
- id: '1',
|
|
|
- name: '光华北路人防工程',
|
|
|
- unit: '茂名市应急管理局',
|
|
|
- maintainUnit: '茂名市应急管理局',
|
|
|
- engineer: '',
|
|
|
- location: '茂名市茂南区光华北路668号',
|
|
|
- operation: '',
|
|
|
- plannedArea: 122,
|
|
|
- actualArea: 123,
|
|
|
- updateTime: '2023-12-12 12:13'
|
|
|
- },
|
|
|
- {
|
|
|
- id: '2',
|
|
|
- name: '光华北路人防工程2',
|
|
|
- unit: '茂名市应急管理局',
|
|
|
- maintainUnit: '茂名市应急管理局',
|
|
|
- engineer: '',
|
|
|
- location: '茂名市茂南区光华北路668号',
|
|
|
- operation: '',
|
|
|
- plannedArea: 122,
|
|
|
- actualArea: 123,
|
|
|
- updateTime: '2023-12-12 12:13'
|
|
|
- },
|
|
|
- {
|
|
|
- id: '3',
|
|
|
- name: '光华北路人防工程3',
|
|
|
- unit: '茂名市应急管理局',
|
|
|
- maintainUnit: '茂名市应急管理局',
|
|
|
- engineer: '',
|
|
|
- location: '茂名市茂南区光华北路668号',
|
|
|
- operation: '',
|
|
|
- plannedArea: 122,
|
|
|
- actualArea: 123,
|
|
|
- updateTime: '2023-12-12 12:13'
|
|
|
- }
|
|
|
- ];
|
|
|
- total.value = 3;
|
|
|
- } else {
|
|
|
- const tempTableHeader = [
|
|
|
- { label: 'ID', prop: 'id' },
|
|
|
- { label: '姓名', prop: 'name' },
|
|
|
- { label: '所属区域', prop: 'area' },
|
|
|
- { label: '单位', prop: 'company' },
|
|
|
- { label: '职位', prop: 'official' },
|
|
|
- { label: '联系电话', prop: 'phone' },
|
|
|
- { label: '专家类型', prop: 'type' }
|
|
|
- ];
|
|
|
- for (let i = 0; i < tempTableHeader.length; i++) {
|
|
|
- if (tempTableHeader[i].prop === 'id') {
|
|
|
- tempTableHeader[i].fixed = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- tableHeader.value = tempTableHeader;
|
|
|
- tableData.value = [
|
|
|
- {
|
|
|
- id: '1',
|
|
|
- name: '陈洋',
|
|
|
- area: '高州市',
|
|
|
- company: '高州市明洋化工有限公司',
|
|
|
- official: '工程师',
|
|
|
- phone: '13509917455',
|
|
|
- type: '森林火灾'
|
|
|
- }
|
|
|
- ];
|
|
|
- total.value = 1;
|
|
|
- }
|
|
|
- dataUpdateTime.value = '2023-12-12 12:13';
|
|
|
- dataSourceUnit.value = '茂名市应急管理局';
|
|
|
- loading.value = false;
|
|
|
- }, 500);
|
|
|
+ tableHeader.value = [];
|
|
|
+ getDataManagerInfo(queryParams.dataType).then((res) => {
|
|
|
+ tableHeader.value = res.data.columns;
|
|
|
+ });
|
|
|
+ getDataManagerDataList(queryParams.dataType, { page: queryParams.page, pageSize: queryParams.pageSize })
|
|
|
+ .then((res) => {
|
|
|
+ tableData.value = res.data;
|
|
|
+ total.value = res.total;
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ loading.value = false;
|
|
|
+ });
|
|
|
};
|
|
|
// 加载数据
|
|
|
const loadData = () => {
|
|
|
- // 实现数据加载逻辑
|
|
|
- // 需要先获取选项,根据第一个选项获取tableData和导入配置
|
|
|
- type.value = [
|
|
|
- { label: '在建工地', value: '1' },
|
|
|
- { label: '应急管理专家', value: '2' }
|
|
|
- ];
|
|
|
- importUrl.value = type.value[0].label + '.xlsx';
|
|
|
- fileName.value = type.value[0].label;
|
|
|
- queryParams.dataType = type.value[0].value;
|
|
|
- getList();
|
|
|
+ getDataManagerList().then((res) => {
|
|
|
+ type.value = res.data;
|
|
|
+ importUrl.value = type.value[0].layer_name + '.xlsx';
|
|
|
+ fileName.value = type.value[0].layer_name;
|
|
|
+ queryParams.dataType = type.value[0].id;
|
|
|
+ getList();
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
// 打开批量导入弹窗
|