Commit 7aef0de6 by 李君

等待时长统计,报警规则优化

1 parent 07305494
......@@ -96,7 +96,7 @@ const queueManagementApi = {
return req('POST', `/d-cashier-alarm-rule`, params, config)
},
updateAlarmRules(params, config) {
return req('PUT', `/d-cashier-alarm-rule/${params.id}`, params, config)
return req('PUT', `/d-cashier-alarm-rule`, params, config)
},
// 排队详情
getqueueDetailList(params, config) {
......@@ -106,6 +106,9 @@ const queueManagementApi = {
getExitClosedList(params, config) {
return req('get', `/queuing/counters/exit/closed`, params, config)
},
getDistributeList(params, config) {
return req('get', `/queuing/waitTime/distribute`, params, config)
},
}
......
......@@ -105,6 +105,13 @@ const queueManagementRouterMap = {
permissionPath: 'exitFormClosedCounters'
},
component: () => import('@/views/queueManagement/exitFormClosedCounters/'),
},{
name: 'waitingTimeStatistics',
path: '/queueManagement/waitingTimeStatistics',
meta: {
permissionPath: 'waitingTimeStatistics'
},
component: () => import('@/views/queueManagement/waitingTimeStatistics/'),
},
]
......
......@@ -2,22 +2,24 @@
<div>
<el-dialog :title="$t('button.alarmRules')" class="manage-dialog dialog_lj" :visible.sync="addDialogVisible"
:close-on-click-modal="false" v-if="addDialogVisible" @close="addDialogClose()">
<el-form :model="addForm" label-width="120px" status-icon :rules="rules" ref="addForm">
<!-- 区域名称 -->
<!-- <p class="itemTitle">{{$t('button.alarmRules')}}</p> -->
<!-- <el-form-item >
<el-checkbox v-model="addForm.queueLengthSwitch">{{$t('table.queueLengthAlert')}}</el-checkbox>
<el-checkbox v-model="addForm.waitTimeSwitch">{{$t('table.waitTimeAlert')}}</el-checkbox>
</el-form-item> -->
<el-form :model="addForm" label-width="100px" status-icon :rules="rules" ref="addForm">
<div class="inlineBlock" v-for="item in counterTypeData" :key="item.id">
<template v-if="item.key != '4'">
<p class="itemTitle" style="font-weight: 900">{{item.text}}</p>
<el-form-item :label="$t('table.alarmPensonNum')" prop="queueLengthThreshold">
<el-input-number v-model="addForm.queueLengthThreshold" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.perNum')}}
<el-input-number v-model="item.queueLengthThreshold" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.perNum')}}
</el-form-item>
<el-form-item :label="$t('table.waitingTime')" prop="waitTimeThreshold">
<el-input-number v-model="addForm.waitTimeThreshold" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.minute')}}
<el-input-number v-model="item.waitTimeThreshold" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.minute')}}
</el-form-item>
<el-form-item label="Trolle No." prop="trolleyThreshold">
<el-input-number v-model="item.trolleyThreshold" :min="0" :controls = 'false' :precision = '0'></el-input-number>
</el-form-item>
<el-form-item :label="$t('table.alarmCycle')" prop="alarmInterval">
<el-input-number v-model="addForm.alarmInterval" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.minute')}}
<el-input-number v-model="item.alarmInterval" :min="0" :controls = 'false' :precision = '0'></el-input-number> {{$t('format.minute')}}
</el-form-item>
</template>
</div>
<p class="info">{{$t('message.alarmInfo')}}</p>
<p class="itemTitle">{{$t('table.alarmReceiver')}}</p>
<div v-for="(item,index) in alarmReceiverList" :key='index' style="margin-top: 10px;">
......@@ -43,46 +45,44 @@ export default {
addDialogVisible: false,
addForm: {
},
counterTypeData: [],
alarmReceiverList:[{
email:''
}],
isAdd:true,
rules: {
queueLengthThreshold: [{
required: true,
message: this.$t('pholder.input'),
trigger: 'blur'
}],
waitTimeThreshold:[{
required: true,
message: this.$t('pholder.input'),
trigger: 'blur'
}],
alarmInterval:[{
required: true,
message: this.$t('pholder.input'),
trigger: 'blur'
}],
// queueLengthThreshold: [{
// required: true,
// message: this.$t('pholder.input'),
// trigger: 'blur'
// }],
// waitTimeThreshold: [{
// required: true,
// message: this.$t('pholder.input'),
// trigger: 'blur'
// }],
// alarmInterval:[{
// required: true,
// message: this.$t('pholder.input'),
// trigger: 'blur'
// }],
}
}
},
mounted() {
this.getCounterType()
},
methods: {
dialogInit(data,mallId,areaId) {
this.addForm = {
mallId: '',
areaId:"",
// queueLengthSwitch:false,
queueLengthThreshold:'',
// waitTimeSwitch:false,
waitTimeThreshold:'',
alarmInterval:'',
sendEmail:'',
channelRules:[]
};
if(data && data.length>0){
this.isAdd = false;
this.addForm = Object.assign({},data[0]);
// this.addForm.queueLengthSwitch = data[0].queueLengthSwitch==1?true:false;
// this.addForm.waitTimeSwitch = data[0].waitTimeSwitch==1?true:false;
let arr = data[0].sendEmail.split(";")
this.alarmReceiverList = []
for (var i = 0; i < arr.length; i++) {
......@@ -90,6 +90,18 @@ export default {
email:arr[i]
})
}
data[0].channelRules.forEach(itemR=>{
this.counterTypeData.forEach(item=>{
if(itemR.counterType == item.key){
item.alarmInterval = itemR.alarmInterval;
item.queueLengthThreshold = itemR.queueLengthThreshold;
item.trolleyThreshold = itemR.trolleyThreshold;
item.waitTimeThreshold = itemR.waitTimeThreshold;
item.counterTypeId = itemR.id;
}
})
})
this.$forceUpdate()
}else{
this.addForm.mallId = mallId;
......@@ -97,6 +109,20 @@ export default {
}
this.addDialogVisible = true;
},
// 通道类型
getCounterType() {
this.$api.base.dataDic({
type: 'counterType'
}).then(res => {
this.counterTypeData = res.data.data.map(item => {
if (localStorage.getItem('lang') == 'en_US') {
item.value = item.valueEn;
}
item.text = item.value
return item;
});
})
},
addEmail(){
this.alarmReceiverList.push({
email:''
......@@ -112,10 +138,31 @@ export default {
}
this.addForm.sendEmail = arr.join(';')
this.$refs[formName].validate((valid) => {
console.log(valid)
if (valid) {
this.addForm.queueLengthSwitch = 1
this.addForm.waitTimeSwitch = 1
let channelRules = []
for (let item of this.counterTypeData) {
if(item.key != 4){
if(item.queueLengthThreshold&&item.queueLengthThreshold&&item.queueLengthThreshold&&item.trolleyThreshold){
channelRules.push({
queueLengthThreshold:item.queueLengthThreshold,
waitTimeThreshold:item.waitTimeThreshold,
alarmInterval:item.alarmInterval,
trolleyThreshold:item.trolleyThreshold,
counterType:item.key,
id: item.counterTypeId||null
})
}else{
this.$message({
message: this.$t('pholder.input') + item.text + this.$t('button.alarmRules'),
type: 'warning'
});
return false
}
}
}
// this.addForm.queueLengthSwitch = 1
// this.addForm.waitTimeSwitch = 1
this.addForm.channelRules = channelRules
if(this.isAdd){
this.$api.queueManagementApi.addAlarmRules(this.addForm)
.then((res) => {
......@@ -171,7 +218,7 @@ export default {
<style scoped lang="less">
.dialog_lj{
/deep/.el-dialog{
width: 1000px !important;
width: 1300px !important;
}
/deep/.el-form{
......@@ -188,6 +235,18 @@ export default {
.receiverEmail{
width: 500px !important;
}
.inlineBlock{
/deep/.el-form-item{
display: inline-block;
}
/deep/.el-form-item__content{
width: 180px !important;
min-width: 180px !important;
}
/deep/.el-input-number{
width: 100px;
}
}
/deep/.el-form-item__label{
line-height: 30px;
height: 30px;
......
......@@ -59,13 +59,18 @@
</el-table-column> -->
<el-table-column :label="$t('table.laneName')" width="160" align="center" prop="cashierChannelId" :formatter="landFormat"></el-table-column>
<el-table-column :label="$t('table.messageContent')" align="center" prop="messageContent" show-overflow-tooltip></el-table-column>
<el-table-column :label="$t('table.sentDate')" align="center" prop="createTime" width="160"></el-table-column>
<el-table-column :label="$t('table.sentDate')" align="center" prop="sendTime" width="160"></el-table-column>
<el-table-column :label="$t('table.state')" align="center" prop="status" width="100">
<template slot-scope="scope">
<span>{{scope.row.status==1?$t('table.sendSuccess'):$t('table.sendFail')}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('table.recipient')" align="center" prop="sendEmail">
<el-table-column :label="$t('table.recipient')" align="center" prop="sendEmail" show-overflow-tooltip>
</el-table-column>
<el-table-column :label="$t('table.operate')" align="center" width="120">
<template slot-scope="scope">
<el-button type="text" class="tab-btn" @click="getDetail(scope.row)">{{$t('button.look')}}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
......@@ -86,6 +91,15 @@
</div>
</div>
<add-dialog ref="addModel"></add-dialog>
<el-dialog :title="$t('allPages.Image')" class="manage-dialog dialog_lj imgDialog" :visible.sync="imgDialogVisible"
:close-on-click-modal="false" v-if="imgDialogVisible" @close="imgDialogVisible = false">
<div style="height: 600px;">
<el-image v-for="(item,index) in imgArr" :key="index" :src='picUrl+item'></el-image>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="imgDialogVisible = false" class="dialog-btn">{{ $t('dialog.close') }}</el-button>
</div>
</el-dialog>
</div>
</template>
......@@ -95,6 +109,9 @@
export default {
data() {
return {
picUrl:'',
imgArr:[],
imgDialogVisible:false,
mallListForTerm:[],
channelListData:[],
areaListData:[],
......@@ -124,6 +141,7 @@
addDialog,
},
mounted() {
this.picUrl = window._vionConfig.picUrl
this.getMallListForTerm()
},
computed: {
......@@ -133,6 +151,17 @@
},
},
methods: {
getDetail(row){
if(row.screenshotPath){
this.imgArr = row.screenshotPath.split(";")
this.imgDialogVisible = true
}else{
this.$message({
message: this.$t('echartsTitle.noData'),
type: 'warning'
});
}
},
// 广场
getMallListForTerm() {
this.mallListForTerm = [];
......@@ -263,6 +292,11 @@
</script>
<style scoped="scoped" lang="less">
.imgDialog{
/deep/.el-dialog{
width: 1000px !important;
}
}
/deep/.el-select{
width: 180px;
}
......@@ -273,4 +307,7 @@
/deep/.el-date-editor{
width: 250px !important;
}
/deep/.el-table .cell{
text-overflow: ellipsis !important;
}
</style>
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!