From e29932c247871e8921b210e311c8ea4a57d721ce Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Wed, 26 Feb 2025 17:29:17 +0800
Subject: [PATCH] bug修改
---
.env.development | 5
src/views/hazardousChemicals/avoidWarning/components/avoidDialog.vue | 192 ++++++++++++++++++++++++
src/views/hazardousChemicals/systemManage/classifyInfoTable/index.vue | 2
src/views/hazardousChemicals/electronicWarehouse/components/rawWarehouseRecord.vue | 2
src/views/hazardousChemicals/avoidWarning/index.vue | 197 +++++++++++++++---------
src/api/hazardousChemicals/avoid.js | 25 +++
src/views/hazardousChemicals/electronicWarehouse/components/rawTable.vue | 4
src/views/hazardousChemicals/electronicWarehouse/components/rawDetail.vue | 2
8 files changed, 349 insertions(+), 80 deletions(-)
diff --git a/.env.development b/.env.development
index c2994dd..19560f9 100644
--- a/.env.development
+++ b/.env.development
@@ -11,7 +11,10 @@
VITE_APP_RESOURCE_API = 'http://192.168.2.16:9000/trainexam/'
#董
-VITE_APP_BASE_API = 'http://192.168.2.24:8083/api'
+#VITE_APP_BASE_API = 'http://192.168.2.24:8083/api'
+
+#贺
+VITE_APP_BASE_API = 'http://192.168.2.11:5812/api'
#线上
#VITE_APP_BASE_API = 'http://47.108.222.15:8001/api'
diff --git a/src/api/hazardousChemicals/avoid.js b/src/api/hazardousChemicals/avoid.js
new file mode 100644
index 0000000..5b1ea1c
--- /dev/null
+++ b/src/api/hazardousChemicals/avoid.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function getAvoidInfoPage(params) {
+ return request({
+ url: '/taBooWarning/pageList',
+ method: 'get',
+ params: params
+ })
+}
+
+export function getAvoidList(params) {
+ return request({
+ url: '/taBooWarning/list',
+ method: 'get',
+ params: params
+ })
+}
+
+export function handleAvoid(data) {
+ return request({
+ url: '/taBooWarning/entryTransfer',
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/views/hazardousChemicals/avoidWarning/components/avoidDialog.vue b/src/views/hazardousChemicals/avoidWarning/components/avoidDialog.vue
new file mode 100644
index 0000000..dde3ef0
--- /dev/null
+++ b/src/views/hazardousChemicals/avoidWarning/components/avoidDialog.vue
@@ -0,0 +1,192 @@
+<template>
+ <div class="notice">
+ <el-dialog
+ v-model="dialogVisible"
+ :title="title"
+ width="500px"
+ :before-close="handleClose"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ >
+ <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
+ <el-form-item label="危化品品名:" prop="basicName" >
+ <el-input disabled v-model.trim="state.form.basicName" ></el-input>
+ </el-form-item>
+ <el-form-item label="相忌危化品:" prop="hazmatBasicName" >
+ <el-input disabled v-model.trim="state.form.tabooBasicName" ></el-input>
+ </el-form-item>
+ <el-form-item label="仓库:" prop="warehouseName" >
+ <el-select
+ clearable
+ v-model="state.form.warehouseName"
+ filterable
+ remote
+ reserve-keyword
+ placeholder="请输入所入仓库"
+ remote-show-suffix
+ :remote-method="getWareHouseList"
+ style="width: 100%"
+ @change="selectWareValue"
+ >
+ <el-option
+ v-for="item in state.wareHouseList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.name"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="存储柜:" prop="cupboardId" >
+ <el-select
+ v-model="state.form.cupboardId"
+ placeholder="请选择存储柜"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in state.cupList"
+ :key="item.id"
+ :label="item.cupboardName"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="handleClose" size="default">取 消</el-button>
+ <el-button type="primary" @click="onSubmit" size="default" v-preReClick>确认</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+<script setup>
+import {reactive, ref, toRefs} from 'vue'
+import {ElMessage} from "element-plus";
+import {getCupById, getWarehouse} from "@/api/hazardousChemicals/warehouse";
+import {handleAvoid} from "@/api/hazardousChemicals/avoid";
+const dialogVisible = ref(false);
+const title = ref("");
+const busRef = ref();
+const length = ref()
+const emit = defineEmits(["getList"]);
+const state = reactive({
+ form: {
+ id: '',
+ tabooBasicName: '',
+ warehouseName: '',
+ warehouseId: '',
+ cupboardId: ''
+ },
+ formRules:{
+ warehouseName: [{ required: true, trigger: "blur", message: '请选择仓库' }],
+ cupboardId: [{ required: true, trigger: "blur", message: '请选择存储柜' }],
+ },
+})
+
+
+const openDialog = async (value) => {
+ await getWareHouseList("")
+ await getCupList(value.warehouseId)
+ title.value = '相忌报警处理'
+ state.form = JSON.parse(JSON.stringify(value));
+ dialogVisible.value = true;
+}
+
+const onSubmit = async () => {
+ const valid = await busRef.value.validate();
+ if(valid){
+ const param = {
+ cupboardId: state.form.cupboardId,
+ id: state.form.id,
+ warehouseId:state.form.warehouseId
+ }
+ const res = await handleAvoid(param)
+ if(res.code === 200){
+ ElMessage({
+ type: 'success',
+ message: '处理成功'
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
+ emit("getList")
+ busRef.value.clearValidate();
+ reset();
+ dialogVisible.value = false;
+ }
+}
+const getWareHouseList = async (val) => {
+ let param = {}
+ if(val != ""){
+ param = {
+ name: val
+ }
+ }else {
+ param = {
+ pageNum: 1,
+ pageSize: 10
+ }
+ }
+ const res = await getWarehouse(param)
+ if(res.code == 200){
+ state.wareHouseList = res.data.list.map(item => {
+ return {
+ ...item,
+ children: item.warehouseCupboards && item.warehouseCupboards.length>0 ? item.warehouseCupboards : null
+ }
+ })
+ }else{
+ ElMessage.warning(res.message)
+ }
+}
+const selectWareValue = (val) => {
+ state.form.cupboardId = null
+ state.wareHouseList.forEach(item => {
+ if(item.name === val){
+ state.form.warehouseId = item.id
+ getCupList(item.id)
+ }
+ })
+}
+const getCupList = async (val) => {
+ const res = await getCupById(val)
+ if(res.code == 200) {
+ state.cupList = res.data
+ }else {
+ ElMessage.warning(res.message)
+ }
+}
+
+const handleClose = () => {
+ busRef.value.clearValidate();
+ reset();
+ dialogVisible.value = false;
+ emit("getList")
+}
+const reset = () => {
+ state.form = {
+ id: '',
+ hazmatBasicName: '',
+ warehouseName: '',
+ cupboardId: ''
+ }
+}
+defineExpose({
+ openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+ :deep(.el-form .el-form-item__label) {
+ font-size: 15px;
+ }
+ .file {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+}
+</style>
diff --git a/src/views/hazardousChemicals/avoidWarning/index.vue b/src/views/hazardousChemicals/avoidWarning/index.vue
index 9cb4d7b..0502bb2 100644
--- a/src/views/hazardousChemicals/avoidWarning/index.vue
+++ b/src/views/hazardousChemicals/avoidWarning/index.vue
@@ -1,120 +1,136 @@
<template>
<div class="app-container">
<!-- 卡片部分-->
- <div style="margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between">
- <div style="font-weight: 600;font-size: 22px">实时报警状态</div>
+ <div style="margin-bottom: 10px;display: flex;align-items: center;justify-content: space-between" >
+ <div style="font-weight: 600;font-size: 20px">实时报警状态</div>
<div style="display: flex;align-items: center">
- <div class="card-item-red title-font">
- <el-icon><WarnTriangleFilled /></el-icon>
+ <div class="title-font" style="cursor: pointer" :class="cardQueryParams.warningType == '' ? 'card-item-blue-titleChoose' : 'card-item-blue-title'" @click="chooseType('')">
+ 全部
+ </div>
+ <div class=" title-font" style="cursor: pointer" :class="cardQueryParams.warningType == 1 ? 'card-item-red-titleChoose' : 'card-item-red-title'" @click="chooseType('red')">
+ <el-icon style="margin-right: 3px"><WarnTriangleFilled /></el-icon>
高危报警
</div>
- <div class="card-item-yellow title-font">
- <el-icon><WarningFilled /></el-icon>
+ <div class=" title-font" style="cursor: pointer" :class="cardQueryParams.warningType == 2 ? 'card-item-yellow-titleChoose' : 'card-item-yellow-title'" @click="chooseType('yellow')">
+ <el-icon style="margin-right: 3px"><WarningFilled /></el-icon>
中等风险
</div>
</div>
</div>
- <el-scrollbar max-height="420px" style="padding-right: 10px;overflow-x: hidden;">
+ <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">
- <el-card class="card-item " :class= "item.level == 1 ? 'card-item-red' : 'card-item-yellow' " shadow="always">{{ item.name }}</el-card>
+ <el-card class="card-item " :class= "item.warningType == 1 ? 'card-item-red' : 'card-item-yellow' " shadow="always">
+ <div style="display: flex;align-items: center;justify-content: space-between">
+ {{item.basicName}}
+ <el-tag :color="item.warningType == 1 ? '#FBACAC' : '#FBD59A'" :type="item.warningType == 1 ? 'danger' : 'warning'">{{ item.warningType == 1 ? '危险' : '警告' }}</el-tag>
+ </div>
+ <div style="margin-top: 10px">相忌试剂:{{ item.tabooBasicName }}</div>
+ <div style="margin-top: 10px">存储位置:{{item.warehouseName}}——{{item.cupboardName}}</div>
+ <el-button style="margin-top: 15px;float: right;color: white;margin-bottom: 5px" :color="item.warningType == 1 ? '#ef8a8a' : '#efb965'" @click="handle(item)">立即处理</el-button>
+
+ </el-card>
</el-col>
</el-row>
</el-scrollbar>
+ <el-empty v-else></el-empty>
<!-- 表格部分-->
- <div style="font-weight: 600;font-size: 22px;margin-top: 25px">最近报警记录</div>
+ <div style="font-weight: 600;font-size: 20px;margin-top: 25px">最近报警记录</div>
<div style="margin-top: 10px">
<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="name" align="center" />
- <el-table-column label="相忌试剂" prop="remark" align="center" />
- <el-table-column label="储存位置" prop="remark" align="center" />
- <el-table-column label="风险等级" prop="remark" align="center" />
- <el-table-column label="处理状态" prop="remark" align="center" />
- <el-table-column label="处理人" prop="remark" align="center" />
+ <el-table-column label="时间" prop="createTime" align="center" />
+ <el-table-column label="品名" prop="basicName" align="center" />
+ <el-table-column label="相忌试剂" prop="tabooBasicName" align="center" />
+ <el-table-column label="储存位置" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.warehouseName}}——{{scope.row.cupboardName}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="风险等级" align="center" >
+ <template #default="scope">
+ <el-tag type="danger" v-if="scope.row.warningType == 1">高危</el-tag>
+ <el-tag type="warning" v-else>中等</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="处理状态" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.state == 0 ? '未处理' : '已处理'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="处理人" prop="updateBy" align="center" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
- @pagination="getList"
+ @pagination="getListAll"
/>
</div>
+ <avoid-dialog ref="avoidRef" @getList="getListAll"></avoid-dialog>
</div>
</template>
<script setup>
-import {reactive, ref, toRefs} from "vue";
+import {onMounted, reactive, ref, toRefs} from "vue";
import {getWarehouse} from "@/api/hazardousChemicals/warehouse";
import {ElMessage} from "element-plus";
-
+import avoidDialog from './components/avoidDialog.vue'
+import {getAvoidInfoPage, getAvoidList} from "@/api/hazardousChemicals/avoid";
+const avoidRef = ref(null)
const state = reactive({
queryParams: {
pageNum: 1,
pageSize: 5,
- name: ''
+ warningType: ''
+ },
+ cardQueryParams: {
+ warningType: ''
},
total: 0,
- dataList: [
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 1, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 2, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 1, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 1, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 2, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 1, //1-低危 2-中危 3-高危
- },
- {
- id: 1,
- name: '硫酸与氢氧化钠',
- address: 'S区-1号柜',
- level: 2, //1-低危 2-中危 3-高危
- },
-
- ],
+ dataList: [],
tableList: []
});
-const { queryParams, total, dataList } = toRefs(state);
+const { queryParams,cardQueryParams, total, dataList } = toRefs(state);
const loading = ref(false);
-const getList = async () => {
+onMounted(()=>{
+ getListPage()
+ getList()
+})
+const getListPage = async () => {
loading.value = true
- // const res = await getWarehouse(data.queryParams)
- // if(res.code == 200){
- // data.dataList = res.data.list
- // data.total = res.data.total
- // }else{
- // ElMessage.warning(res.message)
- // }
+ const res = await getAvoidInfoPage(state.queryParams)
+ if(res.code == 200){
+ state.tableList = res.data.list
+ state.total = res.data.total
+ }else{
+ ElMessage.warning(res.message)
+ }
loading.value = false
+}
+const getList = async () => {
+ const res = await getAvoidList(state.cardQueryParams)
+ if(res.code == 200){
+ state.dataList = res.data
+ }else{
+ ElMessage.warning(res.message)
+ }
+}
+const handle = (val) => {
+ avoidRef.value.openDialog(val);
+}
+
+const chooseType = (type) => {
+ state.queryParams.warningType = type == 'red' ? 1 : type == '' ? '' :2
+ state.cardQueryParams.warningType = type == 'red' ? 1 : type == '' ? '' :2
+ getListPage()
+ getList()
+
+}
+const getListAll = () => {
+ getListPage()
+ getList()
}
</script>
@@ -122,8 +138,9 @@
<style scoped lang="scss">
.app-container{
.card-item{
- height: 180px;
+ //height: 160px;
margin-bottom: 10px;
+ //min-width: 300px;
}
.title-font{
display:flex;
@@ -134,16 +151,46 @@
border-radius: 5px
}
.card-item-red{
-
+ cursor: pointer;
color: #f56c6c;
background-color: rgb(254, 240.3, 240.3);
border: 1px solid rgb(253, 225.6, 225.6);
+ }
+ .card-item-red-title{
+ cursor: pointer;
+ color: #f56c6c;
+ background-color: rgb(254, 240.3, 240.3);
+ border: 1px solid rgb(253, 225.6, 225.6);
+ }
+ .card-item-red-titleChoose{
+ color: #f6d1d1;
+ background-color: #f55d5d;
}
.card-item-yellow{
color: #e6a23c;
background-color: rgb(252.5, 245.7, 235.5);
border: 1px solid rgb(250, 236.4, 216);
}
+ .card-item-yellow-title{
+ cursor: pointer;
+ color: #f1950b;
+ background-color: rgb(252.5, 245.7, 235.5);
+ border: 1px solid rgb(250, 236.4, 216);
+ }
+ .card-item-yellow-titleChoose{
+ color: #f6e7d1;
+ background-color: #f1a902;
+ }
+ .card-item-blue-title{
+ cursor: pointer;
+ color: #409eff;
+ background-color: rgb(235.9, 245.3, 255);
+ border: 1px solid rgb(216.8, 235.6, 255);
+ }
+ .card-item-blue-titleChoose{
+ color: #d7e6f6;
+ background-color: #2da0ef;
+ }
:deep(.is-horizontal) {
height: 0;
left: 0;
diff --git a/src/views/hazardousChemicals/electronicWarehouse/components/rawDetail.vue b/src/views/hazardousChemicals/electronicWarehouse/components/rawDetail.vue
index d24f7aa..f2233a0 100644
--- a/src/views/hazardousChemicals/electronicWarehouse/components/rawDetail.vue
+++ b/src/views/hazardousChemicals/electronicWarehouse/components/rawDetail.vue
@@ -64,6 +64,8 @@
</template>
</el-table-column>
<el-table-column label="所在仓库" prop="warehouseName" align="center" />
+ <el-table-column label="存储柜" prop="cupboardName" align="center" />
+
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180" >
<template #default="scope">
<el-button link type="primary" v-if="scope.row.state ===0 || scope.row.state === 1" @click="editNum(scope.row)">零头修改</el-button>
diff --git a/src/views/hazardousChemicals/electronicWarehouse/components/rawTable.vue b/src/views/hazardousChemicals/electronicWarehouse/components/rawTable.vue
index ab349a6..2ce5fb6 100644
--- a/src/views/hazardousChemicals/electronicWarehouse/components/rawTable.vue
+++ b/src/views/hazardousChemicals/electronicWarehouse/components/rawTable.vue
@@ -63,8 +63,8 @@
</template>
</el-table-column>
<el-table-column label="安全库存" prop="hazmatBasic.safeNum" align="center" width="120" />
- <el-table-column label="所在仓库" prop="warehouseName" align="center" >
- </el-table-column>
+ <el-table-column label="所在仓库" prop="warehouseName" align="center" />
+ <el-table-column label="存储柜" prop="cupboardName" align="center" />
<el-table-column label="创建时间" prop="hazmatBasic.createTime" align="center" width="120" />
<!-- <el-table-column label="状态" prop="state" align="center">-->
<!-- <template #default="scope">-->
diff --git a/src/views/hazardousChemicals/electronicWarehouse/components/rawWarehouseRecord.vue b/src/views/hazardousChemicals/electronicWarehouse/components/rawWarehouseRecord.vue
index 811e2ec..7aefb53 100644
--- a/src/views/hazardousChemicals/electronicWarehouse/components/rawWarehouseRecord.vue
+++ b/src/views/hazardousChemicals/electronicWarehouse/components/rawWarehouseRecord.vue
@@ -13,7 +13,7 @@
<el-table-column label="时间" prop="createTime" align="center" width="120" />
<el-table-column label="类型" prop="state" align="center">
<template #default="scope">
- <span>{{scope.row.state ===0 ? '批量导入' : scope.row.state ===1 ? '取用' :scope.row.state ===2 ? '归还': scope.row.state ===3 ? '标签作废' : ''}}</span>
+ <span>{{scope.row.state ===0 ? '批量导入' : scope.row.state ===1 ? '取用' :scope.row.state ===2 ? '归还': scope.row.state ===3 ? '标签作废' : scope.row.state ===5 ? '相忌转入' : scope.row.state ===6 ? '相忌转出' : ''}}</span>
</template>
</el-table-column>
diff --git a/src/views/hazardousChemicals/systemManage/classifyInfoTable/index.vue b/src/views/hazardousChemicals/systemManage/classifyInfoTable/index.vue
index 9ab366b..ff7a1e0 100644
--- a/src/views/hazardousChemicals/systemManage/classifyInfoTable/index.vue
+++ b/src/views/hazardousChemicals/systemManage/classifyInfoTable/index.vue
@@ -40,7 +40,7 @@
<el-table-column label="品名" prop="secientificName" align="center" />
<el-table-column label="别名" prop="aliasName" align="center" />
<el-table-column label="CAS号" prop="cas" align="center" />
- <el-table-column label="危险性类别" prop="riskType" >
+ <el-table-column label="危险性类别" prop="riskType" align="center" >
<template #default="scope">
<div v-html="scope.row.riskType.split('\n').join('<br/>')"></div>
</template>
--
Gitblit v1.9.2