Commit b640816a by wuchao

统计

parent df7a87f2
......@@ -183,6 +183,15 @@ export const getOverdueWarningStatistics = (param) => {
})
}
// 获取评分统计数据
export const getScoreStatistics = (param) => {
return axios.request({
url: '/api/ac/jilinsscgsdp/keyPersonStatistics/getScoreStatistics',
method: 'post',
data: param
})
}
// ===== 评分等级维护(sys_dict: rating_level) =====
export const selectLevelSetList = (param) => {
return axios.request({
......
......@@ -328,7 +328,35 @@
</template>
<script>
import { getScoreStatistics, getOverdueWarningStatistics, getRatingStatistics } from '@/api/key-person'
import { getScoreStatistics, getRatingStatistics, getOverdueWarningStatistics, selectCurrentUserInfo } from '@/api/key-person'
const createVisitWarningBucket = () => ({
total: 0,
completed: 0,
uncompleted: 0,
nearOverdue: 0,
overdue: 0
})
const createVisitWarningData = () => ({
summary: createVisitWarningBucket(),
mentalPatient: createVisitWarningBucket(),
released: createVisitWarningBucket(),
minors: createVisitWarningBucket()
})
const VISIT_BUCKET_FIELDS = ['total', 'completed', 'uncompleted', 'nearOverdue', 'overdue']
const normalizeVisitWarningResponse = (payload = {}) => {
const normalized = createVisitWarningData()
Object.keys(normalized).forEach((key) => {
const source = payload[key] || {}
VISIT_BUCKET_FIELDS.forEach(field => {
normalized[key][field] = Number(source[field]) || 0
})
})
return normalized
}
export default {
data () {
return {
......@@ -354,36 +382,8 @@ export default {
released: { total: 0, categories: [] }
},
// 临期预警数据
overdueWarningData: {
summary: {
total: 0,
completed: 0,
uncompleted: 0,
nearOverdue: 0,
overdue: 0
},
mentalPatient: {
total: 0,
completed: 0,
uncompleted: 0,
nearOverdue: 0,
overdue: 0
},
released: {
total: 0,
completed: 0,
uncompleted: 0,
nearOverdue: 0,
overdue: 0
},
minors: {
total: 0,
completed: 0,
uncompleted: 0,
nearOverdue: 0,
overdue: 0
}
},
overdueWarningData: createVisitWarningData(),
visitScopeParams: null,
// 评分临期预警数据
ratingWarningData: {
summary: {
......@@ -440,21 +440,38 @@ export default {
this.$Message.error('获取数据失败,请稍后重试')
})
},
// 获取临期预警统计数据
getOverdueWarningData () {
getOverdueWarningStatistics().then(ret => {
if (ret.data.errcode === 0) {
// 只有在成功获取数据时才更新
this.overdueWarningData = ret.data.data
} else {
// 请求失败,显示错误提示,保持初始数据不变
this.$Message.error(ret.data.errmsg || '获取临期预警数据失败')
// 获取临期预警统计数据(基于回访状态)
async getOverdueWarningData () {
try {
const scopeParams = await this.getVisitScopeParams()
const res = await getOverdueWarningStatistics(scopeParams || {})
if (res && res.data && res.data.errcode === 0) {
this.overdueWarningData = normalizeVisitWarningResponse(res.data.data)
return
}
}).catch(err => {
// 网络错误或其他异常,显示错误提示,保持初始数据不变
const message = (res && res.data && res.data.errmsg) || '获取失败'
throw new Error(message)
} catch (err) {
console.error('获取临期预警数据失败:', err)
this.$Message.error('获取临期预警数据失败,请稍后重试')
})
this.$Message.error('获取回访临期预警数据失败,请稍后重试')
}
},
async getVisitScopeParams () {
if (this.visitScopeParams) {
return this.visitScopeParams
}
try {
const ret = await selectCurrentUserInfo({})
if (ret && ret.data && ret.data.errcode === 0) {
this.visitScopeParams = ret.data.data || {}
} else {
this.visitScopeParams = {}
}
} catch (err) {
console.error('获取用户范围失败:', err)
this.visitScopeParams = {}
}
return this.visitScopeParams
},
// 获取评分临期预警统计数据
getRatingWarningData () {
......
......@@ -62,7 +62,7 @@
<span>{{ renderVisitStatus(row.visit_status) }}</span>
</template>
<template slot="action" slot-scope="{ row }">
<Button size="small" type="primary" class="mr5" @click="openVisitModal(row)">回访</Button>
<Button size="small" type="primary" class="mr10" @click="openVisitModal(row)">回访</Button>
<Button size="small" @click="openHistoryModal(row)">回访历史</Button>
</template>
</Table>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论