烟花爆竹批发企业仓库安全风险监测前端
zhouwx
2025-04-16 489ba60990eeb2b11ff2522678630d8bc3764e71
修改
已修改5个文件
已添加2个文件
247 ■■■■ 文件已修改
src/api/company/area.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/svg/newpeople.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/menu.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/firework/humiture/components/dataDialog.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/firework/humiture/index.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/firework/people/index.vue 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/firework/warehouse/index.vue 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/company/area.js
对比新文件
@@ -0,0 +1,16 @@
import request from "@/utils/request";
export function getProvinceListData(params){
    return request({
        url: '/districtByName',
        method:'get',
        params:params || {},
    })
}
export function getCityListData(params){
    return request({
        url:'/district?type=' + params.type + '&parentname=' + params.parentname + '&parenttype=' + params.parenttype,
        method:'get',
    })
}
src/assets/icons/svg/newpeople.svg
对比新文件
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 20C27.866 20 31 16.866 31 13C31 9.13401 27.866 6 24 6C20.134 6 17 9.13401 17 13C17 16.866 20.134 20 24 20Z" fill="none" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M6 40.8V42H42V40.8C42 36.3196 42 34.0794 41.1281 32.3681C40.3611 30.8628 39.1372 29.6389 37.6319 28.8719C35.9206 28 33.6804 28 29.2 28H18.8C14.3196 28 12.0794 28 10.3681 28.8719C8.86278 29.6389 7.63893 30.8628 6.87195 32.3681C6 34.0794 6 36.3196 6 40.8Z" fill="none" stroke="#333" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>
src/layout/components/Sidebar/menu.js
@@ -9,7 +9,7 @@
        {
            path: '/people',
            name: 'People',
            meta: { title: '人员信息',icon: 'people',affix: true }
            meta: { title: '人员信息',icon: 'newpeople',affix: true }
        },
        {
            path: '/warehouse',
src/views/firework/humiture/components/dataDialog.vue
@@ -3,11 +3,49 @@
    <el-dialog
        v-model="dialogVisible"
        title="历史记录"
        width="50%"
        width="800px"
        :before-close="handleClose"
        :close-on-press-escape="false"
        :close-on-click-modal="false"
    >
      <el-form style="display: flex;align-items: center">
        <el-form-item>
          <el-date-picker
              v-model="state.dateRange"
              value-format="YYYY-MM-DD"
              type="daterange"
              range-separator="-"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              style="width: 300px"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="状态:" style="margin-left: 20px" >
          <el-select
              v-model="state.queryParams.filter.deviceWarning"
              placeholder="请选择"
              style="width: 80%"
          >
            <el-option
                v-for="item in state.statusList"
                :key="item.id"
                :label="item.name"
                :value="item.id"
            />
          </el-select>
        </el-form-item>
        <el-form-item >
          <el-button
              type="primary"
              @click="getList"
          >查询</el-button>
          <el-button
              type="primary"
              plain
              @click="reset"
          >重置</el-button>
        </el-form-item>
      </el-form>
      <el-table v-loading="loading" :data="state.tableList" :border="true">
        <el-table-column label="序号" type="index" align="center" width="80" />
        <el-table-column label="探测器" prop="deviceName" align="center"  />
@@ -55,9 +93,24 @@
    pageIndex: 1,
    pageSize: 10,
    filter: {
      deviceId: null
      deviceId: null,
      deviceWarning: '',
      createDateStart: '',
      createDateEnd: ''
    }
  },
  statusList: [
    {
      id: 0,
      name: '正常'
    },
    {
      id: 1,
      name: '报警'
    },
  ],
  dateRange:[]
})
const { queryParams, total } = toRefs(state);
@@ -69,6 +122,8 @@
}
const getList = async () => {
  loading.value = true
  state.queryParams.filter.createDateStart = state.dateRange[0]
  state.queryParams.filter.createDateEnd = state.dateRange[1]
  if(state.type == '湿度'){
    const res = await getHumidity(state.queryParams)
    if(res.code == 200){
@@ -90,6 +145,20 @@
  }
}
function reset() {
  state.queryParams = {
    pageIndex: 1,
    pageSize: 10,
    filter: {
      deviceId: state.queryParams.filter.deviceId,
      deviceWarning: '',
      createDateStart: '',
      createDateEnd: ''
    }
  }
  state.dateRange = []
  getList()
}
const handleClose = () => {
  dialogVisible.value = false;
  emit("getList")
src/views/firework/humiture/index.vue
@@ -16,37 +16,37 @@
          @pagination="getListAll"
      />
    </div>
    <!--    卡片部分-->
    <el-scrollbar max-height="420px" style="padding-right: 10px;overflow-x: hidden;" v-if="state.dataList && state.dataList.length >0">
<!--      <el-row :gutter="20" style="margin-top: 5px;margin-left: 5px">-->
<!--        <el-col v-for="(item,index) in state.dataList" :key="index" :span="8">-->
      <div class="grid-container">
        <div v-for="(item,index) in state.dataList" :key="index" style="width: 365px;margin: 20px 30px">
          <el-card class="card-item " shadow="always">
            <div style="display: flex;flex-direction: column">
              <div style="font-size: 18px;font-weight: 700;margin-bottom: 25px">{{item.storeName}}—{{item.storeroomName}}—{{item.deviceName}}</div>
              <div style="display: flex;align-items: center;margin-bottom: 15px">
                <img src="@/assets/images/device.png" />
                <div style="display: flex;flex-direction: column">
                  <div style="display: flex;justify-content: space-between;margin-bottom: 10px;align-items: center">
                    <span>温度:{{item.temperatureValue}}℃</span>
                    <el-button type="primary" plain style="margin-left: 15px" @click="openData('温度',item)">历史数据</el-button>
                  </div>
                  <div style="display: flex;justify-content: space-between;align-items: center">
                    <span>湿度:{{item.humidityValue}}%RH</span>
                    <el-button type="primary" plain style="margin-left: 15px" @click="openData('湿度',item)">历史数据</el-button>
    <div style=" border: 1px solid #ebeef5;border-radius: 15px;margin-top: 20px">
<!--      <span style="font-size: 18px;font-weight: 600;margin-left: 15px;margin-top: 10px"> 设备信息</span>-->
      <el-scrollbar max-height="420px" style="padding-right: 10px;overflow-x: hidden;" v-if="state.dataList && state.dataList.length >0">
        <div class="grid-container">
          <div v-for="(item,index) in state.dataList" :key="index" style="width: 365px;margin: 20px 30px">
            <el-card class="card-item " shadow="always">
              <div style="display: flex;flex-direction: column">
                <div style="font-size: 18px;font-weight: 700;margin-bottom: 25px">{{item.storeName}}—{{item.storeroomName}}—{{item.deviceName}}</div>
                <div style="display: flex;align-items: center;margin-bottom: 15px">
                  <img src="@/assets/images/device.png" />
                  <div style="display: flex;flex-direction: column">
                    <div style="display: flex;justify-content: space-between;margin-bottom: 10px;align-items: center">
                      <span>温度:{{item.temperatureValue}}℃</span>
                      <el-button type="primary" plain style="margin-left: 15px" @click="openData('温度',item)">历史数据</el-button>
                    </div>
                    <div style="display: flex;justify-content: space-between;align-items: center">
                      <span>湿度:{{item.humidityValue}}%RH</span>
                      <el-button type="primary" plain style="margin-left: 15px" @click="openData('湿度',item)">历史数据</el-button>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </el-card>
            </el-card>
          </div>
        </div>
      </div>
      </el-scrollbar>
      <el-empty v-else description="暂无设备数据" ></el-empty>
    </div>
    <!--    卡片部分-->
<!--        </el-col>-->
<!--      </el-row>-->
    </el-scrollbar>
    <el-empty v-else description="暂无设备数据" ></el-empty>
    <d-dialog ref="dialogRef" @getList="getListAll"></d-dialog>
  </div>
</template>
@@ -130,8 +130,9 @@
    grid-template-columns: repeat(auto-fill, minmax(385px, 1fr));
    gap: 0px;
    justify-content: start;
    padding: 15px;
    background: #f7f7f7;
    //padding: 15px;
    //background: #f7f7f7;
  }
  .title-font{
    display:flex;
src/views/firework/people/index.vue
@@ -1,6 +1,6 @@
<template>
  <div class="app-container">
    <div style="display: flex;justify-content: space-between;margin-bottom: 10px">
    <div style="display: flex;justify-content: space-between;margin-bottom: 0px">
      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
        <el-form-item>
          <el-button
@@ -11,20 +11,20 @@
          >
            新增
          </el-button>
        </el-form-item>
        <el-form-item label="姓名:" >
          <el-input v-model="data.queryParams.filter.companyName" placeholder="请输入姓名"></el-input>
        </el-form-item>
        <el-form-item >
          <el-button
              type="primary"
              @click="getList"
          >查询</el-button>
          <el-button
              type="primary"
              plain
              @click="reset"
          >重置</el-button>
<!--        </el-form-item>-->
<!--        <el-form-item label="姓名:" >-->
<!--          <el-input v-model="data.queryParams.filter.companyName" placeholder="请输入姓名"></el-input>-->
<!--        </el-form-item>-->
<!--        <el-form-item >-->
<!--          <el-button-->
<!--              type="primary"-->
<!--              @click="getList"-->
<!--          >查询</el-button>-->
<!--          <el-button-->
<!--              type="primary"-->
<!--              plain-->
<!--              @click="reset"-->
<!--          >重置</el-button>-->
        </el-form-item>
      </el-form>
    </div>
src/views/firework/warehouse/index.vue
@@ -12,20 +12,39 @@
            新增仓库
          </el-button>
        </el-form-item>
        <!--        <el-form-item label="姓名:" >-->
        <!--          <el-input v-model="data.queryParams.name" placeholder="请输入姓名"></el-input>-->
        <!--        </el-form-item>-->
        <!--        <el-form-item >-->
        <!--          <el-button-->
        <!--              type="primary"-->
        <!--              @click="getList"-->
        <!--          >查询</el-button>-->
        <!--          <el-button-->
        <!--              type="primary"-->
        <!--              plain-->
        <!--              @click="reset"-->
        <!--          >重置</el-button>-->
        <!--        </el-form-item>-->
          <el-form-item label="区域:" style="display: flex;align-items: center">
            <div style="margin: 10px">
              <div class="basic_search" >
                <el-select v-model="queryParams.filter.provinceCode" clearable filterable >
                  <el-option v-for="item in data.provinceList" :key="item.id" :label="item.name" :value="item.code">
                  </el-option>
                </el-select>
              </div>
<!--              <div class="basic_search" style="display:inline-block">-->
<!--                <el-select v-model="params.city" prop="city" clearable filterable @change="changeArea('city')">-->
<!--                  <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.name">-->
<!--                  </el-option>-->
<!--                </el-select>-->
<!--              </div>-->
<!--              <div class="basic_search" style="display:inline-block">-->
<!--                <el-select v-model="params.district" clearable filterable>-->
<!--                  <el-option v-for="item in districtList" :key="item.id" :label="item.name" :value="item.name">-->
<!--                  </el-option>-->
<!--                </el-select>-->
<!--              </div>-->
            </div>
          </el-form-item>
          <el-form-item >
            <el-button
                type="primary"
                @click="getList"
            >查询</el-button>
            <el-button
                type="primary"
                plain
                @click="reset"
            >重置</el-button>
          </el-form-item>
      </el-form>
    </div>
    <!-- 表格数据 -->
@@ -73,6 +92,7 @@
import Cookies from "js-cookie";
import {delWarehouse, getWarehouse} from "@/api/company/warehouse";
import {subPixelOptimize} from "zrender/lib/graphic/helper/subPixelOptimize";
import {getProvinceListData} from "@/api/company/area";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const dialogRef = ref();
@@ -84,19 +104,22 @@
    pageSize: 10,
    filter: {
      companyName: '',
      companyCode: ''
      companyCode: '',
      provinceCode: ''
    }
  },
  total: 0,
  dataList: []
  dataList: [],
  provinceList: []
});
const { queryParams, total, dataList } = toRefs(data);
const classHourRef = ref();
onMounted(()=>{
onMounted(async ()=>{
  const info = JSON.parse(Cookies.get('userInfo'))
  data.queryParams.filter.companyCode = info.companynumber
  getList()
  await getProvince()
  await getList()
})
onUnmounted(()=>{
@@ -105,6 +128,12 @@
const addProject = (type,value) => {
  dialogRef.value.openDialog(type,value)
}
const getProvince = async () =>{
  let res = await getProvinceListData()
  if(res.code == 200){
    data.provinceList = res.result.provinceList
  }
}
const getList = async () => {
  loading.value = true
@@ -125,7 +154,8 @@
    pageSize: 10,
    filter: {
      companyName: '',
      companyCode: ''
      companyCode: '',
      provinceCode: ''
    }
  }
  getList()