diff --git a/packages/screen/src/router/index.js b/packages/screen/src/router/index.js index dcb4155..112b1a2 100644 --- a/packages/screen/src/router/index.js +++ b/packages/screen/src/router/index.js @@ -170,16 +170,16 @@ const routes = [ } }, // 线下帮扶台账 - 法规处 - // { - // path: '/ledgerManagement3', - // name: 'ledgerManagement3', - // component: () => import('../views/LedgerManagement/index.vue'), - // meta: { - // title: '驻地台账', - // breadcrumb: true, - // parentRoute: 'warningManagement3' - // } - // }, + { + path: '/ledgerManagement3', + name: 'ledgerManagement3', + component: () => import('../views/LedgerManagement/helpLedger/index.vue'), + meta: { + title: '线下帮扶台账', + breadcrumb: true, + parentRoute: 'warningManagement3' + } + }, // 项目管理 - 区县 diff --git a/packages/screen/src/views/LedgerManagement/helpLedger/index.js b/packages/screen/src/views/LedgerManagement/helpLedger/index.js new file mode 100644 index 0000000..301f99c --- /dev/null +++ b/packages/screen/src/views/LedgerManagement/helpLedger/index.js @@ -0,0 +1,254 @@ +import { h, ref, onMounted, reactive, watch, toRaw, nextTick } from "vue"; +import { request } from "@/utils/request"; +import { useRoute, useRouter } from 'vue-router' + +const tableData = ref([]); // 表格数据 + +const modelVisible = ref(false); // 弹窗状态 +const drawerVisible = ref(false); // 抽屉状态 +// 弹窗内容 +const model = reactive({ + title: '', + content: null, + props: {}, + onCancel: null, + onConfirm: null, + width: '', +}); +const form = reactive({ +}); +const INIT_FORM = { + +}; +// 抽屉内容 +const drawer = reactive({ + title: '', + content: null, + props: {}, + onCancel: null, + onConfirm: null, + direction: 'rtl', + size: '50%' +}); +const dialogRef = ref(null); // 弹窗实例 +const drawerRef = ref(null); // 抽屉实例 + +const columns = [ + { + prop: "helpTime", + label: "帮扶时间", + // formatter: (row) => `${row.helpTime || ''} - ${row.helpTimeEnd || ''}`, + }, + { + prop: "helpCounty", + label: "帮扶区县", + }, + { + prop: "helpPerson", + label: "帮扶人员", + }, + { + prop: "helpUnit", + label: "帮扶单位", + }, + { + prop: "helpStatus", + label: "帮扶情况", + }, + { + prop: "attachmentUrl", + label: "附件", + render: (row) => { + if (row.attachmentUrl) { + return h(ElButton, { + text: 'true', + type: 'primary', + onClick: () => downloadAttachment(row.attachmentUrl) + }, '附件下载'); + } else { + return h('span', {}, '---'); + } + } + }, + { + prop: "uploadTime", + label: "上传时间", + }, + { + prop: "remark", + label: "备注", + }, +] + +// 过滤条件 +const filterData = reactive({}) +// 分页 +const pagination = reactive({ + current: 1, + pageSize: 10, + total: 0, + pageSizes: [10, 20, 50], + layout: "prev, pager, next, jumper", + onChange: (page, pageSize) => { + pagination.current = page; + pagination.pageSize = pageSize; + getTableData(filterData); + }, +}); + +// 获取列表 +const getTableData = async (filterData = {}) => { + try { + // 过滤空字符串属性 + const filteredParams = {}; + Object.keys(filterData).forEach(key => { + if (filterData[key] !== '' && filterData[key] != null) { + filteredParams[key] = filterData[key]; + } + }); + const res = await request({ + url: '/snow-ops-platform/fgc-xxbf/list', + method: "GET", + params: { + ...filteredParams, + pageNum: pagination.current, + pageSize: pagination.pageSize, + } + }) + if (res.code === '00000') { + tableData.value = res.data.records + pagination.total = res.data.total + } else { + throw new Error(res.message) + } + } catch (error) { + ElMessage.error(error.message) + console.error('获取列表失败:', error); + } +} + +// 下载附件 +const downloadAttachment = (url) => { + if (!url) { + ElMessage.warning('无附件地址'); + return; + } + // 直接使用 window.open 触发下载 + window.open(url, '_blank'); +} + +// 预警类型选项 +const eventTypeOptions = [ + { label: "全部", value: "" }, + { label: "台风预警", value: "台风预警" }, + { label: "暴雨预警", value: "暴雨预警" }, + { label: "寒潮预警", value: "寒潮预警" }, + { label: "大雾预警", value: "大雾预警" }, + { label: "暴雪预警", value: "暴雪预警" }, + { label: "道路结冰预警", value: "道路结冰预警" }, + { label: "雷电预警", value: "雷电预警" }, + { label: "强对流预警", value: "强对流预警" }, +]; + +// 预警级别选项 +const severityOptions = [ + { label: "全部", value: "" }, + { label: "红色预警", value: "红色预警" }, + { label: "橙色预警", value: "橙色预警" }, + { label: "黄色预警", value: "黄色预警" }, + { label: "蓝色预警", value: "蓝色预警" }, +] + +// 响应情况选项 +const responseOptions = [ + { label: "全部", value: "" }, + { label: "未响应", value: "未响应" }, + { label: "部分响应", value: "部分响应" }, + { label: "全部响应", value: "全部响应" }, +] + + +const downloadFile = async () => { + window.open('/snow-ops-platform/fgc-xxbf/template', '_blank'); +} + +const uploadFile = async (file) => { + if (!file) { + ElMessage.warning('请选择要上传的文件'); + return; + } + + try { + // 创建FormData对象 + const formData = new FormData(); + formData.append('file', file); + + const loading = ElLoading.service({ + lock: true, + text: '操作中', + background: 'rgba(0, 0, 0, 0.7)', + }) + + // 发送POST请求 + const res = await request({ + url: '/snow-ops-platform/fgc-xxbf/upload', + method: 'POST', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + + // 关闭加载提示 + loading.close(); + + if (res.code === '00000') { + ElMessage.success('文件上传成功'); + // 刷新表格数据 + getTableData(filterData); + } else { + throw new Error(res.message || '上传失败'); + } + } catch (error) { + ElMessage.error(error.message || '文件上传失败'); + console.error('文件上传失败:', error); + } +} + + +export default () => { + + onMounted(() => { + getTableData(); + }) + + + watch(filterData, (val) => { + getTableData(filterData); + }, { deep: true }) + + + return { + modelVisible, + model, + drawerVisible, + drawer, + dialogRef, + drawerRef, + + eventTypeOptions, + severityOptions, + responseOptions, + + + tableData, + filterData, + pagination, + columns, + + downloadFile, + uploadFile, + + + } +} \ No newline at end of file diff --git a/packages/screen/src/views/LedgerManagement/helpLedger/index.vue b/packages/screen/src/views/LedgerManagement/helpLedger/index.vue new file mode 100644 index 0000000..544c4bd --- /dev/null +++ b/packages/screen/src/views/LedgerManagement/helpLedger/index.vue @@ -0,0 +1,81 @@ + + + + + \ No newline at end of file diff --git a/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js b/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js index 11b2dcb..6c3269f 100644 --- a/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js +++ b/packages/screen/src/views/ProjectManagement_Rebuild/district/index.js @@ -372,15 +372,15 @@ export default () => { getTableData(); }) -// 新增填报 -const newAdd = () => { - router.push({ - name: 'projectAdd', - params: { - mode: 'add' + // 新增填报 + const newAdd = () => { + router.push({ + name: 'projectAdd', + params: { + mode: 'add' + } + }) } - }) -} watch(filterData, (val) => { diff --git a/packages/screen/src/views/WarningManagement/law/index.js b/packages/screen/src/views/WarningManagement/law/index.js index dd75054..25a8087 100644 --- a/packages/screen/src/views/WarningManagement/law/index.js +++ b/packages/screen/src/views/WarningManagement/law/index.js @@ -213,7 +213,7 @@ export default () => { const router = useRouter(); const gotoLedgerPage = () => { router.push({ - path: '/ledgerManagement2' + path: '/ledgerManagement3' }); }; diff --git a/packages/screen/src/views/WarningManagement/law/index.vue b/packages/screen/src/views/WarningManagement/law/index.vue index 126bc4f..675c1fe 100644 --- a/packages/screen/src/views/WarningManagement/law/index.vue +++ b/packages/screen/src/views/WarningManagement/law/index.vue @@ -13,8 +13,8 @@
生成报告 发布预警 - 上传线下帮扶 - 线下帮扶台账 + + 线下帮扶台账 导出