智慧园区前端大屏
shuishen
2024-11-14 041eb290228146c7fcfea0c266c03bbe3105eb05
src/views/supplies/components/box/dataContent.vue
@@ -1,53 +1,40 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<template>
  <public-content>
    <template #content>
      <div class="content_box">
        <div class="list_box">
          <ul>
            <li v-for="( item, index ) in  tilteList " :key="index" :class="[currentIndex === index ? 'active' : '']"
              @click="handleClick(item, index)">
              {{ item.label }}
            </li>
          </ul>
          <span class="content_span" @click="scrollLeft">《</span>
          <el-scrollbar ref="scrollbarRef" @scroll="scroll">
            <div class="scrollbar-flex-content">
              <p v-for="(item, index) in tilteList" @click="handleClick(item, index)" :key="index"
                class="scrollbar-demo-item" :class="{ active: index === currentIndex }">
                {{ item.label }}
              </p>
            </div>
          </el-scrollbar>
          <span class="content_span" @click="scrollRight">》</span>
        </div>
        <div class="page_box">
          <div>
            <el-table v-if="formInline.ownership == 1" :data="tableData" style="width: 100%"
              :header-cell-style="headerCellStyle" :cell-style="tableCellStyle">
              <el-table-column fixed prop="name" label="物资名称" />
              <el-table-column fixed prop="personInCha" label="负责人" />
              <el-table-column fixed prop="personInChaPhone" label="负责人电话" />
              <el-table-column fixed prop="stoLoc" label="物资地址" />
              <el-table-column prop="numUnit" label="数量" width="100" />
            <el-table empty-text="" v-if="formInline.ownership == 1" :data="tableData">
              <el-table-column prop="name" label="物资名称" />
              <el-table-column prop="personInCha" label="负责人" width="150" />
              <el-table-column prop="personInChaPhone" label="负责人电话" width="250" />
              <el-table-column prop="stoLoc" label="物资地址" />
              <el-table-column prop="numUnit" label="数量" width="150" />
            </el-table>
            <el-table v-else :data="tableData" style="width: 100%" :header-cell-style="headerCellStyle"
              :cell-style="tableCellStyle">
              <el-table-column fixed prop="firmName" label="企业名称" />
              <el-table-column fixed prop="name" label="物资名称" />
              <el-table-column fixed prop="personInCha" label="负责人" />
              <el-table-column fixed prop="personInChaPhone" label="负责人电话" />
              <el-table-column fixed prop="stoLoc" label="物资地址" />
              <el-table-column prop="numUnit" label="数量" width="100" />
            <el-table empty-text="" v-else :data="tableData">
              <!-- <el-table-column prop="firmName" label="企业名称" /> -->
              <el-table-column prop="name" label="物资名称" />
              <!-- <el-table-column prop="personInCha" label="负责人" /> -->
              <!-- <el-table-column prop="personInChaPhone" label="负责人电话" /> -->
              <el-table-column prop="stoLoc" label="物资地址" />
              <el-table-column prop="num" label="数量" />
            </el-table>
          </div>
        </div>
      </div>
    </template>
  </public-content>
@@ -55,9 +42,10 @@
<script setup>
import publicContent from "./publicContent.vue";
import { getList } from "@/api/emergencySupplies/emergencySupplies";
import { getList, getCompanyList } from "@/api/emergencySupplies/emergencySupplies";
import { getPage } from '@/api/indParkInfo'
import { reactive } from "vue";
import { reactive, ref, onMounted } from "vue";
import { ElScrollbar } from 'element-plus';
const loading = ref(false);
@@ -80,11 +68,31 @@
  getCompanyPages()
});
// const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
//   if (columnIndex === 0) {
//     if (rowIndex % 2 === 0) {
//       return {
//         rowspan: 2,
//         colspan: 1
//       }
//     } else {
//       return {
//         rowspan: 0,
//         colspan: 0
//       }
//     }
//   }
// }
const scrollbarRef = ref(null);
// 搜索条件
const formInline = reactive({
  firmId: '',
  ownership: 1,
});
function getCompanyPages(param = {}) {
  param.current = pages.page;
  param.size = pages.pageSize;
@@ -109,53 +117,48 @@
  if (item.id == 1) {
    formInline.firmId = ''
    formInline.ownership = 1
    getLists(formInline);
  } else {
    formInline.firmId = item.id
    formInline.ownership = 2
    getComLists(formInline)
  }
  getLists(formInline);
}
// 表格样式
const tableCellStyle = ({ row, column }) => {
  return { background: "#152851", color: "#fff" };
};
// const tableCellStyle = ({ row, column }) => {
//   return { background: "#152851", color: "#fff" };
// };
// 表格表头样式
const headerCellStyle = ({ }) => {
  return {
    background: "#152851",
    color: "#fff",
  };
};
// 提交查询
// const onSubmit = () => {
//   pages.page = 1
//   pages.pageSize = 13
//   pages.total = 0
//   console.log("submit!");
//   getLists(formInline);
// const headerCellStyle = ({ }) => {
//   return {
//     background: "#152851",
//     color: "#fff",
//   };
// };
// 分页树改变
const handleSizeChange = (val) => {
  pages.pageSize = val;
  getLists(formInline);
}
// const handleSizeChange = (val) => {
//   pages.pageSize = val;
//   getLists(formInline);
// }
// 分页改变
const handleCurrentChange = (val) => {
  pages.page = val;
  getLists(formInline);
}
// const handleCurrentChange = (val) => {
//   pages.page = val;
//   getLists(formInline);
// }
// 重置条件
const clearBtn = () => {
  formInline.name = ''
  formInline.ownership = ''
  pages.page = 1
  pages.pageSize = 1000
  pages.total = 0
  getLists(formInline);
}
// const clearBtn = () => {
//   formInline.name = ''
//   formInline.ownership = ''
//   pages.page = 1
//   pages.pageSize = 1000
//   pages.total = 0
//   getLists(formInline);
// }
// 查询分页数据
function getLists(param = {}) {
@@ -165,13 +168,6 @@
  getList(param)
    .then((res) => {
      const data = res.data.data;
      data.records.forEach((element) => {
        if (element.ownership == -1) {
          element.ownership = "园区";
        } else {
          element.ownership = "企业";
        }
      });
      tableData.value = data.records;
      pages.total = data.total;
      loading.value = false;
@@ -181,6 +177,43 @@
      console.log(err);
    });
}
// 查询分页数据
function getComLists(param = {}) {
  param.current = pages.page;
  param.size = pages.pageSize;
  loading.value = true;
  getCompanyList(param)
    .then((res) => {
      const data = res.data.data;
      tableData.value = data.dataList;
      pages.total = data.total;
      loading.value = false;
    })
    .catch((err) => {
      loading.value = false;
      console.log(err);
    });
}
// 滚动到左边
const scrollLeft = () => {
  if (scrollbarRef.value) {
    const currentScrollLeft = scrollbarRef.value.wrapRef.scrollLeft;
    const step = 500; // 每次滚动的距离
    scrollbarRef.value.wrapRef.scrollLeft = currentScrollLeft - step;
  }
}
// 滚动到右边
const scrollRight = () => {
  if (scrollbarRef.value) {
    const currentScrollLeft = scrollbarRef.value.wrapRef.scrollLeft;
    const step = 500; // 每次滚动的距离
    scrollbarRef.value.wrapRef.scrollLeft = currentScrollLeft + step;
  }
}
</script>
@@ -189,41 +222,45 @@
  color: #fff;
}
.list_box {
  overflow-x: auto;
  white-space: nowrap;
  // scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, 0.3) transparent;
}
.list_box ul {
.content_box .list_box {
  display: flex;
  /* 使用 Flexbox 布局 */
  padding: 0;
  margin: 0;
  list-style: none;
  text-align: center;
}
.list_box li {
  padding: 10px;
  margin-right: 10px;
  cursor: pointer;
.scrollbar-flex-content {
  display: flex;
}
.list_box li.active {
.scrollbar-demo-item {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  margin: 10px;
  padding: 0 5px;
  text-align: center;
  border-radius: 4px;
  // background: var(--el-color-danger-light-9);
  background-color: rgba(117, 116, 116, 0.3);
  color: white;
  // color: var(--el-color-danger);
  // color: #000;
}
.content_box .content_span {
  line-height: 70px;
  margin: 0 15px;
}
.page_box .el-table {
  width: 100%;
  height: 700px;
  background-color: rgba(117, 116, 116, 0.3);
  height: 680px;
  // background-color: rgba(117, 116, 116, 0.3);
}
.active {
  background-color: #fff;
  color: #000;
  background-color: rgba(255, 255, 255, 0.3);
  color: #fff;
  border-radius: 10px;
}
</style>