From f2593d3cf80998a831d07cc94ac49e4f51b04429 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Tue, 15 Apr 2025 16:07:28 +0800
Subject: [PATCH] 接口对接
---
src/assets/styles/index.scss | 4
src/views/firework/humiture/index.vue | 167 ++------
src/views/firework/warehouse/components/addRoomDialog.vue | 231 +++++++++++++
src/views/firework/warehouse/components/warehouseDialog.vue | 218 ++++--------
src/views/firework/humiture/components/dataDialog.vue | 67 ++-
src/views/firework/warehouse/index.vue | 46 +-
src/api/company/warehouse.js | 85 +++++
src/views/firework/warehouse/components/roomDialog.vue | 168 +++++++++
src/components/Pagination/index.vue | 4
9 files changed, 686 insertions(+), 304 deletions(-)
diff --git a/src/api/company/warehouse.js b/src/api/company/warehouse.js
new file mode 100644
index 0000000..1d710de
--- /dev/null
+++ b/src/api/company/warehouse.js
@@ -0,0 +1,85 @@
+import request from '@/utils/request'
+import {getToken} from "@/utils/auth";
+
+export function getWarehouse(params) {
+ return request({
+ url: '/store/storePageList',
+ method: 'post',
+ data: params
+ })
+}
+
+export function getRoom(params) {
+ return request({
+ url: '/store/storeroomPageList',
+ method: 'post',
+ data: params
+ })
+}
+export function getRoomByCompany(params) {
+ return request({
+ url: '/store/storeroomPageListV2',
+ method: 'post',
+ data: params
+ })
+}
+
+export function getDevice(params) {
+ return request({
+ url: '/store/storeroomDeviceList',
+ method: 'post',
+ data: params
+ })
+}
+
+
+
+export function addWarehouse(data) {
+ return request({
+ url: '/store/addOrUpdateStore',
+ method: 'post',
+ data: data
+ })
+}
+
+export function addRoom(data) {
+ return request({
+ url: '/store/addOrUpdateStoreroom',
+ method: 'post',
+ data: data
+ })
+}
+
+
+
+export function delWarehouse(data) {
+ return request({
+ url: `/store/deleteStore`,
+ method: 'post',
+ params: data
+ })
+}
+
+export function delRoom(data) {
+ return request({
+ url: `/store/deleteStoreroom`,
+ method: 'post',
+ params: data
+ })
+}
+
+export function getHumidity(data) {
+ return request({
+ url: `/store/humidityPageList`,
+ method: 'post',
+ data: data
+ })
+}
+
+export function getTemperature(data) {
+ return request({
+ url: `/store/temperaturePageList`,
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss
index c28ac66..b84ac11 100644
--- a/src/assets/styles/index.scss
+++ b/src/assets/styles/index.scss
@@ -132,7 +132,7 @@
}
.pagination-container {
- margin-top: 30px;
+ margin-top: 15px;
}
.text-center {
@@ -196,4 +196,4 @@
.blueBg{
background: #385ca7;
-}
\ No newline at end of file
+}
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index 38de953..d4b31ad 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -33,7 +33,7 @@
pageSizes: {
type: Array,
default() {
- return [10, 20, 30, 50]
+ return [5,10, 20, 30, 50]
}
},
// 移动端页码按钮的数量端默认值5
@@ -102,4 +102,4 @@
.pagination-container.hidden {
display: none;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/firework/humiture/components/dataDialog.vue b/src/views/firework/humiture/components/dataDialog.vue
index c5a2afc..4ed7971 100644
--- a/src/views/firework/humiture/components/dataDialog.vue
+++ b/src/views/firework/humiture/components/dataDialog.vue
@@ -10,17 +10,30 @@
>
<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="createTime" align="center" />
- <el-table-column label="浓度值" prop="basicName" align="center" />
- <el-table-column label="状态" prop="tabooBasicName" align="center" />
- <el-table-column label="属性" prop="tabooBasicName" align="center" />
- <el-table-column label="时间" prop="updateBy" align="center" />
+ <el-table-column label="探测器" prop="deviceName" align="center" />
+ <el-table-column label="浓度值" prop="realValue" align="center" >
+ <template #default="scope">
+ <div>{{scope.row.realValue}}<span v-if="state.type == '温度'">℃</span><span v-else>%RH</span></div>
+ </template>
+ </el-table-column>
+ <el-table-column label="状态" prop="deviceWarning" align="center" >
+ <template #default="scope">
+ <span v-if="scope.row.deviceWarning == 0" style="color: #42b983">正常</span>
+ <span v-else style="color: #ed5565">报警</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="属性" align="center" >
+ <template #default="scope">
+ <span>{{state.type}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="时间" prop="createDate" align="center" width="120" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
- v-model:page="queryParams.pageNum"
+ v-model:page="queryParams.pageIndex"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
@@ -29,33 +42,53 @@
</template>
<script setup>
import {reactive, ref, toRefs} from "vue";
+import {getHumidity, getTemperature} from "@/api/company/warehouse";
const dialogVisible = ref(false);
const emit = defineEmits(["getList"]);
const loading = ref(false)
const state = reactive({
+ type: '',
tableList: [],
total: 0,
queryParams: {
- pageNum: 1,
- pageSize: 5,
+ pageIndex: 1,
+ pageSize: 10,
+ filter: {
+ deviceId: null
+ }
},
})
const { queryParams, total } = toRefs(state);
const openDialog = async (type,value) => {
+ state.type = type
+ state.queryParams.filter.deviceId = value.deviceId
+ await getList()
dialogVisible.value = true;
}
const getList = async () => {
- // loading.value = true
- // 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
+ loading.value = true
+ if(state.type == '湿度'){
+ const res = await getHumidity(state.queryParams)
+ if(res.code == 200){
+ state.tableList = res.result.records
+ state.total = res.result.total
+ }else{
+ ElMessage.warning(res.message)
+ }
+ loading.value = false
+ }else {
+ const res = await getTemperature(state.queryParams)
+ if(res.code == 200){
+ state.tableList = res.result.records
+ state.total = res.result.total
+ }else{
+ ElMessage.warning(res.message)
+ }
+ loading.value = false
+ }
+
}
const handleClose = () => {
dialogVisible.value = false;
diff --git a/src/views/firework/humiture/index.vue b/src/views/firework/humiture/index.vue
index dcb763b..01a985c 100644
--- a/src/views/firework/humiture/index.vue
+++ b/src/views/firework/humiture/index.vue
@@ -5,17 +5,13 @@
<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="createTime" align="center" />
- <el-table-column label="库房" prop="basicName" align="center" />
- <el-table-column label="温度值" prop="tabooBasicName" align="center" />
- <el-table-column label="同步时间" prop="updateBy" align="center" />
- <el-table-column label="湿度值" prop="tabooBasicName" align="center" />
- <el-table-column label="同步时间" prop="updateBy" align="center" />
+ <el-table-column label="仓库" prop="storeName" align="center" />
+ <el-table-column label="库房" prop="storeroomName" align="center" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
- v-model:page="queryParams.pageNum"
+ v-model:page="queryParams.pageIndex"
v-model:limit="queryParams.pageSize"
@pagination="getListAll"
/>
@@ -24,20 +20,20 @@
<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 style="display: flex;align-items: center;flex-wrap: wrap">
- <div v-for="(item,index) in state.dataList" :key="index" style="width: 350px;margin: 20px 30px">
+ <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: 15px">{{item.room}}—{{item.stock}}—{{item.device}}</div>
- <div style="display: flex;align-items: center">
+ <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">
- <span>温度:{{item.warm}}</span>
+ <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">
- <span>湿度:{{item.humidity}}</span>
+ <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>
@@ -50,7 +46,7 @@
<!-- </el-col>-->
<!-- </el-row>-->
</el-scrollbar>
- <el-empty v-else></el-empty>
+ <el-empty v-else description="暂无设备数据" ></el-empty>
<d-dialog ref="dialogRef" @getList="getListAll"></d-dialog>
</div>
</template>
@@ -59,86 +55,56 @@
import {onMounted, reactive, ref, toRefs} from "vue";
import {ElMessage} from "element-plus";
import dDialog from './components/dataDialog.vue'
+import {getDevice, getRoomByCompany} from "@/api/company/warehouse";
+import Cookies from "js-cookie";
const dialogRef = ref(null)
const state = reactive({
queryParams: {
- pageNum: 1,
+ pageIndex: 1,
pageSize: 5,
- warningType: ''
+ filter: {
+ companyName: ''
+ }
},
cardQueryParams: {
- warningType: ''
+ pageIndex: 1,
+ pageSize: 5,
+ filter: {
+ companyCode : ''
+ }
},
total: 0,
- dataList: [
- {
- id: 1,
- room: '仓库名称',
- stock: '库存名称',
- device: '设备1',
- humidity: '18%RH',
- warm: '18°'
- },
- {
- id: 1,
- room: '仓库名称',
- stock: '库存名称',
- device: '设备1',
- humidity: '18%RH',
- warm: '18°'
- },
- {
- id: 1,
- room: '仓库名称',
- stock: '库存名称',
- device: '设备1',
- humidity: '18%RH',
- warm: '18°'
- },
- {
- id: 1,
- room: '仓库名称',
- stock: '库存名称',
- device: '设备1',
- humidity: '18%RH',
- warm: '18°'
- },
- {
- id: 1,
- room: '仓库名称',
- stock: '库存名称',
- device: '设备1',
- humidity: '18%RH',
- warm: '18°'
- },
- ],
+ dataList: [],
tableList: []
});
const { queryParams,cardQueryParams, total, dataList } = toRefs(state);
const loading = ref(false);
onMounted(()=>{
+ const info = JSON.parse(Cookies.get('userInfo'))
+ state.queryParams.filter.companyName = info.company
+ state.cardQueryParams.filter.companyCode = info.companynumber
getListPage()
getList()
})
const getListPage = async () => {
- // loading.value = true
- // 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
+ loading.value = true
+ const res = await getRoomByCompany(state.queryParams)
+ if(res.code == 200){
+ state.tableList = res.result.records
+ state.total = res.result.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 res = await getDevice(state.cardQueryParams)
+ if(res.code == 200){
+ state.dataList = res.result
+ }else{
+ ElMessage.warning(res.message)
+ }
}
const openData = (type,val) => {
dialogRef.value.openDialog(type,val);
@@ -159,6 +125,14 @@
margin-bottom: 10px;
//min-width: 300px;
}
+ .grid-container{
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(385px, 1fr));
+ gap: 0px;
+ justify-content: start;
+ padding: 15px;
+ background: #f7f7f7;
+ }
.title-font{
display:flex;
align-items: center;
@@ -166,47 +140,6 @@
font-size: 14px;
margin-right: 10px;
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;
diff --git a/src/views/firework/warehouse/components/addRoomDialog.vue b/src/views/firework/warehouse/components/addRoomDialog.vue
new file mode 100644
index 0000000..0752a24
--- /dev/null
+++ b/src/views/firework/warehouse/components/addRoomDialog.vue
@@ -0,0 +1,231 @@
+<template>
+ <div class="notice">
+ <el-dialog
+ v-model="dialogVisible"
+ width="750px"
+ :before-close="handleClose"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ >
+ <template #header>
+ <div style="text-align: center; width: 100%;font-size: 18px;font-weight: 600">
+ <span>{{title}}库房</span>
+ </div>
+ </template>
+ <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="117px" >
+ <el-form-item>
+ <div style="font-size: 16px;font-weight: 600;margin-top: -25px;margin-left: -110px;margin-bottom: -15px">库房基本信息</div>
+ </el-form-item>
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="库房名称:" prop="storeroomName" >
+ <el-input v-model="state.form.storeroomName" placeholder="请输入库房名称"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="仓库编号:" prop="storeNum" >
+ <el-input v-model="state.form.storeNum" disabled ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="核定药量:" prop="dosage" >
+ <el-input v-model="state.form.dosage" type="number" min="0" placeholder="请输入核定药量">
+ <template #append>kg</template>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="危险等级:" prop="dangerLevel" >
+ <el-select
+ v-model="state.form.dangerLevel"
+ placeholder="请选择"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="item in state.typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="24">
+ <el-col :span="12">
+ <el-form-item label="核定人员数量:" prop="personLimit" >
+ <el-input v-model="state.form.personLimit" placeholder="请输入核定人员数量" @input="state.form.personLimit= state.form.personLimit.replace(/[^\d]/g,'')"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </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 {listDept} from "@/api/system/dept";
+import {listUser} from "@/api/system/user";
+import {addTemplate, editTemplate} from "@/api/signAgreement/template";
+import {addType, editType, getSignType} from "@/api/signAgreement/signType";
+import {getInfo} from "@/api/login";
+import {getToken} from "@/utils/auth";
+import {verifyPhone} from "@/utils/validate";
+import Cookies from "js-cookie";
+import {addRoom, addWarehouse} from "@/api/company/warehouse";
+
+const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址
+const { proxy } = getCurrentInstance();
+const dialogVisible = ref(false);
+const title = ref("");
+const busRef = ref();
+const length = ref()
+const emit = defineEmits(["getList"]);
+const startPhone = ref('');
+const state = reactive({
+ form: {
+ id: '',
+ dangerLevel:null,
+ companyCode: '',
+ storeNum: '',
+ storeroomName: '',
+ personLimit: null,
+ dosage: null
+ },
+ typeList: [
+ {
+ id: 1,
+ name: '1.1级库房'
+ },
+ {
+ id: 2,
+ name: '1.3级库房'
+ },
+ {
+ id: 3,
+ name: '无药库房'
+ },
+ ],
+ storeroomList: [],
+ formRules:{
+ acreage: [{ required: true, trigger: "blur", message:'请输入面积' }],
+ dangerLevel: [{ required: true, trigger: "blur",message:'请选择危险等级' }],
+ dosage: [{ required: true, trigger: "blur", message:'请输入核定药量' }],
+ personLimit: [{ required: true, trigger: "blur", message:'请输入核定人员数量' }],
+ storeroomName: [{ required: true, trigger: "blur", message:'请输入库房名称' }],
+ storeNum: [{ required: true, trigger: "blur", message:'请输入仓库编号' }],
+ },
+})
+
+
+const openDialog = async (type,value) => {
+ title.value = type === 'add' ? '新增' : '编辑'
+ const info = JSON.parse(Cookies.get('userInfo'))
+ state.form.companyCode = info.companynumber
+ if(type === 'edit') {
+ const data = JSON.parse(JSON.stringify(value))
+ Object.keys(state.form).forEach(key => {
+ if(data[key]){
+ state.form[key] = data[key]
+ }
+ })
+
+ state.form.dangerLevel = Number(state.form.dangerLevel)
+ }
+ state.form.storeNum = value.storeNum
+ dialogVisible.value = true;
+}
+
+const onSubmit = async () => {
+ console.log('form',state.form)
+ const valid = await busRef.value.validate();
+
+ if(valid){
+ if(title.value === '新增'){
+ const {id,fileList, ...data} = JSON.parse(JSON.stringify(state.form))
+ const res = await addRoom(data)
+ if(res.code == 200){
+ ElMessage({
+ type: 'success',
+ message: '新增成功'
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
+ emit("getList")
+ busRef.value.clearValidate();
+ reset();
+ dialogVisible.value = false;
+ }else if(title.value === '编辑'){
+ const {...data} = JSON.parse(JSON.stringify(state.form))
+ const res = await addRoom(data)
+ if(res.code == 200){
+ ElMessage({
+ type: 'success',
+ message: '编辑成功'
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
+ emit("getList")
+ busRef.value.clearValidate();
+ reset();
+ dialogVisible.value = false;
+ }
+
+ }
+}
+
+
+const handleClose = () => {
+ busRef.value.clearValidate();
+ reset();
+ dialogVisible.value = false;
+ emit("getList")
+}
+const reset = () => {
+ state.form = {
+ id: '',
+ dangerLevel:null,
+ companyCode: '',
+ storeNum: '',
+ storeroomName: '',
+ personLimit: null,
+ dosage: null
+ }
+}
+defineExpose({
+ openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+ :deep(.el-form .el-form-item__label) {
+ font-size: 15px;
+ }
+ :deep(.el-form-item__content) {
+ width: 100%;
+ }
+ .file {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+ .custom-iframe {
+ border: 1px solid #9b9999;
+ /* 隐藏原生滚动条 */
+ overflow: hidden;
+ }
+}
+</style>
diff --git a/src/views/firework/warehouse/components/roomDialog.vue b/src/views/firework/warehouse/components/roomDialog.vue
new file mode 100644
index 0000000..af04773
--- /dev/null
+++ b/src/views/firework/warehouse/components/roomDialog.vue
@@ -0,0 +1,168 @@
+<template>
+ <div class="notice">
+ <el-dialog
+ v-model="dialogVisible"
+ width="750px"
+ :before-close="handleClose"
+ :close-on-press-escape="false"
+ :close-on-click-modal="false"
+ >
+
+ <div style=" width: 100%;font-size: 18px;font-weight: 600;margin-bottom: 20px">
+ <span>库房列表</span>
+ <el-button type="primary" style="margin-left: 15px" @click="addProject('add',{})">新增库房</el-button>
+ </div>
+
+ <!-- 表格数据 -->
+ <el-table v-loading="loading" :data="state.dataList" :border="true">
+ <el-table-column label="序号" type="index" align="center" width="80" />
+ <el-table-column label="库房名称" prop="storeroomName" align="center" />
+ <el-table-column label="仓库编号" prop="storeNum" align="center" />
+ <el-table-column label="危险等级" prop="dangerLevel" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.dangerLevel == 1 ? '1.1级库房' :scope.row.dangerLevel == 2? '1.3级库房' : '无药库房'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="核定药量" prop="dosage" align="center" />
+ <el-table-column label="核定人员数量" prop="personLimit" align="center" width="120"/>
+ <el-table-column label="创建人" prop="createBy" align="center" />
+ <el-table-column label="创建时间" prop="createDate" align="center" width="120"/>
+ <el-table-column label="修改人" prop="updateBy" align="center" />
+ <el-table-column label="修改时间" prop="updateDate" align="center" width="120"/>
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
+ <template #default="scope">
+ <el-button link type="primary" @click="addProject('edit',scope.row)">编辑</el-button>
+ <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ v-show="state.total > 0"
+ :total="state.total"
+ v-model:page="state.queryParams.pageIndex"
+ v-model:limit="state.queryParams.pageSize"
+ @pagination="getList"
+ />
+<!-- <template #footer>-->
+<!-- <span class="dialog-footer">-->
+<!-- <el-button @click="handleClose" size="default">取 消</el-button>-->
+<!-- </span>-->
+<!-- </template>-->
+ </el-dialog>
+ <addRoomDia ref="dialogRef" @getList="getList"></addRoomDia>
+ </div>
+</template>
+<script setup>
+import {reactive, ref, toRefs} from 'vue'
+import {ElMessage, ElMessageBox} from "element-plus";
+import addRoomDia from './addRoomDialog.vue'
+import Cookies from "js-cookie";
+import {addWarehouse, delRoom, delWarehouse, getRoom, getWarehouse} from "@/api/company/warehouse";
+
+const { proxy } = getCurrentInstance();
+const dialogVisible = ref(false);
+const title = ref("");
+const busRef = ref();
+const loading = ref(false);
+const length = ref()
+const dialogRef = ref();
+const emit = defineEmits(["getList"]);
+const state = reactive({
+ dataList: [],
+ total: 0,
+ queryParams: {
+ pageIndex: 1,
+ pageSize: 10,
+ filter: {
+ storeNum: '',
+ companyCode: ''
+ }
+ },
+})
+
+const openDialog = async (value) => {
+ const info = JSON.parse(Cookies.get('userInfo'))
+ state.queryParams.filter.companyCode = info.companynumber
+ state.queryParams.filter.storeNum = value.storeNum
+ await getList()
+ dialogVisible.value = true;
+}
+const getList = async () => {
+ loading.value = true
+ const res = await getRoom(state.queryParams)
+ if(res.code == 200){
+ state.dataList = res.result.records
+ state.total = res.result.total
+ }else{
+ ElMessage.warning(res.message)
+ }
+ loading.value = false
+}
+const handleClose = () => {
+ reset();
+ dialogVisible.value = false;
+ emit("getList")
+}
+const reset = () => {
+ state.queryParams = {
+ pageIndex: 1,
+ pageSize: 10,
+ filter: {
+ storeNum: '',
+ companyCode: ''
+ }
+ }
+ state.dataList = []
+}
+const addProject = (type,value) => {
+ value.storeNum = state.queryParams.filter.storeNum
+ dialogRef.value.openDialog(type,value)
+}
+const handleDelete = (val) => {
+ ElMessageBox.confirm(
+ '确定删除此条数据?',
+ '提示',
+ {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ })
+ .then( async() => {
+ const param = {
+ id: val.id
+ }
+ const res = await delRoom(param)
+ if(res.code == 200){
+ ElMessage.success('数据删除成功')
+ await getList()
+ }else{
+ ElMessage.warning(res.message)
+ }
+ })
+}
+defineExpose({
+ openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+ :deep(.el-form .el-form-item__label) {
+ font-size: 15px;
+ }
+ :deep(.el-form-item__content) {
+ width: 100%;
+ }
+ .file {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ }
+ .custom-iframe {
+ border: 1px solid #9b9999;
+ /* 隐藏原生滚动条 */
+ overflow: hidden;
+ }
+}
+</style>
diff --git a/src/views/firework/warehouse/components/warehouseDialog.vue b/src/views/firework/warehouse/components/warehouseDialog.vue
index c21769b..11e4932 100644
--- a/src/views/firework/warehouse/components/warehouseDialog.vue
+++ b/src/views/firework/warehouse/components/warehouseDialog.vue
@@ -2,7 +2,7 @@
<div class="notice">
<el-dialog
v-model="dialogVisible"
- width="900px"
+ width="750px"
:before-close="handleClose"
:close-on-press-escape="false"
:close-on-click-modal="false"
@@ -18,33 +18,37 @@
</el-form-item>
<el-row :gutter="24">
<el-col :span="12">
- <el-form-item label="仓库名称:" prop="name" >
- <el-input v-model="state.form.name" placeholder="请输入仓库名称"></el-input>
+ <el-form-item label="仓库名称:" prop="storeName" >
+ <el-input v-model="state.form.storeName" placeholder="请输入仓库名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="仓库面积:" prop="name" >
- <el-input v-model="state.form.name" placeholder="请输入仓库面积"></el-input>
+ <el-form-item label="仓库面积:" prop="acreage" >
+ <el-input v-model="state.form.acreage" type="number" min="0" placeholder="请输入仓库面积">
+ <template #append>㎡</template>
+ </el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
- <el-form-item label="仓库编号:" prop="name" >
- <el-input v-model="state.form.name" placeholder="请输入仓库编号"></el-input>
+ <el-form-item label="仓库编号:" prop="storeNum" >
+ <el-input v-model="state.form.storeNum" placeholder="请输入仓库编号"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="核定药量:" prop="name" >
- <el-input v-model="state.form.name" placeholder="请输入核定药量"></el-input>
+ <el-form-item label="核定药量:" prop="dosage" >
+ <el-input v-model="state.form.dosage" type="number" min="0" placeholder="请输入核定药量">
+ <template #append>kg</template>
+ </el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
- <el-form-item label="危险等级:" prop="name" >
+ <el-form-item label="危险等级:" prop="dangerLevel" >
<el-select
- v-model="state.form.typeId"
+ v-model="state.form.dangerLevel"
placeholder="请选择"
style="width: 100%"
>
@@ -58,91 +62,12 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="核定人员数量:" prop="name" >
- <el-input v-model="state.form.name" placeholder="请输入核定人员数量"></el-input>
+ <el-form-item label="核定人员数量:" prop="personLimit" >
+ <el-input v-model="state.form.personLimit" placeholder="请输入核定人员数量" @input="state.form.personLimit= state.form.personLimit.replace(/[^\d]/g,'')"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
- <div style="display: flex;align-items: center">
- <div style="font-size: 16px;font-weight: 600;margin: 10px">库房列表</div>
- <el-button style="margin-left: 10px" type="primary" @click="addRoom">新增库房</el-button>
- </div>
- <el-table :data="state.storeroomList" style="width: 100%;margin-top: 15px" border>
- <el-table-column label="序号" type="index" align="center" width="80" />
- <el-table-column prop="name" label="库房名称" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules">
- <el-form-item prop="name">
- <el-input
- v-model="row.name"
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column prop="code" label="库房编号" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules">
- <el-form-item prop="code">
- <el-input
- v-model="row.code"
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column prop="area" label="面积" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules">
- <el-form-item prop="area">
- <el-input
- v-model="row.area"
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column prop="level" label="危险等级" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules">
- <el-form-item prop="level">
- <el-input
- v-model="row.level"
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column prop="level" label="核定药量" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules">
- <el-form-item prop="level">
- <el-input
- v-model="row.level"
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column prop="num" label="核定人员" align="center">
- <template #default="{ row }">
- <el-form :model="row" :rules="rules" >
- <el-form-item prop="num" >
- <el-input
- v-model="row.num"
-
- />
- </el-form-item>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
- <template #default="scope">
- <el-button link type="danger" @click="delRoom(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose" size="default">取 消</el-button>
@@ -162,6 +87,8 @@
import {getInfo} from "@/api/login";
import {getToken} from "@/utils/auth";
import {verifyPhone} from "@/utils/validate";
+import Cookies from "js-cookie";
+import {addWarehouse} from "@/api/company/warehouse";
const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + "/common/upload"); // 上传文件服务器地址
const { proxy } = getCurrentInstance();
@@ -171,66 +98,55 @@
const length = ref()
const emit = defineEmits(["getList"]);
const startPhone = ref('');
-const validateUserPhone = (rule, value, callback)=>{
- if(value === ''){
- callback(new Error('请输入手机号'))
- }else if(state.title == '编辑' && value == startPhone.value){
- callback()
- } else{
- if(!verifyPhone(value)){
- callback(new Error('手机号格式有误'))
- }
- }
-}
const state = reactive({
form: {
id: '',
- name: '',
- typeId:null,
- phone: '',
+ acreage: '',
+ dangerLevel:null,
+ companyCode: '',
+ storeNum: '',
+ storeName: '',
+ personLimit: null,
+ dosage: null
},
typeList: [
{
id: 1,
- name: '法定代表人'
+ name: '1.1级库房'
},
{
id: 2,
- name: '主要负责人'
+ name: '1.3级库房'
},
{
id: 3,
- name: '安全负责人'
- },
- {
- id: 4,
- name: '保管员'
- },
- {
- id: 5,
- name: '守护员'
+ name: '无药库房'
},
],
storeroomList: [],
formRules:{
- name: [{ required: true, trigger: "blur", message:'请输入姓名' }],
- phone: [{ required: true, trigger: "blur", validator: validateUserPhone }],
- typeId: [{ required: true, trigger: "blur", message:'请选择人员类型' }],
+ acreage: [{ required: true, trigger: "blur", message:'请输入面积' }],
+ dangerLevel: [{ required: true, trigger: "blur",message:'请选择危险等级' }],
+ dosage: [{ required: true, trigger: "blur", message:'请输入核定药量' }],
+ personLimit: [{ required: true, trigger: "blur", message:'请输入核定人员数量' }],
+ storeName: [{ required: true, trigger: "blur", message:'请输入仓库名称' }],
+ storeNum: [{ required: true, trigger: "blur", message:'请输入仓库编号' }],
},
})
-const rules = {
- name: [
- { required: true, message: "姓名不能为空", trigger: "blur" },
- ],
-};
-
const openDialog = async (type,value) => {
title.value = type === 'add' ? '新增' : '编辑'
+ const info = JSON.parse(Cookies.get('userInfo'))
+ state.form.companyCode = info.companynumber
if(type === 'edit') {
- state.form = JSON.parse(JSON.stringify(value))
- startPhone.value = value.phone
+ const data = JSON.parse(JSON.stringify(value))
+ Object.keys(state.form).forEach(key => {
+ if(data[key]){
+ state.form[key] = data[key]
+ }
+ })
+ state.form.dangerLevel = Number(state.form.dangerLevel)
}
dialogVisible.value = true;
}
@@ -242,30 +158,30 @@
if(valid){
if(title.value === '新增'){
const {id,fileList, ...data} = JSON.parse(JSON.stringify(state.form))
- // const res = await addTemplate(data)
- // if(res.code === 200){
- // ElMessage({
- // type: 'success',
- // message: '新增成功'
- // });
- // }else{
- // ElMessage.warning(res.message)
- // }
+ const res = await addWarehouse(data)
+ if(res.code == 200){
+ ElMessage({
+ type: 'success',
+ message: '新增成功'
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
emit("getList")
busRef.value.clearValidate();
reset();
dialogVisible.value = false;
}else if(title.value === '编辑'){
const {...data} = JSON.parse(JSON.stringify(state.form))
- const res = await editTemplate(data)
- // if(res.code === 200){
- // ElMessage({
- // type: 'success',
- // message: '编辑成功'
- // });
- // }else{
- // ElMessage.warning(res.message)
- // }
+ const res = await addWarehouse(data)
+ if(res.code == 200){
+ ElMessage({
+ type: 'success',
+ message: '编辑成功'
+ });
+ }else{
+ ElMessage.warning(res.message)
+ }
emit("getList")
busRef.value.clearValidate();
reset();
@@ -304,9 +220,13 @@
const reset = () => {
state.form = {
id: '',
- name: '',
- typeId:null,
- phone: '',
+ acreage: '',
+ dangerLevel:null,
+ companyCode: '',
+ storeNum: '',
+ storeName: '',
+ personLimit: null,
+ dosage: null
}
state.storeroomList = []
}
diff --git a/src/views/firework/warehouse/index.vue b/src/views/firework/warehouse/index.vue
index 52eaff2..d2cf442 100644
--- a/src/views/firework/warehouse/index.vue
+++ b/src/views/firework/warehouse/index.vue
@@ -9,7 +9,7 @@
icon="Plus"
@click="addProject('add',{})"
>
- 新增
+ 新增仓库
</el-button>
</el-form-item>
<!-- <el-form-item label="姓名:" >-->
@@ -31,19 +31,24 @@
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList" :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="type" align="center" />
- <el-table-column label="面积" prop="phone" align="center" />
- <el-table-column label="危险等级" prop="createBy" align="center" />
- <el-table-column label="核定药量" prop="createBy" align="center" />
- <el-table-column label="核定人员" prop="updateBy" align="center" />
- <el-table-column label="创建人" prop="createTime" align="center" />
- <el-table-column label="创建时间" prop="updateTime" align="center" />
+ <el-table-column label="仓库名称" prop="storeName" align="center" />
+ <el-table-column label="仓库编号" prop="storeNum" align="center" />
+ <el-table-column label="面积" prop="acreage" align="center" />
+ <el-table-column label="危险等级" prop="dangerLevel" align="center" >
+ <template #default="scope">
+ <span>{{scope.row.dangerLevel == 1 ? '1.1级库房' :scope.row.dangerLevel == 2? '1.3级库房' : '无药库房'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="核定药量" prop="dosage" align="center" />
+ <el-table-column label="核定人员数量" prop="personLimit" align="center" width="120"/>
+ <el-table-column label="创建人" prop="createBy" align="center" />
+ <el-table-column label="创建时间" prop="createDate" align="center" width="120"/>
<el-table-column label="修改人" prop="updateBy" align="center" />
- <el-table-column label="修改时间" prop="updateTime" align="center" />
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
+ <el-table-column label="修改时间" prop="updateDate" align="center" width="120"/>
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
<template #default="scope">
<el-button link type="primary" @click="addProject('edit',scope.row)">编辑</el-button>
+ <el-button link type="primary" @click="handleRoom(scope.row)">管理库房</el-button>
<el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
@@ -56,6 +61,7 @@
@pagination="getList"
/>
<warehouseDialog ref="dialogRef" @getList="getList"></warehouseDialog>
+ <room-dialog ref="roomRef" @getList="getList"></room-dialog>
</div>
</template>
@@ -63,12 +69,14 @@
import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
import {ElMessage, ElMessageBox} from "element-plus";
import warehouseDialog from './components/warehouseDialog.vue'
-import {delTemplate, getTemplate} from "@/api/signAgreement/template";
-import {getWarning} from "@/api/company/warning";
+import roomDialog from './components/roomDialog.vue'
import Cookies from "js-cookie";
+import {delWarehouse, getWarehouse} from "@/api/company/warehouse";
+import {subPixelOptimize} from "zrender/lib/graphic/helper/subPixelOptimize";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const dialogRef = ref();
+const roomRef = ref()
const createSignRef = ref();
const data = reactive({
queryParams: {
@@ -100,7 +108,7 @@
}
const getList = async () => {
loading.value = true
- const res = await getWarning(data.queryParams)
+ const res = await getWarehouse(data.queryParams)
if(res.code == 200){
data.dataList = res.result.records
data.total = res.result.total
@@ -132,7 +140,10 @@
type: 'warning',
})
.then( async() => {
- const res = await delTemplate(val.id)
+ const param = {
+ id: val.id
+ }
+ const res = await delWarehouse(param)
if(res.code == 200){
ElMessage.success('数据删除成功')
await getList()
@@ -142,8 +153,9 @@
})
}
-
-
+const handleRoom = (val) => {
+ roomRef.value.openDialog(val)
+}
const getRowKeys = (row) => {
return row.name
}
--
Gitblit v1.9.2