侧边栏结构修改
This commit is contained in:
parent
a3b11c9971
commit
a6b7b343a9
|
@ -40,7 +40,7 @@ export function createHealthRecord(data: HealthRecord) {
|
|||
return request({
|
||||
url: '/health-record',
|
||||
method: 'post',
|
||||
data,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ export function getHealthRecordList(params: HealthRecordListParams) {
|
|||
return request<HealthRecordListResponse>({
|
||||
url: '/health-record/list',
|
||||
method: 'get',
|
||||
params,
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ export function getHealthRecordList(params: HealthRecordListParams) {
|
|||
export function getHealthRecordDetail(id: string) {
|
||||
return request<HealthRecord>({
|
||||
url: `/health-record/detail/${id}`,
|
||||
method: 'get',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ export function updateHealthRecord(id: string, data: HealthRecord) {
|
|||
return request({
|
||||
url: `/health-record/${id}`,
|
||||
method: 'put',
|
||||
data,
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,7 @@ export function updateHealthRecord(id: string, data: HealthRecord) {
|
|||
export function deleteHealthRecord(id: string) {
|
||||
return request({
|
||||
url: `/health-record/${id}`,
|
||||
method: 'delete',
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -83,14 +83,14 @@ export function uploadHealthReport(file: File, recordId: string) {
|
|||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
formData.append('recordId', recordId)
|
||||
|
||||
|
||||
return request({
|
||||
url: '/health-record/upload-report',
|
||||
method: 'post',
|
||||
data: formData,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
},
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ export function downloadHealthReport(fileId: string) {
|
|||
return request({
|
||||
url: `/health-record/download-report/${fileId}`,
|
||||
method: 'get',
|
||||
responseType: 'blob',
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ export function downloadHealthReport(fileId: string) {
|
|||
export function getEmployeeHealthHistory(employeeId: string) {
|
||||
return request<HealthRecord[]>({
|
||||
url: `/health-record/employee/${employeeId}`,
|
||||
method: 'get',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ export function exportHealthRecords(params: HealthRecordListParams) {
|
|||
url: '/health-record/export',
|
||||
method: 'get',
|
||||
params,
|
||||
responseType: 'blob',
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -131,6 +131,6 @@ export function scheduleHealthCheck(data: {
|
|||
return request({
|
||||
url: '/health-record/schedule',
|
||||
method: 'post',
|
||||
data,
|
||||
data
|
||||
})
|
||||
}
|
||||
}
|
|
@ -9,7 +9,6 @@ export * from './project'
|
|||
export * from './project/task'
|
||||
export * from './attach-info'
|
||||
export * from './model-config'
|
||||
export * from './performance'
|
||||
// 保险相关模块
|
||||
export * as InsuranceAPI from './insurance'
|
||||
export * as InsuranceCompanyAPI from './insurance-company'
|
||||
|
@ -28,5 +27,3 @@ export * from './schedule/type'
|
|||
export * from './project/type'
|
||||
export * from './attach-info/type'
|
||||
export * from './model-config/type'
|
||||
export * from './performance/type'
|
||||
export * from './salary'
|
||||
|
|
|
@ -36,4 +36,4 @@ export function updateUserNew(userId: string, data: T.UserNewUpdateReq) {
|
|||
/** @desc 删除用户信息 */
|
||||
export function deleteUserNew(userId: string) {
|
||||
return http.del(`${BASE_URL}/${userId}`)
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -323,138 +323,138 @@
|
|||
onMounted(() => {
|
||||
// 使用 nextTick 确保 DOM 已完全渲染
|
||||
nextTick(() => {
|
||||
// 初始化应用访问量趋势图表
|
||||
// 初始化应用访问量趋势图表
|
||||
if (appVisitChart.value) {
|
||||
const visitChart = echarts.init(appVisitChart.value)
|
||||
visitChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['Web端', '移动端', '小程序']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Web端',
|
||||
type: 'line',
|
||||
data: [2500, 2800, 3200, 3100, 2950, 1800, 1200]
|
||||
},
|
||||
{
|
||||
name: '移动端',
|
||||
type: 'line',
|
||||
data: [3200, 3500, 3800, 3600, 3400, 2800, 2500]
|
||||
},
|
||||
{
|
||||
name: '小程序',
|
||||
type: 'line',
|
||||
data: [4500, 4800, 5200, 4900, 4700, 3900, 3500]
|
||||
}
|
||||
]
|
||||
})
|
||||
const visitChart = echarts.init(appVisitChart.value)
|
||||
visitChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['Web端', '移动端', '小程序']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Web端',
|
||||
type: 'line',
|
||||
data: [2500, 2800, 3200, 3100, 2950, 1800, 1200]
|
||||
},
|
||||
{
|
||||
name: '移动端',
|
||||
type: 'line',
|
||||
data: [3200, 3500, 3800, 3600, 3400, 2800, 2500]
|
||||
},
|
||||
{
|
||||
name: '小程序',
|
||||
type: 'line',
|
||||
data: [4500, 4800, 5200, 4900, 4700, 3900, 3500]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化应用使用时长分布图表
|
||||
// 初始化应用使用时长分布图表
|
||||
if (appTimeChart.value) {
|
||||
const timeChart = echarts.init(appTimeChart.value)
|
||||
timeChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用时长分布',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 35, name: 'Web端' },
|
||||
{ value: 45, name: '移动端' },
|
||||
{ value: 20, name: '小程序' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
const timeChart = echarts.init(appTimeChart.value)
|
||||
timeChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用时长分布',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 35, name: 'Web端' },
|
||||
{ value: 45, name: '移动端' },
|
||||
{ value: 20, name: '小程序' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化终端设备分布图表
|
||||
// 初始化终端设备分布图表
|
||||
if (deviceDistributionChart.value) {
|
||||
const deviceChart = echarts.init(deviceDistributionChart.value)
|
||||
deviceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
const deviceChart = echarts.init(deviceDistributionChart.value)
|
||||
deviceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['Windows PC', 'Mac', 'iOS', 'Android', '微信']
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '访问量',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
data: [5200, 3800, 6500, 8200, 9500]
|
||||
},
|
||||
{
|
||||
name: '用户数',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['Windows PC', 'Mac', 'iOS', 'Android', '微信']
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '访问量',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
data: [5200, 3800, 6500, 8200, 9500]
|
||||
},
|
||||
{
|
||||
name: '用户数',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
data: [280, 220, 320, 380, 420]
|
||||
}
|
||||
]
|
||||
})
|
||||
data: [280, 220, 320, 380, 420]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
if (appVisitChart.value) {
|
||||
const visitChart = echarts.getInstanceByDom(appVisitChart.value)
|
||||
visitChart?.resize()
|
||||
|
|
|
@ -222,135 +222,135 @@
|
|||
onMounted(() => {
|
||||
// 使用 nextTick 确保 DOM 已完全渲染
|
||||
nextTick(() => {
|
||||
// 初始化功能模块使用频率图表
|
||||
// 初始化功能模块使用频率图表
|
||||
if (moduleUsageChart.value) {
|
||||
const moduleChart = echarts.init(moduleUsageChart.value)
|
||||
moduleChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
data: ['使用次数', '使用人数']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['组织架构', '资产管理', '产品与服务', '项目管理', '施工操作台', '聊天平台', '企业设置', '系统资源管理']
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用次数',
|
||||
type: 'bar',
|
||||
data: [2110, 1988, 2106, 2470, 2460, 1420, 720, 650]
|
||||
},
|
||||
{
|
||||
name: '使用人数',
|
||||
type: 'bar',
|
||||
data: [320, 302, 315, 335, 340, 356, 120, 85]
|
||||
}
|
||||
]
|
||||
})
|
||||
const moduleChart = echarts.init(moduleUsageChart.value)
|
||||
moduleChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
data: ['使用次数', '使用人数']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['组织架构', '资产管理', '产品与服务', '项目管理', '施工操作台', '聊天平台', '企业设置', '系统资源管理']
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用次数',
|
||||
type: 'bar',
|
||||
data: [2110, 1988, 2106, 2470, 2460, 1420, 720, 650]
|
||||
},
|
||||
{
|
||||
name: '使用人数',
|
||||
type: 'bar',
|
||||
data: [320, 302, 315, 335, 340, 356, 120, 85]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化各部门功能使用分布图表
|
||||
// 初始化各部门功能使用分布图表
|
||||
if (departmentUsageChart.value) {
|
||||
const departmentChart = echarts.init(departmentUsageChart.value)
|
||||
departmentChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '部门使用分布',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 35, name: '技术部' },
|
||||
{ value: 25, name: '市场部' },
|
||||
{ value: 20, name: '销售部' },
|
||||
{ value: 10, name: '人事部' },
|
||||
{ value: 10, name: '财务部' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
const departmentChart = echarts.init(departmentUsageChart.value)
|
||||
departmentChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '部门使用分布',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 35, name: '技术部' },
|
||||
{ value: 25, name: '市场部' },
|
||||
{ value: 20, name: '销售部' },
|
||||
{ value: 10, name: '人事部' },
|
||||
{ value: 10, name: '财务部' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化功能使用时长占比图表
|
||||
// 初始化功能使用时长占比图表
|
||||
if (usageTimeChart.value) {
|
||||
const timeChart = echarts.init(usageTimeChart.value)
|
||||
timeChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
const timeChart = echarts.init(usageTimeChart.value)
|
||||
timeChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用时长占比',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '使用时长占比',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
borderRadius: 10,
|
||||
borderColor: '#fff',
|
||||
borderWidth: 2
|
||||
},
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: '16',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
data: [
|
||||
{ value: 20, name: '组织架构' },
|
||||
{ value: 15, name: '资产管理' },
|
||||
{ value: 15, name: '产品与服务' },
|
||||
{ value: 20, name: '项目管理' },
|
||||
{ value: 20, name: '施工操作台' },
|
||||
{ value: 5, name: '聊天平台' },
|
||||
{ value: 3, name: '企业设置' },
|
||||
{ value: 2, name: '系统资源管理' }
|
||||
]
|
||||
emphasis: {
|
||||
label: {
|
||||
show: true,
|
||||
fontSize: '16',
|
||||
fontWeight: 'bold'
|
||||
}
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
data: [
|
||||
{ value: 20, name: '组织架构' },
|
||||
{ value: 15, name: '资产管理' },
|
||||
{ value: 15, name: '产品与服务' },
|
||||
{ value: 20, name: '项目管理' },
|
||||
{ value: 20, name: '施工操作台' },
|
||||
{ value: 5, name: '聊天平台' },
|
||||
{ value: 3, name: '企业设置' },
|
||||
{ value: 2, name: '系统资源管理' }
|
||||
]
|
||||
})
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
if (moduleUsageChart.value) {
|
||||
const moduleChart = echarts.getInstanceByDom(moduleUsageChart.value)
|
||||
moduleChart?.resize()
|
||||
|
|
|
@ -322,150 +322,150 @@
|
|||
onMounted(() => {
|
||||
// 使用 nextTick 确保 DOM 已完全渲染
|
||||
nextTick(() => {
|
||||
// 初始化部门活跃度对比图表
|
||||
// 初始化部门活跃度对比图表
|
||||
if (departmentActivityChart.value) {
|
||||
const departmentChart = echarts.init(departmentActivityChart.value)
|
||||
departmentChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['技术部', '市场部', '销售部', '人事部', '财务部']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '活跃度',
|
||||
type: 'bar',
|
||||
data: [92, 85, 88, 79, 82]
|
||||
},
|
||||
{
|
||||
name: '登录次数',
|
||||
type: 'bar',
|
||||
data: [320, 280, 310, 240, 260]
|
||||
},
|
||||
{
|
||||
name: '操作次数',
|
||||
type: 'bar',
|
||||
data: [2800, 2100, 2400, 1800, 2000]
|
||||
}
|
||||
]
|
||||
})
|
||||
const departmentChart = echarts.init(departmentActivityChart.value)
|
||||
departmentChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['技术部', '市场部', '销售部', '人事部', '财务部']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '活跃度',
|
||||
type: 'bar',
|
||||
data: [92, 85, 88, 79, 82]
|
||||
},
|
||||
{
|
||||
name: '登录次数',
|
||||
type: 'bar',
|
||||
data: [320, 280, 310, 240, 260]
|
||||
},
|
||||
{
|
||||
name: '操作次数',
|
||||
type: 'bar',
|
||||
data: [2800, 2100, 2400, 1800, 2000]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化每日活跃用户数图表
|
||||
// 初始化每日活跃用户数图表
|
||||
if (dailyActiveUsersChart.value) {
|
||||
const dailyActiveChart = echarts.init(dailyActiveUsersChart.value)
|
||||
dailyActiveChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [120, 132, 145, 135, 128, 68, 42],
|
||||
type: 'line',
|
||||
areaStyle: {}
|
||||
}
|
||||
]
|
||||
})
|
||||
const dailyActiveChart = echarts.init(dailyActiveUsersChart.value)
|
||||
dailyActiveChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: [120, 132, 145, 135, 128, 68, 42],
|
||||
type: 'line',
|
||||
areaStyle: {}
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化平均在线时长图表
|
||||
// 初始化平均在线时长图表
|
||||
if (onlineTimeChart.value) {
|
||||
const onlineChart = echarts.init(onlineTimeChart.value)
|
||||
onlineChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['技术部', '市场部', '销售部', '人事部', '财务部']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
formatter: '{value} 小时'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '平均在线时长',
|
||||
type: 'bar',
|
||||
data: [7.5, 6.8, 7.2, 6.5, 6.9]
|
||||
}
|
||||
]
|
||||
})
|
||||
const onlineChart = echarts.init(onlineTimeChart.value)
|
||||
onlineChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['技术部', '市场部', '销售部', '人事部', '财务部']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
formatter: '{value} 小时'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '平均在线时长',
|
||||
type: 'bar',
|
||||
data: [7.5, 6.8, 7.2, 6.5, 6.9]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化考勤趋势图表
|
||||
// 初始化考勤趋势图表
|
||||
if (attendanceTrendChart.value) {
|
||||
const attendanceChart = echarts.init(attendanceTrendChart.value)
|
||||
attendanceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['出勤率', '迟到率', '早退率']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
formatter: '{value}%'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '出勤率',
|
||||
type: 'line',
|
||||
data: [96.2, 97.1, 96.8, 97.5, 98.2, 97.8]
|
||||
},
|
||||
{
|
||||
name: '迟到率',
|
||||
type: 'line',
|
||||
data: [2.8, 2.2, 2.5, 1.8, 1.2, 1.5]
|
||||
},
|
||||
{
|
||||
name: '早退率',
|
||||
type: 'line',
|
||||
data: [1.0, 0.7, 0.7, 0.7, 0.6, 0.7]
|
||||
}
|
||||
]
|
||||
})
|
||||
const attendanceChart = echarts.init(attendanceTrendChart.value)
|
||||
attendanceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['出勤率', '迟到率', '早退率']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
formatter: '{value}%'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '出勤率',
|
||||
type: 'line',
|
||||
data: [96.2, 97.1, 96.8, 97.5, 98.2, 97.8]
|
||||
},
|
||||
{
|
||||
name: '迟到率',
|
||||
type: 'line',
|
||||
data: [2.8, 2.2, 2.5, 1.8, 1.2, 1.5]
|
||||
},
|
||||
{
|
||||
name: '早退率',
|
||||
type: 'line',
|
||||
data: [1.0, 0.7, 0.7, 0.7, 0.6, 0.7]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
if (departmentActivityChart.value) {
|
||||
const departmentChart = echarts.getInstanceByDom(departmentActivityChart.value)
|
||||
departmentChart?.resize()
|
||||
|
|
|
@ -105,139 +105,139 @@
|
|||
onMounted(() => {
|
||||
// 使用 nextTick 确保 DOM 已完全渲染
|
||||
nextTick(() => {
|
||||
// 初始化项目进度统计图表
|
||||
// 初始化项目进度统计图表
|
||||
if (projectProgressChart.value) {
|
||||
const projectChart = echarts.init(projectProgressChart.value)
|
||||
projectChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '项目状态',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 48, name: '进行中' },
|
||||
{ value: 65, name: '已完成' },
|
||||
{ value: 12, name: '已暂停' },
|
||||
{ value: 3, name: '已取消' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
const projectChart = echarts.init(projectProgressChart.value)
|
||||
projectChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 'left'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '项目状态',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
data: [
|
||||
{ value: 48, name: '进行中' },
|
||||
{ value: 65, name: '已完成' },
|
||||
{ value: 12, name: '已暂停' },
|
||||
{ value: 3, name: '已取消' }
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化资源使用情况图表
|
||||
|
||||
// 初始化资源使用情况图表
|
||||
if (resourceUsageChart.value) {
|
||||
const resourceChart = echarts.init(resourceUsageChart.value)
|
||||
resourceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
const resourceChart = echarts.init(resourceUsageChart.value)
|
||||
resourceChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['服务器', '存储空间', '带宽', '设备使用率', '人力资源']
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '已使用',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
legend: {},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value'
|
||||
data: [65, 72, 58, 80, 75]
|
||||
},
|
||||
{
|
||||
name: '剩余',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: ['服务器', '存储空间', '带宽', '设备使用率', '人力资源']
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '已使用',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
data: [65, 72, 58, 80, 75]
|
||||
},
|
||||
{
|
||||
name: '剩余',
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
label: {
|
||||
show: true
|
||||
},
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
data: [35, 28, 42, 20, 25]
|
||||
}
|
||||
]
|
||||
})
|
||||
data: [35, 28, 42, 20, 25]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化业务趋势图表
|
||||
|
||||
// 初始化业务趋势图表
|
||||
if (businessTrendChart.value) {
|
||||
const businessChart = echarts.init(businessTrendChart.value)
|
||||
businessChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['项目数量', '营业收入', '新增客户']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '项目数量',
|
||||
type: 'line',
|
||||
data: [10, 12, 15, 18, 22, 24]
|
||||
},
|
||||
{
|
||||
name: '营业收入',
|
||||
type: 'line',
|
||||
data: [120, 132, 145, 160, 178, 190]
|
||||
},
|
||||
{
|
||||
name: '新增客户',
|
||||
type: 'line',
|
||||
data: [5, 7, 8, 10, 12, 15]
|
||||
}
|
||||
]
|
||||
})
|
||||
const businessChart = echarts.init(businessTrendChart.value)
|
||||
businessChart.setOption({
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data: ['项目数量', '营业收入', '新增客户']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '项目数量',
|
||||
type: 'line',
|
||||
data: [10, 12, 15, 18, 22, 24]
|
||||
},
|
||||
{
|
||||
name: '营业收入',
|
||||
type: 'line',
|
||||
data: [120, 132, 145, 160, 178, 190]
|
||||
},
|
||||
{
|
||||
name: '新增客户',
|
||||
type: 'line',
|
||||
data: [5, 7, 8, 10, 12, 15]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
|
||||
// 监听窗口大小变化,调整图表大小
|
||||
window.addEventListener('resize', () => {
|
||||
if (projectProgressChart.value) {
|
||||
const projectChart = echarts.getInstanceByDom(projectProgressChart.value)
|
||||
projectChart?.resize()
|
||||
|
|
Loading…
Reference in New Issue