From 34ec919649adfefeecd0418284dd7b02e9ed49b8 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Wed, 23 Apr 2025 15:42:17 +0800
Subject: [PATCH] 添加批发仓库监测预警
---
src/views/monitorAlert/storeAreaManage/components/deviceDialog.vue | 248 ++++
src/api/monitorAlert.js | 156 ++
src/views/monitorAlert/carPeople/index.vue | 168 +++
src/views/monitorAlert/temperatureHumidity/components/thDialog.vue | 205 +++
src/views/monitorAlert/carPeople/components/carPeopleDialog.vue | 102 +
src/views/usermng/warning.vue | 472 ++++----
src/assets/deviceItem.png | 0
src/views/monitorAlert/storeAreaManage/components/addStock.vue | 216 ++++
src/views/monitorAlert/warningInfo/index.vue | 264 ++++
src/views/monitorAlert/storeAreaManage/index.vue | 277 +++++
config/dev.env.js | 11
src/views/monitorAlert/crewInfo/index.vue | 178 +++
src/views/monitorAlert/preWarning/components/preWarningDialog.vue | 102 +
src/views/monitorAlert/preWarning/index.vue | 272 +++++
src/views/monitorAlert/temperatureHumidity/index.vue | 305 +++++
src/views/monitorAlert/warningInfo/components/warningInfoDialog.vue | 102 +
src/views/monitorAlert/crewInfo/components/crewDialog.vue | 122 ++
17 files changed, 2,962 insertions(+), 238 deletions(-)
diff --git a/config/dev.env.js b/config/dev.env.js
index 4007947..992bbc8 100644
--- a/config/dev.env.js
+++ b/config/dev.env.js
@@ -18,12 +18,15 @@
// IMG_API: '"http://39.104.85.193:4105/upload/"',
//
//
-// BASE_API: '"http://192.168.0.70:8100"',
-// IMG_API: '"http://192.168.0.70:8100/upload/"',
+// BASE_API: '"http://192.168.0.12:4105"',
+// IMG_API: '"http://192.168.0.12:4105/upload/"',
+// 贺哥
+ BASE_API: '"http://192.168.2.58:8100"',
+ IMG_API: '"http://192.168.2.58:8100/upload/"',
// 正式地址
- BASE_API: '"http://39.104.85.193:4105"',
- IMG_API: '"http://39.104.85.193:4105/upload/"',
+ // BASE_API: '"http://39.104.85.193:4105"',
+ // IMG_API: '"http://39.104.85.193:4105/upload/"',
// IMG_API: '"http://127.0.0.1:8100/upload/"',
// IMG_API: '"https://sinanoaq.com:8100/upload/"',
// BASE_API: '"http://220.171.99.118:4100"',
diff --git a/src/api/monitorAlert.js b/src/api/monitorAlert.js
new file mode 100644
index 0000000..1fcc1aa
--- /dev/null
+++ b/src/api/monitorAlert.js
@@ -0,0 +1,156 @@
+import request from '@/utils/request'
+import { getToken } from '@/utils/auth'
+
+export function getOriginalPerson(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/originalPerson/pageList',
+ method:'post',
+ data
+ })
+}
+
+export function getOriginalPersonCar(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/originalPerson/selectOriginalPersonCar',
+ method:'post',
+ data
+ })
+}
+
+export function getOriginalAlarm(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/originalAlarm/pageList',
+ method:'post',
+ data
+ })
+}
+
+export function editAlarmInfo(params){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/originalAlarm/editAlarmInfo',
+ method: 'get',
+ params: params || {},
+ })
+}
+
+export function getEarlyPush(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/originalAlarm/earlyPushPageList',
+ method:'post',
+ data
+ })
+}
+
+export function getStorePageList(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/storePageList',
+ method:'post',
+ data
+ })
+}
+
+export function getStoreroomPage(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/storeroomPageList',
+ method:'post',
+ data
+ })
+}
+
+export function getStoreroomPageV2(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/storeroomPageListV2',
+ method:'post',
+ data
+ })
+}
+
+export function getDevicePageList(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/storeroomDevicePageList',
+ method:'post',
+ data
+ })
+}
+
+export function getDeviceList(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '\n' + '/store/storeroomDeviceList',
+ method:'post',
+ data
+ })
+}
+
+export function getTemperaturePage(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/temperaturePageList',
+ method:'post',
+ data
+ })
+}
+
+export function getHumidityPage(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/humidityPageList',
+ method:'post',
+ data
+ })
+}
+
+export function addOrUpdateStoreroomDevice(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/addOrUpdateStoreroomDevice',
+ method:'post',
+ data
+ })
+}
+
+export function deleteStoreroomDevice(data){
+ return request({
+ headers:{
+ 'Authorization':getToken()
+ },
+ url:process.env.BASE_API+ '/store/deleteStoreroomDevice',
+ method:'post',
+ params: data
+ })
+}
diff --git a/src/assets/deviceItem.png b/src/assets/deviceItem.png
new file mode 100644
index 0000000..93f862d
--- /dev/null
+++ b/src/assets/deviceItem.png
Binary files differ
diff --git a/src/views/monitorAlert/carPeople/components/carPeopleDialog.vue b/src/views/monitorAlert/carPeople/components/carPeopleDialog.vue
new file mode 100644
index 0000000..57bec78
--- /dev/null
+++ b/src/views/monitorAlert/carPeople/components/carPeopleDialog.vue
@@ -0,0 +1,102 @@
+<template>
+ <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" :title="title" center
+ width="30%">
+ <el-form ref="form" :rules="formRules" :model="form" label-width="140px" class="form">
+ <el-form-item label="姓名:" prop="name">
+ <el-input v-model.trim="form.name"/>
+ </el-form-item>
+ <el-form-item label="人员类型:" prop="type">
+ <el-select v-model="form.type" placeholder="请选择类型">
+ <el-option
+ v-for="item in typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="联系方式:" prop="phone">
+ <el-input type="number" v-model.number.trim="form.phone"/>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="editDialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="confirm()">确 认</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script>
+ import {updateStorehouseData} from "../../../../api/warehouse";
+
+ export default {
+ name: "crewDialog",
+ data() {
+ return {
+ editDialogVisible: false,
+ title: '',
+ typeList: [
+ {
+ id: 1,
+ name: ''
+ }
+ ],
+ form: {},
+ formRules:{
+ name:[
+ { required: true, message: '请输入姓名', trigger: 'change' },
+ ]
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ methods: {
+ open(){
+ this.editDialogVisible = true;
+ },
+ confirm(){
+ this.$refs.form.validate(async (valid) => {
+ if (valid) {
+ // const res = await updateStorehouseData(this.editForm)
+ // if(res.data.code == 200){
+ // this.$message.success('盘库提交成功')
+ //
+ // }else{
+ // this.$message.warning(res.data.message)
+ // }
+ // this.editDialogVisible = false
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .form{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/carPeople/index.vue b/src/views/monitorAlert/carPeople/index.vue
new file mode 100644
index 0000000..6385f47
--- /dev/null
+++ b/src/views/monitorAlert/carPeople/index.vue
@@ -0,0 +1,168 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div style="display: block;">
+ <!-- <div class="basic_search" style="margin-right: 10px;padding-top: 10px">-->
+ <!-- <span>库房列表:</span>-->
+ <!-- <el-select v-model="listQuery.warehouseId" clearable filterable>-->
+ <!-- <el-option-->
+ <!-- v-for="item in warehouseList"-->
+ <!-- :key="item.id"-->
+ <!-- :label="item.name"-->
+ <!-- :value="item.name"-->
+ <!-- >-->
+ <!-- </el-option>-->
+ <!-- </el-select>-->
+ <!-- </div>-->
+ <div class="basic_search">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search" style="margin-right: 10px">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询
+ </el-button>
+ </div>
+ </div>
+ </div>
+ <br>
+ <div class="table_content">
+ <el-table
+ v-loading="listLoading"
+ :key="tableKey"
+ :data="dataList"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="企业" prop="companyName" align="center"></el-table-column>
+ <el-table-column label="人员数量" prop="personCount" align="center"></el-table-column>
+ <el-table-column label="车辆数量" prop="carCount" align="center"></el-table-column>
+ <el-table-column label="创建人" prop="createBy" align="center"></el-table-column>
+ <el-table-column label="修改人" prop="updateBy" align="center"></el-table-column>
+ <el-table-column label="创建时间" prop="createDate" align="center"></el-table-column>
+ <el-table-column label="修改时间" prop="updateDate" align="center"></el-table-column>
+ <el-table-column label="数据采集时间" prop="collectTime" align="center"></el-table-column>
+ <el-table-column label="数据同步时间" prop="syncTime" align="center"></el-table-column>
+ <el-table-column label="删除标识" prop="deleteFlag" align="center">
+ <template slot-scope="scope">
+ {{scope.row.deleteFlag == 1?'是':'否'}}
+ </template>
+ </el-table-column>
+ <!-- <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">-->
+ <!-- <template slot-scope="scope">-->
+ <!-- <el-button type="text" @click="openDialog('edit',scope.row)">修改</el-button>-->
+ <!-- <el-button type="text" @click="deleteData(scope.row)">删除</el-button>-->
+ <!-- </template>-->
+ <!-- </el-table-column>-->
+ </el-table>
+ <br>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ <car-people-dialog ref="carPeople"></car-people-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import {computePageCount} from "../../../utils";
+import {getOriginalPersonCar} from "../../../api/monitorAlert"
+import carPeopleDialog from "./components/carPeopleDialog"
+
+export default {
+ name: "carPeople",
+ components: {carPeopleDialog},
+ data() {
+ return {
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ warehouseList: [],
+ listLoading: false,
+ dataList: [],
+ listQuery: {
+ filter: {
+ companyCode: '',
+ companyName: ''
+ },
+ pageIndex: 1,
+ pageSize: 10
+ }
+ }
+ },
+ created() {
+ this.getDataList()
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ openDialog(type, data) {
+ this.$refs.carPeople.open(type, data)
+ },
+ deleteData(data) {
+
+ },
+ async getDataList() {
+ let res = await getOriginalPersonCar(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if (Array.isArray(data.records)) {
+ this.dataList = data.records
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ } else {
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+ handleSizeChange: function (val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function (val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset() {
+ this.listQuery = {
+ filter: {
+ companyName: ''
+ },
+ pageIndex: 1,
+ pageSize: 10
+ }
+ this.getDataList()
+ },
+ search() {
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ },
+}
+</script>
+
+<style scoped>
+.basic_search {
+ display: inline-block;
+}
+</style>
diff --git a/src/views/monitorAlert/crewInfo/components/crewDialog.vue b/src/views/monitorAlert/crewInfo/components/crewDialog.vue
new file mode 100644
index 0000000..c212b9e
--- /dev/null
+++ b/src/views/monitorAlert/crewInfo/components/crewDialog.vue
@@ -0,0 +1,122 @@
+<template>
+ <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" :title="title" center
+ width="30%">
+ <el-form ref="form" :rules="formRules" :model="form" label-width="140px" class="form">
+ <el-form-item label="姓名:" prop="personName">
+ <el-input v-model.trim="form.personName"/>
+ </el-form-item>
+ <el-form-item label="人员类型:" prop="type">
+ <el-select v-model="form.type" placeholder="请选择类型">
+ <el-option
+ v-for="item in typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="联系方式:" prop="phone">
+ <el-input type="number" v-model.number.trim="form.phone"/>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="editDialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="confirm()">确 认</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script>
+ import {} from "../../../../api/monitorAlert";
+ import Cookies from "js-cookie"
+ export default {
+ name: "crewDialog",
+ data() {
+ return {
+ editDialogVisible: false,
+ title: '',
+ typeList: [
+ {
+ name: '法定代表人',
+ value: 1
+ },
+ {
+ name: '主要负责人',
+ value: 2
+ },
+ {
+ name: '安全负责人',
+ value: 3
+ },
+ {
+ name: '保管员',
+ value: 4
+ },
+ {
+ name: '守护员',
+ value: 5
+ }
+ ],
+ form: {
+ personName: '',
+ personType: null,
+
+ },
+ formRules:{
+ name:[
+ { required: true, message: '请输入姓名', trigger: 'change' },
+ ]
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ methods: {
+ open(){
+ this.editDialogVisible = true;
+ },
+ confirm(){
+ this.$refs.form.validate(async (valid) => {
+ if (valid) {
+ // const res = await addOriginalPerson(this.editForm)
+ // if(res.data.code == 200){
+ // this.$message.success('盘库提交成功')
+ //
+ // }else{
+ // this.$message.warning(res.data.message)
+ // }
+ this.editDialogVisible = false
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .form{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/crewInfo/index.vue b/src/views/monitorAlert/crewInfo/index.vue
new file mode 100644
index 0000000..0311996
--- /dev/null
+++ b/src/views/monitorAlert/crewInfo/index.vue
@@ -0,0 +1,178 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div>
+ <div class="basic_search">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
+ </div>
+ </div>
+ </div>
+ <br/>
+ <div class="table_content">
+ <el-table
+ v-loading="listLoading"
+ :key="tableKey"
+ :data="dataList"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="姓名" prop="personName" align="center"></el-table-column>
+ <el-table-column label="企业名称" prop="companyName" align="center"></el-table-column>
+ <el-table-column label="人员类型" prop="personType" align="center">
+ <template slot-scope="scope">
+ {{getTypeName(scope.row.personType)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="联系方式" prop="mb" align="center"></el-table-column>
+ <el-table-column label="创建人" prop="createBy" align="center"></el-table-column>
+ <el-table-column label="修改人" prop="updateBy" align="center"></el-table-column>
+ <el-table-column label="创建时间" prop="createDate" align="center"></el-table-column>
+ <el-table-column label="修改时间" prop="updateDate" align="center"></el-table-column>
+<!-- <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">-->
+<!-- <template slot-scope="scope">-->
+<!-- <el-button type="text" @click="openDialog('view',scope.row)">查看</el-button>-->
+<!-- <el-button type="text" @click="deleteData(scope.row)">删除</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+ </el-table>
+ <br/>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ </div>
+ <crew-dialog ref="crewDialog"></crew-dialog>
+ </div>
+</template>
+
+<script>
+import {computePageCount} from "../../../utils";
+import {getOriginalPerson} from "../../../api/monitorAlert"
+import crewDialog from "./components/crewDialog"
+import Cookies from "js-cookie"
+export default {
+ name: "crewInfo",
+ components: {crewDialog},
+ data() {
+ return {
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ Cookies: Cookies,
+ listLoading: false,
+ dataList: [],
+ listQuery: {
+ filter:{
+ companyCode: '',
+ companyName: ''
+ },
+ pageIndex:1,
+ pageSize:10
+ },
+ typeList: [
+ {
+ name: '法定代表人',
+ value: 1
+ },
+ {
+ name: '主要负责人',
+ value: 2
+ },
+ {
+ name: '安全负责人',
+ value: 3
+ },
+ {
+ name: '保管员',
+ value: 4
+ },
+ {
+ name: '守护员',
+ value: 5
+ }
+ ]
+ }
+ },
+ created() {
+ this.getDataList()
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ openDialog(type,data){
+ this.$refs.crewDialog.open(type,data)
+ },
+ deleteData(data){
+
+ },
+ getTypeName(type){
+ return this.typeList.find(i=>i.value == type).name
+ },
+ async getDataList() {
+ let res = await getOriginalPerson(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ }else{
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+ handleSizeChange: function(val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function(val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset(){
+ this.listQuery = {
+ filter:{
+ companyName: ''
+ },
+ pageIndex:1,
+ pageSize:10
+ }
+ this.getDataList()
+ },
+ search(){
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ }
+}
+</script>
+
+<style scoped>
+.basic_search {
+ display: inline-block;
+}
+</style>
diff --git a/src/views/monitorAlert/preWarning/components/preWarningDialog.vue b/src/views/monitorAlert/preWarning/components/preWarningDialog.vue
new file mode 100644
index 0000000..57bec78
--- /dev/null
+++ b/src/views/monitorAlert/preWarning/components/preWarningDialog.vue
@@ -0,0 +1,102 @@
+<template>
+ <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" :title="title" center
+ width="30%">
+ <el-form ref="form" :rules="formRules" :model="form" label-width="140px" class="form">
+ <el-form-item label="姓名:" prop="name">
+ <el-input v-model.trim="form.name"/>
+ </el-form-item>
+ <el-form-item label="人员类型:" prop="type">
+ <el-select v-model="form.type" placeholder="请选择类型">
+ <el-option
+ v-for="item in typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="联系方式:" prop="phone">
+ <el-input type="number" v-model.number.trim="form.phone"/>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="editDialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="confirm()">确 认</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script>
+ import {updateStorehouseData} from "../../../../api/warehouse";
+
+ export default {
+ name: "crewDialog",
+ data() {
+ return {
+ editDialogVisible: false,
+ title: '',
+ typeList: [
+ {
+ id: 1,
+ name: ''
+ }
+ ],
+ form: {},
+ formRules:{
+ name:[
+ { required: true, message: '请输入姓名', trigger: 'change' },
+ ]
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ methods: {
+ open(){
+ this.editDialogVisible = true;
+ },
+ confirm(){
+ this.$refs.form.validate(async (valid) => {
+ if (valid) {
+ // const res = await updateStorehouseData(this.editForm)
+ // if(res.data.code == 200){
+ // this.$message.success('盘库提交成功')
+ //
+ // }else{
+ // this.$message.warning(res.data.message)
+ // }
+ // this.editDialogVisible = false
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .form{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/preWarning/index.vue b/src/views/monitorAlert/preWarning/index.vue
new file mode 100644
index 0000000..edd5c2c
--- /dev/null
+++ b/src/views/monitorAlert/preWarning/index.vue
@@ -0,0 +1,272 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div style="display: block;">
+ <div class="basic_search" style="padding-top: 10px;">
+ <span>按时间查询:</span>
+ <el-date-picker
+ value-format="yyyy-MM-dd HH:mm:ss"
+ v-model="validTime"
+ type="daterange"
+ :default-time="['00:00:00','23:59:59']"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ >
+ </el-date-picker>
+ </div>
+ <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+ <span>推送状态:</span>
+ <el-select v-model="listQuery.filter.pushType" clearable filterable>
+ <el-option key="0" label="未下发" :value="0"></el-option>
+ <el-option key="1" label="已下发" :value="1"></el-option>
+ <el-option key="2" label="已反馈" :value="2"></el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <span>区域:</span>
+ <el-select v-model="listQuery.filter.provinceCode" clearable filterable @change="changeArea('province')">
+ <el-option
+ v-for="item in provinceList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <el-select v-model="listQuery.filter.cityCode" prop="city" clearable filterable @change="changeArea('city')">
+ <el-option
+ v-for="item in cityList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <el-select v-model="listQuery.filter.areaCode" clearable filterable>
+ <el-option
+ v-for="item in districtList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search" style="margin-right: 10px">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
+ </div>
+ </div>
+ </div>
+ <div class="table_content">
+ <el-table
+ v-loading="listLoading"
+ :key="tableKey"
+ :data="dataList"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="企业名称" prop="companyName" align="center"></el-table-column>
+ <el-table-column label="市(地、州)" prop=cityName"" align="center"></el-table-column>
+ <el-table-column label="区县" prop="areaName" align="center"></el-table-column>
+ <el-table-column label="风险等级" prop="riskLevel" align="center"></el-table-column>
+ <el-table-column label="推送状态" prop="pushType" align="center">
+ <template slot-scope="scope">
+ {{ scope.row.pushType == 0?'未下发':scope.row.pushType == 1?'已下发':'已反馈' }}
+ </template>
+ </el-table-column>
+ <el-table-column label="推送内容" prop="pushContent" align="center"></el-table-column>
+ <el-table-column label="反馈意见" prop="feedback" align="center"></el-table-column>
+ <el-table-column label="创建时间" prop="createDate" align="center"></el-table-column>
+ <el-table-column label="创建人" prop="createBy" align="center"></el-table-column>
+ <el-table-column label="更新时间" prop="updateDate" align="center"></el-table-column>
+ <el-table-column label="更新人" prop="updateBy" align="center"></el-table-column>
+<!-- <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">-->
+<!-- <template slot-scope="scope">-->
+<!-- <el-button type="text" @click="handleBack(scope.row)">提交反馈</el-button>-->
+<!-- <el-button type="text" @click="deleteData(scope.row)">标记删除</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+ </el-table>
+ <br>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ <pre-warning-dialog ref="preWarningRef"></pre-warning-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import {computePageCount} from "../../../utils";
+import {regionPifaBox} from "../../../api/stock"
+import preWarningDialog from "./components/preWarningDialog"
+import {getCityListData, getProvinceListData} from "../../../api/area";
+import {getEarlyPush, getOriginalAlarm} from "../../../api/monitorAlert";
+
+export default {
+ name: "preWarning",
+ components: { preWarningDialog },
+ data() {
+ return {
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ validTime: [],
+ areaListQuery: {},
+ provinceList: [],
+ cityList: [],
+ districtList: [],
+ listLoading: false,
+ dataList: [],
+ listQuery: {
+ filter:{
+ createDateStart: '',
+ createDateEnd: '',
+ pushType: null,
+ companyCode: '',
+ companyName: '',
+ provinceCode: '',
+ cityCode: '',
+ areaCode: ''
+ },
+ pageIndex:1,
+ pageSize:10
+ },
+ }
+ },
+ created() {
+ this.getProvince()
+ this.getDataList()
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ openDialog(type,data){
+ this.$refs.preWarningRef.open(type,data)
+ },
+ handleBack(){
+
+ },
+ deleteData(data){
+
+ },
+ async getProvince(){
+ let res = await getProvinceListData()
+ if(res.data.code === "200"){
+ this.provinceList = res.data.result.provinceList
+ }
+ },//获取省
+ async changeArea(value){
+ if(value === 'province'){
+ this.listQuery.filter.cityCode = ''
+ this.listQuery.filter.areaCode = ''
+ this.areaListQuery = {
+ type: 2,
+ parenttype: 1,
+ parentname: this.provinceList.find(i=>i.code == this.listQuery.filter.provinceCode).name
+ }
+ let res = await getCityListData(this.areaListQuery)
+ if(res.data.code === "200"){
+ this.cityList = res.data.result
+ }
+ }else{
+ this.listQuery.filter.areaCode = ''
+ this.areaListQuery = {
+ type: 3,
+ parenttype: 2,
+ parentname:this.cityList.find(i=>i.code == this.listQuery.filter.cityCode).name
+ }
+ let res = await getCityListData(this.areaListQuery)
+ if(res.data.code === "200"){
+ this.districtList = res.data.result
+ }
+ }
+ },//市、镇、街道、委员会
+ async getDataList() {
+ if(this.validTime.length>0){
+ this.listQuery.filter.createDateStart = this.validTime[0]
+ this.listQuery.filter.createDateEnd = this.validTime[1]
+ }
+ let res = await getEarlyPush(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ }else{
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+ handleSizeChange: function(val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function(val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset(){
+ this.listQuery = {
+ filter:{
+ createDateStart: '',
+ createDateEnd: '',
+ pushType: null,
+ companyCode: '',
+ companyName: '',
+ provinceCode: '',
+ cityCode: '',
+ areaCode: ''
+ },
+ pageIndex:1,
+ pageSize:10
+ }
+ this.validTime = []
+ this.cityList= []
+ this.districtList= []
+ this.getDataList()
+ },
+ search(){
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ },
+}
+</script>
+
+<style scoped>
+.basic_search {
+ display: inline-block;
+}
+</style>
diff --git a/src/views/monitorAlert/storeAreaManage/components/addStock.vue b/src/views/monitorAlert/storeAreaManage/components/addStock.vue
new file mode 100644
index 0000000..f757638
--- /dev/null
+++ b/src/views/monitorAlert/storeAreaManage/components/addStock.vue
@@ -0,0 +1,216 @@
+<template>
+ <el-dialog :visible.sync="dialogVisible" :close-on-click-modal="false" :title="dialogTitle" center
+ width="75%" @close="reset()">
+ <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="150px" element-loading-text="保存中...">
+ <div class="part-title">
+ <span>库区基本信息填写</span>
+ </div>
+ <el-divider></el-divider>
+ <div>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="仓库名称:" prop="storeName" >
+ <el-input v-model.trim="dataForm.storeName" :readonly="isDisabled"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="仓库面积:" prop="acreage" class="numInput">
+ <el-input type="number" v-model.number="dataForm.acreage" :readonly="isDisabled"><template slot="append">㎡</template></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="仓库编号:" prop="storeNum" >
+ <el-input v-model.trim="dataForm.storeNum" :readonly="isDisabled"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="核药量:" prop="dosage" class="numInput">
+ <el-input type="number" v-model.number="dataForm.dosage" :readonly="isDisabled"><template slot="append">kg</template></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="危险等级:" prop="dangerLevel" >
+ <el-input v-model.trim="dataForm.dangerLevel" :readonly="isDisabled"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="核定人员:" prop="personLimit" class="numInput">
+ <el-input type="number" v-model.number="dataForm.personLimit" :readonly="isDisabled"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ </div>
+ <div class="part-title">
+ <span>库房列表</span>
+ </div>
+ <el-divider></el-divider>
+ <el-table
+ :data="storeList"
+ border
+ :stripe="false"
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="库房名称" prop="storeroomName" align="center"></el-table-column>
+ <el-table-column label="库房编号" prop="storeroomNum" align="center"></el-table-column>
+ <el-table-column label="面积/㎡" prop="acreage" align="center"></el-table-column>
+ <el-table-column label="危险等级" prop="dangerLevel" align="center">
+ <template slot-scope="scope">
+ {{ scope.row.dangerLevel == '1'?'1.1级库房':scope.row.dangerLevel == '2'?'1.3级库房': '无药库房'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="核定药量/kg" prop="dosage" align="center"></el-table-column>
+ <el-table-column label="核定人员" prop="personLimit" align="center"></el-table-column>
+ <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width"
+ fixed="right">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openDevice(scope.row)">绑定设备</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-form>
+ <br>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="dialogVisible = false">关 闭</el-button>
+ </span>
+ <device-dialog ref="deviceRef"></device-dialog>
+ </el-dialog>
+
+</template>
+
+<script>
+ import {mapGetters} from "vuex";
+ import {getCityListData, getProvinceListData} from "../../../../api/area";
+ import Cookies from 'js-cookie'
+ import {MessageBox} from "_element-ui@2.14.1@element-ui";
+ import {getStoreroomPage, getStoreroomPageV2} from "../../../../api/monitorAlert";
+ import deviceDialog from "./deviceDialog";
+ export default {
+ name: "addStock",
+ components: {deviceDialog},
+ data() {
+ return {
+ dialogVisible: false,
+ dialogTitle: '新增库区',
+ dataForm: {},
+ storeList: [],
+ dataFormRules:{
+ reserveName:[{ required: true, message: '请填写库区名称', trigger: 'blur' }],
+ province:[{ required: true, message: '请选择所在区划', trigger: 'blur' }],
+ city:[{ required: true, message: '请选择所在区划', trigger: 'blur' }],
+ area:[{ required: true, message: '请选择所在区划', trigger: 'blur' }],
+ reserveAddress:[{ required: true, message: '请填写库区地址', trigger: 'blur' }],
+ square:[{ required: true, message: '请填写库区总面积', trigger: 'blur' }],
+ effectiveStorageSquare:[{ required: true, message: '请填写库区有效仓储面积', trigger: 'blur' }],
+ approvedReserves:[{ required: true, message: '请填写库区核定储量', trigger: 'blur' }],
+ nuclearDose:[{ required: true, message: '请填写库区核药量', trigger: 'blur' }]
+ },
+ isDisabled: false
+ }
+ },
+ created() {
+ const t = this
+ },
+ computed: {
+ ...mapGetters([
+ 'userType',
+ 'username'
+ ])
+ },
+ methods: {
+ open(data){
+ this.dialogTitle = '查看仓库'
+ this.dataForm = data
+ this.getDataList(data.companyCode,data.storeNum)
+ this.isDisabled = true
+ this.dialogVisible = true
+ },
+ isKey(key,obj){
+ return key in obj
+ },
+ async getDataList(companyCode,storeNum) {
+ let res = await getStoreroomPage({
+ filter:{
+ provinceCode: '',
+ companyCode: companyCode,
+ storeNum: storeNum,
+ companyName: ''
+ },
+ pageIndex:1,
+ pageSize:9999
+ })
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.storeList = data.records
+ }else{
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ },
+ reset(){
+ this.$refs.dataForm.resetFields()
+ this.$refs.dataForm.clearValidate()
+ this.$emit('refresh')
+ },
+ openDevice(data){
+ this.$refs.deviceRef.open(data)
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .editForm{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+ tr{
+ display: flex;
+ td{
+ flex: 1;
+ display: flex;
+ justify-content: center;
+ padding: 5px;
+ align-items: center;
+ }
+ .w-12{
+ flex: 0.5;
+ }
+ .w-20{
+ flex: 2;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/storeAreaManage/components/deviceDialog.vue b/src/views/monitorAlert/storeAreaManage/components/deviceDialog.vue
new file mode 100644
index 0000000..0e84d12
--- /dev/null
+++ b/src/views/monitorAlert/storeAreaManage/components/deviceDialog.vue
@@ -0,0 +1,248 @@
+<template>
+ <el-dialog :visible.sync="dialogVisible" append-to-body :close-on-click-modal="false" title="设备管理" center width="75%">
+ <el-button type="primary" style="margin-bottom: 20px" @click="openAdd('新增设备',{})">绑定设备</el-button>
+ <el-table
+ :data="deviceList"
+ border
+ :stripe="false"
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="设备名称" prop="deviceName" align="center"></el-table-column>
+ <el-table-column label="设备ID" prop="deviceId" align="center"></el-table-column>
+ <el-table-column label="设备类型" prop="deviceId" align="center">
+ <template slot-scope="scope">
+ {{scope.row.deviceType == 1?'温湿度':'摄像头'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="分组ID" prop="groupId" align="center"></el-table-column>
+ <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openAdd('修改设备',scope.row)">修改</el-button>
+ <el-button type="text" style="color: red" @click="delDevice(scope.row)">删除</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="dialogVisible = false">关 闭</el-button>
+ </span>
+ <el-dialog :visible.sync="addVisible" append-to-body :close-on-click-modal="false" :title="title" center width="50%" @close="reset()">
+ <el-form ref="form" :rules="formRules" :model="deviceForm" label-width="140px" class="form">
+ <el-form-item label="设备名称:" prop="deviceName">
+ <el-input v-model.trim="deviceForm.deviceName"/>
+ </el-form-item>
+ <el-form-item label="设备ID:" prop="deviceId">
+ <el-input v-model.trim="deviceForm.deviceId"/>
+ </el-form-item>
+ <el-form-item label="类型:" prop="deviceType">
+ <el-select v-model="deviceForm.deviceType" placeholder="请选择类型">
+ <el-option key="1" label="温湿度" :value="1"></el-option>
+ <el-option key="2" label="摄像头" :value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="分组ID:" prop="groupId">
+ <el-input v-model.trim="deviceForm.groupId"/>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="addVisible = false">取 消</el-button>
+ <el-button type="primary" @click="confirm()">确 认</el-button>
+ </span>
+ </el-dialog>
+ </el-dialog>
+</template>
+
+<script>
+ import {mapGetters} from "vuex";
+ import {getCityListData, getProvinceListData} from "../../../../api/area";
+ // import {saveReserveInfo, getInfoById, editReserveInfo, delStore} from '../../../api/warehouse'
+ import Cookies from 'js-cookie'
+ import {MessageBox} from "_element-ui@2.14.1@element-ui";
+ import {
+ addOrUpdateStoreroomDevice, deleteStoreroomDevice,
+ getDeviceList,
+ getDevicePageList,
+ getStoreroomPage,
+ getStoreroomPageV2
+ } from "../../../../api/monitorAlert";
+ export default {
+ name: "deviceDialog",
+ data() {
+ return {
+ dialogVisible: false,
+ title: '',
+ addVisible: false,
+ deviceQuery: {
+ companyCode: '',
+ storeNum: '',
+ storeroomNum: '',
+ },
+ deviceList: [],
+ deviceForm: {
+ id: '',
+ companyCode: '',
+ deviceId: '',
+ deviceName: '',
+ deviceType: null,
+ groupId: '',
+ storeNum: '',
+ storeroomNum: ''
+ },
+ formRules:{
+ deviceName:[{ required: true, message: '请输入设备名称', trigger: 'change' },],
+ deviceId:[{ required: true, message: '请输入设备id', trigger: 'change' },],
+ deviceType:[{ required: true, message: '请输入设备类型', trigger: 'change' },],
+ groupId:[{ required: true, message: '请输入分组id', trigger: 'change' },]
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ computed: {
+ ...mapGetters([
+ 'userType',
+ 'username'
+ ])
+ },
+ methods: {
+ open(data){
+ const {companyCode,storeNum,storeroomNum} = data
+ this.deviceQuery = {companyCode,storeNum,storeroomNum}
+ this.getDataList()
+ this.dialogVisible = true
+ },
+ isKey(key,obj){
+ return key in obj
+ },
+ async getDataList() {
+ let res = await getDeviceList({
+ filter: this.deviceQuery
+ })
+ if (res.data.code === "200") {
+ if(Array.isArray(res.data.result)){
+ this.deviceList = res.data.result
+ }else{
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+
+ openAdd(type,data){
+ this.addVisible = true
+ this.title = type
+ this.deviceForm.companyCode = this.deviceQuery.companyCode
+ this.deviceForm.storeNum = this.deviceQuery.storeNum
+ this.deviceForm.storeroomNum = this.deviceQuery.storeroomNum
+
+ console.log(data,'data')
+ if(type == '修改设备'){
+ for(let i in this.deviceForm){
+ if(this.isKey(i,data)){
+ this.deviceForm[i] =data[i]
+ }
+ }
+ }
+ },
+
+ confirm(){
+ this.$refs.form.validate(async (valid) => {
+ if (valid) {
+ const {id,...data} = this.deviceForm
+ const res = await addOrUpdateStoreroomDevice(this.title == '新增设备'?data:this.deviceForm)
+ if(res.data.code == 200){
+ if(this.title == '新增设备'){
+ this.$message.success('设备新增成功')
+ }else{
+ this.$message.success('设备修改成功')
+ }
+ }else{
+ this.$message.warning(res.data.message)
+ }
+ this.addVisible = false
+ await this.getDataList()
+ }
+ })
+ },
+ delDevice(data){
+ const t = this
+ t.$confirm('此操作将删除该设备, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(async () => {
+ const res = await deleteStoreroomDevice({id: data.id})
+ console.log(res,'res')
+ if(res.data.code == 200){
+ t.$message.success('设备删除成功')
+ }else{
+ t.$message.warning(res.data.message)
+ }
+ await this.getDataList()
+ })
+ },
+ reset(){
+ this.deviceForm={
+ id: '',
+ companyCode: '',
+ deviceId: '',
+ deviceName: '',
+ deviceType: null,
+ groupId: '',
+ storeNum: '',
+ storeroomNum: ''
+ }
+ this.$refs.form.clearValidate()
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .editForm{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+ tr{
+ display: flex;
+ td{
+ flex: 1;
+ display: flex;
+ justify-content: center;
+ padding: 5px;
+ align-items: center;
+ }
+ .w-12{
+ flex: 0.5;
+ }
+ .w-20{
+ flex: 2;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/storeAreaManage/index.vue b/src/views/monitorAlert/storeAreaManage/index.vue
new file mode 100644
index 0000000..d944ef0
--- /dev/null
+++ b/src/views/monitorAlert/storeAreaManage/index.vue
@@ -0,0 +1,277 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div class="basic_search">
+ <span>区域:</span>
+ <el-select v-model="listQuery.filter.provinceCode" clearable filterable
+ @change="changeArea('province')">
+ <el-option
+ v-for="item in provinceList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <el-select v-model="listQuery.filter.cityCode" prop="city" clearable filterable
+ @change="changeArea('city')">
+ <el-option
+ v-for="item in cityList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <el-select v-model="listQuery.filter.areaCode" clearable filterable>
+ <el-option
+ v-for="item in districtList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.code"
+ >
+ </el-option>
+ </el-select>
+ </div>
+ <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search" style="margin-right: 10px">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询
+ </el-button>
+ </div>
+ </div>
+ <div class="table_content">
+ <el-table
+ v-loading="listLoading"
+ :data="dataList"
+ border
+ :stripe="false"
+ style="width: 100%;"
+ >
+ <el-table-column label="行政区划" align="center">
+ <template slot-scope="scope">
+ {{ scope.row.provinceName}}
+ </template>
+ </el-table-column>
+ <el-table-column label="企业名称" prop="companyName" align="center"></el-table-column>
+ <el-table-column label="仓库名称" prop="storeName" align="center"></el-table-column>
+ <el-table-column label="仓库编号" prop="storeNum" align="center"></el-table-column>
+ <el-table-column label="面积/㎡" prop="acreage" align="center"></el-table-column>
+ <el-table-column label="危险等级" prop="dangerLevel" align="center">
+ <template slot-scope="scope">
+ {{ scope.row.dangerLevel == '1'?'1.1级库房':scope.row.dangerLevel == '2'?'1.3级库房': '无药库房'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="核定药量/kg" prop="dosage" align="center"></el-table-column>
+ <el-table-column label="核定人员" prop="personLimit" align="center"></el-table-column>
+ <el-table-column label="创建人" prop="createBy" align="center"></el-table-column>
+ <el-table-column label="修改人" prop="updateBy" align="center"></el-table-column>
+ <el-table-column label="创建时间" prop="createDate" align="center"></el-table-column>
+ <el-table-column label="修改时间" prop="updateDate" align="center"></el-table-column>
+ <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width"
+ fixed="right">
+ <template slot-scope="scope">
+ <el-button type="text" @click="openStock(scope.row)">查看</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <br>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ <add-stock ref="addStock"></add-stock>
+ </div>
+ </div>
+</template>
+
+<script>
+import {computePageCount} from "../../../utils";
+import addStock from "./components/addStock"
+// import deliverUsage from "./components/deliverUsage"
+// import stockRecords from "./components/stockRecords"
+// import editStock from "./components/editStock"
+// import enterpriseStock from "./components/enterpriseStock"
+import Cookies from "js-cookie"
+import {getOriginalPerson, getStorePageList} from "../../../api/monitorAlert";
+import {getCityListData, getProvinceListData} from "../../../api/area";
+
+export default {
+ name: "stockManage",
+ components: {addStock},
+ data() {
+ return {
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ provinceList: [],
+ cityList: [],
+ districtList: [],
+ areaListQuery: {},
+ Cookies: Cookies,
+ listLoading: false,
+ dataList: [],
+ isAdmin: false,
+ listQuery: {
+ filter: {
+ companyCode: '',
+ companyName: '',
+ provinceCode: '',
+ cityCode: '',
+ areaCode: ''
+ },
+ pageIndex: 1,
+ pageSize: 10
+ }
+ }
+ },
+ created() {
+ const t = this
+ t.getDataList()
+ t.getProvince()
+ const roles = JSON.parse(Cookies.get('roles'))
+ if (roles.find(i => i.name == '管理员' || i.name == '监管部门')) {
+ this.isAdmin = true
+ } else {
+ this.isAdmin = false
+ }
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ handleSizeChange: function (val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function (val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset() {
+ this.listQuery = {
+ filter: {
+ companyCode: '',
+ companyName: '',
+ provinceCode: '',
+ cityCode: '',
+ areaCode: ''
+ },
+ pageIndex: 1,
+ pageSize: 10
+ }
+ this.cityList = []
+ this.districtList = []
+ this.getDataList()
+ },
+ search() {
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ },
+ async getProvince() {
+ let res = await getProvinceListData()
+ if (res.data.code === "200") {
+ this.provinceList = res.data.result.provinceList
+ }
+ },//获取省
+ async changeArea(value) {
+ if (value === 'province') {
+ this.listQuery.filter.cityCode = ''
+ this.listQuery.filter.areaCode = ''
+ this.areaListQuery = {
+ type: 2,
+ parenttype: 1,
+ parentname: this.provinceList.find(i => i.code == this.listQuery.filter.provinceCode).name
+ }
+ let res = await getCityListData(this.areaListQuery)
+ if (res.data.code === "200") {
+ this.cityList = res.data.result
+ }
+ } else {
+ this.listQuery.filter.areaCode = ''
+ this.areaListQuery = {
+ type: 3,
+ parenttype: 2,
+ parentname: this.cityList.find(i => i.code == this.listQuery.filter.cityCode).name
+ }
+ let res = await getCityListData(this.areaListQuery)
+ if (res.data.code === "200") {
+ this.districtList = res.data.result
+ }
+ }
+ },//市、镇、街道、委员会
+ async getDataList() {
+ const res = await getStorePageList(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if (Array.isArray(data.records)) {
+ this.dataList = data.records
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ } else {
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+
+ openStock(data) {
+ const t = this
+ t.$refs.addStock.open(data)
+ },
+ openRecord(row) {
+ const t = this
+ t.$refs.stockRecords.open(row)
+ },
+ showEnterprises(row) {
+ const t = this
+ t.$refs.enterStock.open(row, '管理')
+ },
+ deliverUsage(row) {
+ const t = this
+ t.$refs.deliverUsage.open(row)
+ },
+
+ stockEdit(row) {
+ const t = this
+ t.$refs.editStock.open(row)
+
+ }
+ },
+}
+</script>
+<style>
+.el-table .hovered-row {
+ background: #f5f7fa;
+}
+</style>
+<style scoped>
+.basic_search {
+ display: inline-block;
+}
+
+/deep/ .el-table .el-table__body-wrapper table tr:nth-child(2n) td {
+ background: #fff !important;
+}
+</style>
diff --git a/src/views/monitorAlert/temperatureHumidity/components/thDialog.vue b/src/views/monitorAlert/temperatureHumidity/components/thDialog.vue
new file mode 100644
index 0000000..3c38085
--- /dev/null
+++ b/src/views/monitorAlert/temperatureHumidity/components/thDialog.vue
@@ -0,0 +1,205 @@
+<template>
+ <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" :title="title+'历史记录'" center width="75%">
+ <div style="display: flex">
+ <div class="basic_search">
+ <span>按时间查询:</span>
+ <el-date-picker
+ value-format="yyyy-MM-dd HH:mm:ss"
+ v-model="validTime"
+ type="daterange"
+ :default-time="['00:00:00','23:59:59']"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ >
+ </el-date-picker>
+ </div>
+ <div class="basic_search" style="margin: 0 10px">
+ <span>状态:</span>
+ <el-select v-model="listQuery.filter.deviceWarning" clearable filterable>
+ <el-option key="1" label="正常" :value="0"></el-option>
+ <el-option key="2" label="异常" :value="1"></el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
+ </div>
+ </div>
+ <br/>
+ <div class="table_content">
+ <el-table
+ :key="tableKey"
+ :data="dataList"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ >
+ <el-table-column label="浓度值" prop="realValue" align="center">
+ <template slot-scope="scope">
+ <span v-if="title == '温度'">{{scope.row.realValue}}℃</span>
+ <span v-else>{{scope.row.realValue}}%RH</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="状态" prop="deviceWarning" align="center">
+ <template slot-scope="scope">
+ <el-tag type="success" v-if="scope.row.deviceWarning == 0">正常</el-tag>
+ <el-tag type="danger" v-else>异常</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="时间" align="center">
+ <template slot-scope="scope">
+ {{scope.row.syncTime?scope.row.syncTime:scope.row.createDate }}
+ </template>
+ </el-table-column>
+ </el-table>
+ <br/>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="editDialogVisible = false">确 认</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script>
+ import {updateStorehouseData} from "../../../../api/warehouse";
+ import {getHumidityPage, getOriginalPerson, getTemperaturePage} from "../../../../api/monitorAlert";
+
+ export default {
+ name: "thDialog",
+ data() {
+ return {
+ editDialogVisible: false,
+ title: '',
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ dataList: [],
+ validTime: [],
+ listQuery: {
+ filter:{
+ deviceId: null,
+ deviceWarning: null,
+ createDateStart: '',
+ createDateEnd: ''
+ },
+ pageIndex:1,
+ pageSize:10
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ methods: {
+ open(type,data){
+ this.editDialogVisible = true
+ this.dataList = []
+ this.listQuery.filter.deviceId = data.deviceId
+ this.title = type
+ this.getDataList()
+ },
+ async getDataList() {
+ this.listQuery.filter.createDateStart = this.validTime[0]?this.validTime[0]:''
+ this.listQuery.filter.createDateEnd = this.validTime[1]?this.validTime[1]:''
+ if(this.title == '温度'){
+ getTemperaturePage(this.listQuery).then((res)=>{
+ if(res.data.code == "200"){
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ }else{
+ this.dataList = []
+ }
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ })
+ }else{
+ getHumidityPage(this.listQuery).then((res)=>{
+ if(res.data.code == "200"){
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records
+ }else{
+ this.dataList = []
+ }
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ })
+ }
+ },
+ handleSizeChange: function(val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function(val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset(){
+ this.listQuery.filter.deviceWarning = null
+ this.listQuery.filter.createDateStart = ''
+ this.listQuery.filter.createDateEnd = ''
+ this.validTime = []
+ this.listQuery.pageIndex = 1
+ this.listQuery.pageSize = 10
+ this.getDataList()
+ },
+ search(){
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .form{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/temperatureHumidity/index.vue b/src/views/monitorAlert/temperatureHumidity/index.vue
new file mode 100644
index 0000000..b8f6184
--- /dev/null
+++ b/src/views/monitorAlert/temperatureHumidity/index.vue
@@ -0,0 +1,305 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div>
+ <div class="basic_search">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
+ </div>
+ </div>
+ </div>
+ <br/>
+ <div class="table_content">
+ <el-tree :data="dataTree" highlight-current class="left-tree" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
+ <div class="cardList" v-if="deviceList.length>0">
+ <div class="card-item" v-for="(item,index) in deviceList" :key="index">
+ <div class="itemTitle">
+ {{item.storeName}}-{{item.storeroomName}}-{{item.deviceName }}
+ </div>
+ <div class="cont">
+ <img :src="deviceItem">
+ <div class="rightCont">
+ <div class="rightItem">
+ <span>温度: {{item.temperatureValue }}℃</span>
+ <el-button size="mini" plain type="primary" @click="openHistory('温度',item)">历史数据</el-button>
+ </div>
+ <div class="rightItem">
+ <span>湿度: {{item.humidityValue }}%RH</span>
+ <el-button size="mini" plain type="primary" @click="openHistory('湿度',item)">历史数据</el-button>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ <div class="cardList" v-else>
+ <div style="color: #999;padding-top: 15px;padding-left: 20px">暂无设备信息...</div>
+ </div>
+ <th-dialog ref="thRef"></th-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import thDialog from "./components/thDialog"
+import {
+ getDeviceList,
+ getDevicePageList,
+ getOriginalPerson,
+ getStorePageList,
+ getStoreroomPageV2
+} from "../../../api/monitorAlert";
+import deviceItem from "../../../assets/deviceItem.png"
+
+export default {
+ name: "temperatureHumidity",
+ components: { thDialog },
+ data() {
+ return {
+ deviceItem: deviceItem,
+ tableKey: '',
+ listLoading: false,
+ dataList: [],
+ dataTree: [],
+ listQuery: {
+ filter:{
+ companyName: ''
+ },
+ pageIndex:1,
+ pageSize:9999
+ },
+ defaultProps: {
+ children: 'children',
+ label: 'name'
+ },
+ deviceQuery: {
+ filter:{
+ companyCode: '',
+ storeNum: '',
+ storeroomNum: '',
+ deviceType: 1
+ }
+ },
+ deviceList: []
+ }
+ },
+ created() {
+ this.getDataList()
+ this.getDeviceList()
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ openHistory(type,data){
+ this.$refs.thRef.open(type,data)
+ },
+ deleteData(data){
+
+ },
+ handleNodeClick(data) {
+ this.deviceQuery.filter = {
+ companyCode: '',
+ storeNum: '',
+ storeroomNum: '',
+ deviceType: 1
+ }
+ if(data.type == 1){
+ this.deviceQuery.filter.companyCode = data.code
+ this.getDeviceList()
+ }else if(data.type == 2){
+ this.deviceQuery.filter.storeNum = data.code
+ this.getDeviceList()
+ }else{
+ this.deviceQuery.filter.storeroomNum = data.code
+ this.getDeviceList()
+ }
+ },
+ async getDataList() {
+ let res = await getStoreroomPageV2(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records
+ if(data.records.length>0){
+ this.dataTree = this.transformToTree(data.records)
+ }else{
+ this.dataTree = []
+ }
+ }else{
+ this.dataList = []
+ this.dataTree = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ this.listLoading = false
+ },
+
+ async getDeviceList(){
+ let res = await getDeviceList(this.deviceQuery)
+ if (res.data.code === "200"){
+ this.deviceList = res.data.result
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ },
+
+ transformToTree(data) {
+ const tree = [];
+ const companyMap = new Map()
+ data.forEach(item => {
+ const companyKey = item.companyCode;
+ let companyNode = companyMap.get(companyKey);
+ if (!companyNode) {
+ companyNode = {
+ id: item.companyCode,
+ code: item.companyCode,
+ name: item.companyName,
+ children: [],
+ type: 1
+ };
+ companyMap.set(companyKey, companyNode);
+ tree.push(companyNode);
+ }
+ const storeKey = `${companyKey}-${item.storeName}`;
+ let storeNode = companyNode.children.find(child => child.name === item.storeName);
+ if (!storeNode) {
+ storeNode = {
+ id: storeKey,
+ code: item.storeNum,
+ name: item.storeName,
+ children: [],
+ type: 2
+ };
+ companyNode.children.push(storeNode);
+ }
+
+ const storeroomKey = `${storeKey}-${item.storeroomNum}`;
+ let storeroomNode = storeNode.children.find(child => child.code === item.storeroomNum);
+ if (!storeroomNode) {
+ storeroomNode = {
+ ...item, // 保留原始数据
+ id: storeroomKey,
+ code: item.storeroomNum,
+ name: item.storeroomName,
+ type: 3
+ };
+ storeNode.children.push(storeroomNode);
+ }
+ });
+ return tree;
+ },
+
+ reset(){
+ this.listQuery = {
+ filter:{
+ companyName: ''
+ },
+ pageIndex:1,
+ pageSize:9999
+ }
+ this.deviceQuery.filter = {
+ companyCode: '',
+ storeNum: '',
+ storeroomNum: '',
+ deviceType: 1
+ }
+ this.getDataList()
+ },
+ search(){
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.basic_search {
+ display: inline-block;
+}
+
+.table_content{
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+}
+
+.left-tree{
+ width: 20%;
+ /deep/.el-tree-node{
+ .el-tree-node__content{
+ padding: 10px 0;
+ height: auto;
+ .el-tree-node__label{
+ font-size: 16px;
+ }
+ }
+ }
+ /deep/.is-current>.el-tree-node__content{
+ background-color: #034ea2;
+ color: #fff;
+ }
+}
+
+.cardList{
+ width: 80%;
+ padding: 0 10px 10px;
+ display: grid;
+ grid-gap: 20px;
+ grid-template-columns: repeat(2, 1fr);
+
+ .card-item{
+ width: 100%;
+ background: #f5f5f5;
+ padding: 15px;
+ border-radius: 8px;
+ cursor: pointer;
+
+ .itemTitle{
+ width: 100%;
+ font-size: 18px;
+ font-weight: bolder;
+ margin-bottom: 10px;
+ }
+ .cont{
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ img{
+ width: 100px;
+ height: 100px;
+ object-fit: cover;
+ }
+ .rightCont{
+ width: calc(100% - 110px);
+ display: flex;
+ flex-direction: column;
+ justify-content: space-around;
+ .rightItem{
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ &:first-of-type{
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+
+ }
+}
+</style>
diff --git a/src/views/monitorAlert/warningInfo/components/warningInfoDialog.vue b/src/views/monitorAlert/warningInfo/components/warningInfoDialog.vue
new file mode 100644
index 0000000..57bec78
--- /dev/null
+++ b/src/views/monitorAlert/warningInfo/components/warningInfoDialog.vue
@@ -0,0 +1,102 @@
+<template>
+ <el-dialog :visible.sync="editDialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" :title="title" center
+ width="30%">
+ <el-form ref="form" :rules="formRules" :model="form" label-width="140px" class="form">
+ <el-form-item label="姓名:" prop="name">
+ <el-input v-model.trim="form.name"/>
+ </el-form-item>
+ <el-form-item label="人员类型:" prop="type">
+ <el-select v-model="form.type" placeholder="请选择类型">
+ <el-option
+ v-for="item in typeList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="联系方式:" prop="phone">
+ <el-input type="number" v-model.number.trim="form.phone"/>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="editDialogVisible = false">取 消</el-button>
+ <el-button type="primary" @click="confirm()">确 认</el-button>
+ </span>
+ </el-dialog>
+</template>
+
+<script>
+ import {updateStorehouseData} from "../../../../api/warehouse";
+
+ export default {
+ name: "crewDialog",
+ data() {
+ return {
+ editDialogVisible: false,
+ title: '',
+ typeList: [
+ {
+ id: 1,
+ name: ''
+ }
+ ],
+ form: {},
+ formRules:{
+ name:[
+ { required: true, message: '请输入姓名', trigger: 'change' },
+ ]
+ }
+ }
+ },
+ created() {
+ const t = this
+ },
+ methods: {
+ open(){
+ this.editDialogVisible = true;
+ },
+ confirm(){
+ this.$refs.form.validate(async (valid) => {
+ if (valid) {
+ // const res = await updateStorehouseData(this.editForm)
+ // if(res.data.code == 200){
+ // this.$message.success('盘库提交成功')
+ //
+ // }else{
+ // this.$message.warning(res.data.message)
+ // }
+ // this.editDialogVisible = false
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .part-title{
+ font-size: 16px;
+ font-weight: bolder;
+ }
+ .selector{
+ /deep/ .el-form-item__content{
+ margin-left: 0 !important;
+ }
+ }
+ .form{
+ .el-form-item{
+ display: flex !important;
+ }
+ /deep/ .el-form-item__content{
+ width: 100%;
+ margin-left: 0 !important;
+ }
+ }
+
+ .numInput{
+ /deep/ .el-input__inner{
+ padding-right: 0;
+ }
+ }
+</style>
diff --git a/src/views/monitorAlert/warningInfo/index.vue b/src/views/monitorAlert/warningInfo/index.vue
new file mode 100644
index 0000000..e629606
--- /dev/null
+++ b/src/views/monitorAlert/warningInfo/index.vue
@@ -0,0 +1,264 @@
+<template>
+ <div class="app-container">
+ <div class="filter-container">
+ <div style="display: block;">
+ <div class="basic_search" style="padding-top: 10px;">
+ <span>按时间查询:</span>
+ <el-date-picker
+ value-format="yyyy-MM-dd HH:mm:ss"
+ v-model="validTime"
+ type="daterange"
+ :default-time="['00:00:00','23:59:59']"
+ range-separator="-"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ >
+ </el-date-picker>
+ </div>
+ <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+ <span>状态:</span>
+ <el-select v-model="listQuery.filter.alarmStatus" clearable filterable>
+ <el-option key="0" label="全部" value=""></el-option>
+ <el-option key="1" label="未销警" :value="0"></el-option>
+ <el-option key="2" label="已销警" :value="1"></el-option>
+ </el-select>
+ </div>
+ <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+ <span>报警类型:</span>
+ <el-select v-model="listQuery.filter.alarmType" clearable filterable>
+ <el-option key="1" label="超员作业" :value="1"></el-option>
+ <el-option key="2" label="堵塞通道" :value="2"></el-option>
+ <el-option key="3" label="超高超量" :value="3"></el-option>
+ <el-option key="4" label="非法入侵" :value="4"></el-option>
+ <el-option key="5" label="摄像头遮挡偏移" :value="5"></el-option>
+ <el-option key="6" label="温度" :value="6"></el-option>
+ <el-option key="7" label="湿度" :value="7"></el-option>
+ </el-select>
+ </div>
+ <div class="basic_search">
+ <span>企业名称:</span>
+ <el-input v-model.trim="listQuery.filter.companyName" style="width: 300px"/>
+ </div>
+ <div class="basic_search" style="margin-right: 10px">
+ <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+ <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="search()">查询</el-button>
+ </div>
+ </div>
+ </div>
+ <div class="table_content">
+ <el-table
+ :key="tableKey"
+ :data="dataList"
+ border
+ fit
+ highlight-current-row
+ style="width: 100%;"
+ >
+ <el-table-column label="序号" type="index" align="center"></el-table-column>
+ <el-table-column label="企业" prop="companyName" align="center"></el-table-column>
+ <el-table-column label="仓库" prop="storeName" align="center"></el-table-column>
+ <el-table-column label="库房" prop="storeroomName" align="center"></el-table-column>
+ <el-table-column label="报警类型" prop="alarmType" align="center">
+ <template slot-scope="scope">
+ {{getTypeName(scope.row.alarmType)}}
+ </template>
+ </el-table-column>
+ <el-table-column label="报警状态" prop="alarmStatus" align="center">
+ <template slot-scope="scope">
+ {{ scope.row.alarmStatus == 1?'已销警':'未销警' }}
+ </template>
+ </el-table-column>
+ <el-table-column label="报警图片" prop="alarmFile" align="center">
+ <template slot-scope="scope">
+ <el-image style="width: 100px; height: 100px" :preview-src-list="[scope.row.alarmFile]" :src="scope.row.alarmFile" fit="cover"></el-image>
+ </template>
+ </el-table-column>
+ <el-table-column label="报警时间" prop="warningDate" align="center"></el-table-column>
+ <el-table-column label="销警时间" prop="clearDate" align="center"></el-table-column>
+<!-- <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width" fixed="right">-->
+<!-- <template slot-scope="scope">-->
+<!-- <el-button type="text" @click="clearWarning(scope.row.id)">销警</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+ </el-table>
+ <br>
+ <div style="display: flex;justify-content: right">
+ <el-pagination
+ v-show="recordTotal>0"
+ :current-page="currentPage"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="listQuery.pageSize"
+ :total="recordTotal"
+ layout="total, sizes, prev, pager, next, jumper"
+ background
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ />
+ </div>
+ <warning-info-dialog ref="warningInfoRef"></warning-info-dialog>
+ </div>
+ </div>
+</template>
+
+<script>
+import {computePageCount} from "../../../utils";
+import {regionPifaBox} from "../../../api/stock"
+import warningInfoDialog from "./components/warningInfoDialog"
+import {editAlarmInfo, getOriginalAlarm, getOriginalPerson} from "../../../api/monitorAlert";
+
+export default {
+ name: "warningInfo",
+ components: { warningInfoDialog },
+ data() {
+ return {
+ tableKey: '',
+ recordTotal: 0,
+ currentPage: 1,
+ validTime: [],
+ dataList: [],
+ listQuery: {
+ filter:{
+ alarmStartTime: '',
+ alarmEndTime: '',
+ alarmStatus: null,
+ companyCode: '',
+ companyName: '',
+ alarmType: null
+ },
+ pageIndex:1,
+ pageSize:10
+ },
+ typeList: [
+ {
+ name: '超员作业',
+ value: 1
+ },
+ {
+ name: '堵塞通道',
+ value: 2
+ },
+ {
+ name: '超高超量',
+ value: 3
+ },
+ {
+ name: '非法入侵',
+ value: 4
+ },
+ {
+ name: '摄像头遮挡偏移',
+ value: 5
+ },
+ {
+ name: '温度',
+ value: 6
+ },
+ {
+ name: '湿度',
+ value: 7
+ }
+ ]
+ }
+ },
+ created() {
+ this.getDataList()
+ },
+ mounted() {
+ },
+ watch: {},
+ methods: {
+ openDialog(type,data){
+ this.$refs.warningInfoRef.open(type,data)
+ },
+ clearWarning(id){
+ this.$confirm('确定执行销警操作?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(async() => {
+ let res = await editAlarmInfo({id: id})
+ if (res.data.code === "200") {
+ this.$message({
+ type: 'success',
+ message: res.data.message
+ })
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '已取消'
+ });
+ });
+ },
+ getTypeName(type){
+ return this.typeList.find(i=>i.value == type).name
+ },
+ async getDataList() {
+ if(this.validTime.length>0){
+ this.listQuery.filter.alarmStartTime = this.validTime[0]
+ this.listQuery.filter.alarmEndTime = this.validTime[1]
+ }
+ let res = await getOriginalAlarm(this.listQuery)
+ if (res.data.code === "200") {
+ const data = res.data.result
+ if(Array.isArray(data.records)){
+ this.dataList = data.records.map(item => {
+ return {
+ ...item,
+ alarmFile: process.env.IMG_API + item.alarmFile
+ }
+ })
+ this.recordTotal = data.total
+ this.currentPage = data.current
+ }else{
+ this.dataList = []
+ }
+ } else {
+ this.$message({
+ type: 'warning',
+ message: res.data.message
+ })
+ }
+ },
+ handleSizeChange: function(val) {
+ this.listQuery.pageSize = val
+ this.getDataList()
+ },
+ handleCurrentChange: function(val) {
+ this.listQuery.pageIndex = val
+ this.getDataList()
+ },
+ reset(){
+ this.listQuery = {
+ filter:{
+ alarmStartTime: '',
+ alarmEndTime: '',
+ alarmStatus: null,
+ companyCode: '',
+ companyName: '',
+ alarmType: null
+ },
+ pageIndex:1,
+ pageSize:10
+ }
+ this.validTime = []
+ this.getDataList()
+ },
+ search(){
+ this.listQuery.pageIndex = 1
+ this.getDataList()
+ }
+ },
+}
+</script>
+
+<style scoped>
+.basic_search {
+ display: inline-block;
+}
+</style>
diff --git a/src/views/usermng/warning.vue b/src/views/usermng/warning.vue
index 2f5b15b..561975c 100644
--- a/src/views/usermng/warning.vue
+++ b/src/views/usermng/warning.vue
@@ -8,7 +8,8 @@
type="primary"
icon="el-icon-refresh"
@click="refreshHandle"
- >刷新</el-button>
+ >刷新
+ </el-button>
<el-select v-model="queryForm.enterprisetype" clearable placeholder="请选择企业类型">
<el-option
class="filter-item"
@@ -145,7 +146,8 @@
v-if="getBtnPermission('edit')"
type="text"
@click="showEditHandle(scope.row)"
- >编辑</el-button>
+ >编辑
+ </el-button>
</template>
</el-table-column>
</el-table>
@@ -182,7 +184,7 @@
label="警告类型:"
prop="type"
>
- {{dataForm.warntype}}
+ {{ dataForm.warntype }}
</el-form-item>
<el-form-item
label="计算周期(天):"
@@ -220,7 +222,8 @@
<el-button
type="primary"
@click="updateHandle()"
- >确认</el-button>
+ >确认
+ </el-button>
</div>
</el-dialog>
<el-dialog
@@ -242,13 +245,13 @@
label="警告类型:"
prop="type"
>
- {{dataForm.warntype}}
+ {{ dataForm.warntype }}
</el-form-item>
<el-form-item
label="企业类型:"
prop="type"
>
- {{dataForm.enterprisetype}}
+ {{ dataForm.enterprisetype }}
</el-form-item>
<el-form-item
label="预警值:"
@@ -280,247 +283,248 @@
<el-button
type="primary"
@click="updateStockHandle()"
- >确认</el-button>
+ >确认
+ </el-button>
</div>
</el-dialog>
- <div style="clear: both;" />
+ <div style="clear: both;"/>
</div>
</template>
<script>
- import { mapGetters } from 'vuex'
- import { getWarningList, editWarningInfo } from '@/api/warning'
- import { parseTime, computePageCount } from '@/utils'
- import { parseError } from '@/utils/messageDialog'
- import Cookies from 'js-cookie'
- import { Message, MessageBox } from 'element-ui'
- import { dictionaryAllItems } from '@/api/dictionary';
- import { checkBtnPermission } from '@/utils/permission'
+import {mapGetters} from 'vuex'
+import {getWarningList, editWarningInfo} from '@/api/warning'
+import {parseTime, computePageCount} from '@/utils'
+import {parseError} from '@/utils/messageDialog'
+import Cookies from 'js-cookie'
+import {Message, MessageBox} from 'element-ui'
+import {dictionaryAllItems} from '@/api/dictionary';
+import {checkBtnPermission} from '@/utils/permission'
- export default {
- name: 'warning',
- filters: {
- parseSms(value) {
- if (value == 1) {
- return '是'
- } else {
- return '否'
- }
- },
- },
- computed: {
- ...mapGetters([
- 'userType'
- ])
- },
- data() {
- return {
- sort:'id',
- order:'asc',
- pageSize: 10,
- recordTotal: 0,
- currentPage: 1,
- pageTotal: 0,
- tableKey: 0,
- warningData: null,
- listLoading: true,
- queryForm: {
- warntype: '',
- enterprisetype:'',
- },
- enterpriseTypeList:[],
- warnTypeList:[],
-
- dataForm: {
- id: '',
- warntype: '',
- period: '',
- enterprisetype: '',
- issms: '',
- minimum: '',
- maximum: '',
- },
- dialogFormVisible: false,
- dialogStockFormVisible: false,
- dataFormRules: {
- minimum: [{ required: true, message: '预警值不能为空', trigger: 'blur' }],
- maximum: [{ required: true, message: '报警值不能为空', trigger: 'blur' }],
- },
-
-
+export default {
+ name: 'warning',
+ filters: {
+ parseSms(value) {
+ if (value == 1) {
+ return '是'
+ } else {
+ return '否'
}
},
- created() {
- this.getWarningList()
- this.getDictionaryEnterpriseType()
- this.getDictionaryWarnType()
- },
- methods: {
- getWarningList() {
- const _this = this
- const params = {}
- params['sort'] = _this.sort
- params['order'] = _this.order
- params['pageIndex'] = _this.currentPage
- params['pageSize'] = _this.pageSize
- for (const i in _this.queryForm) {
- if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
- params[i] = _this.queryForm[i]
- }
- }
- _this.listLoading = true
- getWarningList(params).then(response => {
- const res = response.data
- if (res.code == 200) {
- const result = res.result;
- _this.recordTotal = result.totalCount
- _this.pageSize = result.pageSize
- _this.pageTotal = computePageCount(result.totalCount, result.pageSize)
- _this.currentPage = result.pageIndex
- _this.warningData = result.result
- } else {
- parseError({ error: res.message, vm: _this })
- }
- _this.listLoading = false
- }).catch(error => {
- _this.listLoading = false
- parseError({ error: error, vm: _this })
- })
+ },
+ computed: {
+ ...mapGetters([
+ 'userType'
+ ])
+ },
+ data() {
+ return {
+ sort: 'id',
+ order: 'asc',
+ pageSize: 10,
+ recordTotal: 0,
+ currentPage: 1,
+ pageTotal: 0,
+ tableKey: 0,
+ warningData: null,
+ listLoading: true,
+ queryForm: {
+ warntype: '',
+ enterprisetype: '',
},
- getDictionaryEnterpriseType() {
- const _this = this
- if (_this.enterpriseTypeList && _this.enterpriseTypeList.length > 0) {
- return
- }
- const params = {}
- params['dictionaryType'] = '安全监管分类'
- dictionaryAllItems(params).then(response => {
- const res = response.data
- if (res.code == 200) {
- _this.enterpriseTypeList = res.result
- } else {
- parseError({ error: res.message, vm: _this })
- }
- }).catch(error => {
- parseError({ error: error, vm: _this })
- })
+ enterpriseTypeList: [],
+ warnTypeList: [],
+
+ dataForm: {
+ id: '',
+ warntype: '',
+ period: '',
+ enterprisetype: '',
+ issms: '',
+ minimum: '',
+ maximum: '',
},
- getDictionaryWarnType() {
- const _this = this
- if (_this.warnTypeList && _this.warnTypeList.length > 0) {
- return
- }
- const params1 = {}
- params1['dictionaryType'] = '警告类型'
- dictionaryAllItems(params1).then(response => {
- const res = response.data
- if (res.code == 200) {
- _this.warnTypeList = res.result
- } else {
- parseError({ error: res.message, vm: _this })
- }
- }).catch(error => {
- parseError({ error: error, vm: _this })
- })
- },
- refreshHandle: function() {
- this.getWarningList()
- },
- queryHandle: function() {
- this.currentPage = 1
- this.getWarningList()
- },
- sortWarningChange: function(param){
- this.sort = param.prop;
- this.order = param.order;
- this.getWarningList()
- },
- handleSizeChange: function(val) {
- this.pageSize = val
- this.currentPage = 1
- this.getWarningList()
- },
- handleCurrentChange: function(val) {
- this.currentPage = val
- this.getWarningList()
- },
- getBtnPermission(btnType) {
- return checkBtnPermission(this.userType, btnType)
- },
- resetDataForm() {
- this.dataForm = {
- id: '',
- warntype: '',
- period: '',
- enterprisetype: '',
- issms: '',
- minimum: '',
- maximum: '',
- }
- },
- showEditHandle: function(row) {
- this.resetDataForm()
- this.dataForm.id = row.id
- this.dataForm.warntype = row.warntype
- this.dataForm.period = row.period
- this.dataForm.enterprisetype = row.enterprisetype
- this.dataForm.issms = row.issms
- this.dataForm.minimum = row.minimum
- this.dataForm.maximum = row.maximum
- if (this.dataForm.warntype == '购买超量'){
- this.dialogFormVisible = true
- this.$nextTick(() => {
- this.$refs['dataForm'].clearValidate()
- })
- }else {
- this.dialogStockFormVisible = true
- }
- },
- updateHandle() {
- this.$refs['dataForm'].validate((valid) => {
- const _this = this
- if (valid) {
- editWarningInfo(_this.dataForm).then(response => {
- const res = response.data
- if (res.code == 200) {
- _this.dialogFormVisible = false
- _this.$message({
- message: '更新成功',
- type: 'success'
- })
- _this.getWarningList()
- } else {
- parseError({ error: res.message, vm: _this })
- }
- }).catch(error => {
- parseError({ error: error, vm: _this })
- })
- }
- })
- },
- updateStockHandle() {
- this.$refs['dataForm'].validate((valid) => {
- const _this = this
- if (valid) {
- editWarningInfo(_this.dataForm).then(response => {
- const res = response.data
- if (res.code == 200) {
- _this.dialogStockFormVisible = false
- _this.$message({
- message: '更新成功',
- type: 'success'
- })
- _this.getWarningList()
- } else {
- parseError({ error: res.message, vm: _this })
- }
- }).catch(error => {
- parseError({ error: error, vm: _this })
- })
- }
- })
+ dialogFormVisible: false,
+ dialogStockFormVisible: false,
+ dataFormRules: {
+ minimum: [{required: true, message: '预警值不能为空', trigger: 'blur'}],
+ maximum: [{required: true, message: '报警值不能为空', trigger: 'blur'}],
},
+
}
+ },
+ created() {
+ this.getWarningList()
+ this.getDictionaryEnterpriseType()
+ this.getDictionaryWarnType()
+ },
+ methods: {
+ getWarningList() {
+ const _this = this
+ const params = {}
+ params['sort'] = _this.sort
+ params['order'] = _this.order
+ params['pageIndex'] = _this.currentPage
+ params['pageSize'] = _this.pageSize
+ for (const i in _this.queryForm) {
+ if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
+ params[i] = _this.queryForm[i]
+ }
+ }
+ _this.listLoading = true
+ getWarningList(params).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ const result = res.result;
+ _this.recordTotal = result.totalCount
+ _this.pageSize = result.pageSize
+ _this.pageTotal = computePageCount(result.totalCount, result.pageSize)
+ _this.currentPage = result.pageIndex
+ _this.warningData = result.result
+ } else {
+ parseError({error: res.message, vm: _this})
+ }
+ _this.listLoading = false
+ }).catch(error => {
+ _this.listLoading = false
+ parseError({error: error, vm: _this})
+ })
+ },
+ getDictionaryEnterpriseType() {
+ const _this = this
+ if (_this.enterpriseTypeList && _this.enterpriseTypeList.length > 0) {
+ return
+ }
+ const params = {}
+ params['dictionaryType'] = '安全监管分类'
+ dictionaryAllItems(params).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.enterpriseTypeList = res.result
+ } else {
+ parseError({error: res.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ },
+ getDictionaryWarnType() {
+ const _this = this
+ if (_this.warnTypeList && _this.warnTypeList.length > 0) {
+ return
+ }
+ const params1 = {}
+ params1['dictionaryType'] = '警告类型'
+ dictionaryAllItems(params1).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.warnTypeList = res.result
+ } else {
+ parseError({error: res.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ },
+ refreshHandle: function () {
+ this.getWarningList()
+ },
+ queryHandle: function () {
+ this.currentPage = 1
+ this.getWarningList()
+ },
+ sortWarningChange: function (param) {
+ this.sort = param.prop;
+ this.order = param.order;
+ this.getWarningList()
+ },
+ handleSizeChange: function (val) {
+ this.pageSize = val
+ this.currentPage = 1
+ this.getWarningList()
+ },
+ handleCurrentChange: function (val) {
+ this.currentPage = val
+ this.getWarningList()
+ },
+ getBtnPermission(btnType) {
+ return checkBtnPermission(this.userType, btnType)
+ },
+ resetDataForm() {
+ this.dataForm = {
+ id: '',
+ warntype: '',
+ period: '',
+ enterprisetype: '',
+ issms: '',
+ minimum: '',
+ maximum: '',
+ }
+ },
+ showEditHandle: function (row) {
+ this.resetDataForm()
+ this.dataForm.id = row.id
+ this.dataForm.warntype = row.warntype
+ this.dataForm.period = row.period
+ this.dataForm.enterprisetype = row.enterprisetype
+ this.dataForm.issms = row.issms
+ this.dataForm.minimum = row.minimum
+ this.dataForm.maximum = row.maximum
+ if (this.dataForm.warntype == '购买超量') {
+ this.dialogFormVisible = true
+ this.$nextTick(() => {
+ this.$refs['dataForm'].clearValidate()
+ })
+ } else {
+ this.dialogStockFormVisible = true
+ }
+ },
+ updateHandle() {
+ this.$refs['dataForm'].validate((valid) => {
+ const _this = this
+ if (valid) {
+ editWarningInfo(_this.dataForm).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.dialogFormVisible = false
+ _this.$message({
+ message: '更新成功',
+ type: 'success'
+ })
+ _this.getWarningList()
+ } else {
+ parseError({error: res.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ }
+ })
+ },
+ updateStockHandle() {
+ this.$refs['dataForm'].validate((valid) => {
+ const _this = this
+ if (valid) {
+ editWarningInfo(_this.dataForm).then(response => {
+ const res = response.data
+ if (res.code == 200) {
+ _this.dialogStockFormVisible = false
+ _this.$message({
+ message: '更新成功',
+ type: 'success'
+ })
+ _this.getWarningList()
+ } else {
+ parseError({error: res.message, vm: _this})
+ }
+ }).catch(error => {
+ parseError({error: error, vm: _this})
+ })
+ }
+ })
+ },
+
}
+}
</script>
--
Gitblit v1.9.2