完善预警中心功能迁移
This commit is contained in:
@@ -57,3 +57,11 @@ export function getWorkstationSearch (data) {
|
|||||||
params: apiParams('planning_production_produce_pincheck_search', data)
|
params: apiParams('planning_production_produce_pincheck_search', data)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function devicePinCheckExport (data) {
|
||||||
|
return request({
|
||||||
|
url: BASE + 'check',
|
||||||
|
method: 'get',
|
||||||
|
params: apiParams('planning_production_produce_pincheck_check', data)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,10 +1,66 @@
|
|||||||
<template>
|
<template>
|
||||||
<d2-container>
|
<d2-container>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="toolbar">
|
<div class="search-bar">
|
||||||
<el-button size="mini" type="primary" icon="el-icon-refresh" :disabled="loading" @click="fetchData">
|
<el-form ref="form" :inline="true" :model="form" size="mini">
|
||||||
{{ $t(key('refresh')) }}
|
<el-form-item :label="$t(key('select_time'))" prop="time">
|
||||||
</el-button>
|
<el-date-picker
|
||||||
|
v-model="form.time"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
type="datetimerange"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
range-separator="~"
|
||||||
|
:start-placeholder="$t(key('start_date'))"
|
||||||
|
:end-placeholder="$t(key('end_date'))"
|
||||||
|
style="width:360px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$t(key('workstation'))" prop="workstation_id">
|
||||||
|
<el-select
|
||||||
|
v-model="form.workstation_id"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
:placeholder="$t(key('select_workstation'))"
|
||||||
|
style="width:180px"
|
||||||
|
@change="changeWorkstation"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in workstationOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item prop="device_code">
|
||||||
|
<el-select
|
||||||
|
v-model="form.device_code"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
:placeholder="$t(key('select_device'))"
|
||||||
|
style="width:180px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in deviceOptions"
|
||||||
|
:key="item.id || item.code"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button size="mini" type="primary" icon="el-icon-search" :disabled="loading" @click="onSearch">
|
||||||
|
{{ $t(key('query')) }}
|
||||||
|
</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-refresh" :disabled="loading" @click="onReset">
|
||||||
|
{{ $t(key('reset')) }}
|
||||||
|
</el-button>
|
||||||
|
<el-button size="mini" type="primary" icon="el-icon-download" :disabled="exportLoading" :loading="exportLoading" @click="handleExport">
|
||||||
|
{{ $t(key('export')) }}
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -143,7 +199,9 @@ import {
|
|||||||
getDevicePinCheckList,
|
getDevicePinCheckList,
|
||||||
getPinCheckDetail,
|
getPinCheckDetail,
|
||||||
setPinCheckClean,
|
setPinCheckClean,
|
||||||
setPinCheckCleanSingle
|
setPinCheckCleanSingle,
|
||||||
|
getWorkstationSearch,
|
||||||
|
devicePinCheckExport
|
||||||
} from '@/api/planning-production/alert-center'
|
} from '@/api/planning-production/alert-center'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -154,6 +212,14 @@ export default {
|
|||||||
loading: false,
|
loading: false,
|
||||||
detailLoading: false,
|
detailLoading: false,
|
||||||
detailTableLoading: false,
|
detailTableLoading: false,
|
||||||
|
exportLoading: false,
|
||||||
|
form: {
|
||||||
|
time: '',
|
||||||
|
workstation_id: '',
|
||||||
|
device_code: ''
|
||||||
|
},
|
||||||
|
workstationOptions: [],
|
||||||
|
deviceOptions: [],
|
||||||
workstations: [],
|
workstations: [],
|
||||||
currentWorkstation: null,
|
currentWorkstation: null,
|
||||||
workstationDialogVisible: false,
|
workstationDialogVisible: false,
|
||||||
@@ -166,6 +232,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
|
this.loadWorkstationOptions()
|
||||||
this.fetchData()
|
this.fetchData()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -173,16 +240,88 @@ export default {
|
|||||||
const data = res && res.data !== undefined ? res.data : res
|
const data = res && res.data !== undefined ? res.data : res
|
||||||
return data || []
|
return data || []
|
||||||
},
|
},
|
||||||
|
normalizeList (res) {
|
||||||
|
const data = this.normalizeData(res)
|
||||||
|
if (Array.isArray(data)) return data
|
||||||
|
if (Array.isArray(data.data)) return data.data
|
||||||
|
if (Array.isArray(data.list)) return data.list
|
||||||
|
if (Array.isArray(data.rows)) return data.rows
|
||||||
|
return []
|
||||||
|
},
|
||||||
|
buildQueryParams () {
|
||||||
|
return {
|
||||||
|
...this.form,
|
||||||
|
page_no: 1,
|
||||||
|
page_size: 1000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadWorkstationOptions () {
|
||||||
|
getWorkstationSearch({ pin_check: 'pin_check' })
|
||||||
|
.then(res => {
|
||||||
|
this.workstationOptions = this.normalizeList(res)
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.workstationOptions = []
|
||||||
|
})
|
||||||
|
},
|
||||||
fetchData () {
|
fetchData () {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getPincheckWorkstation({})
|
getPincheckWorkstation(this.buildQueryParams())
|
||||||
.then(res => {
|
.then(res => {
|
||||||
this.workstations = this.normalizeData(res)
|
this.workstations = this.normalizeList(res)
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
onSearch () {
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
onReset () {
|
||||||
|
this.$refs.form.resetFields()
|
||||||
|
this.deviceOptions = []
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
changeWorkstation (workstationId) {
|
||||||
|
this.form.device_code = ''
|
||||||
|
const workstation = this.workstationOptions.find(item => String(item.id) === String(workstationId))
|
||||||
|
this.deviceOptions = workstation && Array.isArray(workstation.devices) ? workstation.devices : []
|
||||||
|
},
|
||||||
|
isEmptyTime () {
|
||||||
|
return !this.form.time || (Array.isArray(this.form.time) && !this.form.time.length)
|
||||||
|
},
|
||||||
|
async handleExport () {
|
||||||
|
if (this.isEmptyTime()) {
|
||||||
|
this.$message.error(this.$t(this.key('please_select_time')))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!this.form.workstation_id) {
|
||||||
|
this.$message.error(this.$t(this.key('please_select_workstation')))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const confirmed = await this.$confirm(this.$t(this.key('export_confirm_message')), this.$t(this.key('prompt')), {
|
||||||
|
confirmButtonText: this.$t(this.key('confirm')),
|
||||||
|
cancelButtonText: this.$t(this.key('cancel')),
|
||||||
|
type: 'warning',
|
||||||
|
center: true
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.info(this.$t(this.key('clear_cancel')))
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
if (confirmed === false) return
|
||||||
|
|
||||||
|
this.exportLoading = true
|
||||||
|
try {
|
||||||
|
await devicePinCheckExport({
|
||||||
|
...this.form,
|
||||||
|
action: 'download'
|
||||||
|
})
|
||||||
|
this.$message.success(this.$t(this.key('create_download_task_success')))
|
||||||
|
this.$router.push({ name: 'task' }).catch(() => {})
|
||||||
|
} finally {
|
||||||
|
this.exportLoading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
openWorkstation (item) {
|
openWorkstation (item) {
|
||||||
this.currentWorkstation = item
|
this.currentWorkstation = item
|
||||||
this.workstationDialogTitle = this.$t(this.key('workstation_detail'), { device_name: item.name })
|
this.workstationDialogTitle = this.$t(this.key('workstation_detail'), { device_name: item.name })
|
||||||
@@ -191,7 +330,7 @@ export default {
|
|||||||
},
|
},
|
||||||
fetchDeviceDetails (item) {
|
fetchDeviceDetails (item) {
|
||||||
this.detailLoading = true
|
this.detailLoading = true
|
||||||
getDevicePinCheckList({ device_category_id: item.workstation_id })
|
getDevicePinCheckList({ device_category_id: item.workstation_id || item.id })
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const data = this.normalizeData(res)
|
const data = this.normalizeData(res)
|
||||||
this.consecutiveData = data.consecutive_data || []
|
this.consecutiveData = data.consecutive_data || []
|
||||||
@@ -212,7 +351,7 @@ export default {
|
|||||||
device_code: row.device_code
|
device_code: row.device_code
|
||||||
})
|
})
|
||||||
getPinCheckDetail({
|
getPinCheckDetail({
|
||||||
device_category_id: row.workstation_id,
|
device_category_id: row.workstation_id || (this.currentWorkstation && this.currentWorkstation.workstation_id) || (this.currentWorkstation && this.currentWorkstation.id),
|
||||||
device_code: row.device_code,
|
device_code: row.device_code,
|
||||||
type
|
type
|
||||||
})
|
})
|
||||||
@@ -260,7 +399,7 @@ export default {
|
|||||||
this.$message.success(this.$t(this.key('clear_success')))
|
this.$message.success(this.$t(this.key('clear_success')))
|
||||||
this.fetchData()
|
this.fetchData()
|
||||||
this.fetchDeviceDetails({
|
this.fetchDeviceDetails({
|
||||||
workstation_id: row.workstation_id,
|
workstation_id: row.workstation_id || (this.currentWorkstation && this.currentWorkstation.workstation_id) || (this.currentWorkstation && this.currentWorkstation.id),
|
||||||
name: row.device_name
|
name: row.device_name
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -269,7 +408,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.toolbar {
|
.search-bar {
|
||||||
margin-bottom: -18px;
|
margin-bottom: -18px;
|
||||||
}
|
}
|
||||||
.alert-center {
|
.alert-center {
|
||||||
|
|||||||
Reference in New Issue
Block a user