Merge branch 'dev' of https://gitea.dykj.co/sundongyu/dykj-college-back-office-management-system into dev
This commit is contained in:
commit
2bf79cc724
|
@ -23,14 +23,14 @@ const loans = Mock.mock({
|
||||||
'department': '@pick(["机电工程系","护理分院","建筑系","材料科学与工程系","环境科学与工程系"])',
|
'department': '@pick(["机电工程系","护理分院","建筑系","材料科学与工程系","环境科学与工程系"])',
|
||||||
'cation': '@pick(["2021-2022学年度","2022-2023学年度"])',
|
'cation': '@pick(["2021-2022学年度","2022-2023学年度"])',
|
||||||
'loanTerm': '@pick(["已放款","未放款"])',
|
'loanTerm': '@pick(["已放款","未放款"])',
|
||||||
'timeofapplication': '@date("yyyy-MM-dd")',
|
'timeofapplication': "@now('yyyy-MM-dd')",
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
const daily = Mock.mock({
|
const daily = Mock.mock({
|
||||||
'list|10': [
|
'list|10': [
|
||||||
{
|
{
|
||||||
'date': '@date("yyyy-MM-dd")',
|
'date': "@now('yyyy-MM-dd')",
|
||||||
'tuiti': '@integer(10000,50000)',
|
'tuiti': '@integer(10000,50000)',
|
||||||
'incidentals': '@integer(1000,5000)',
|
'incidentals': '@integer(1000,5000)',
|
||||||
'materials': '@integer(1000,5000)',
|
'materials': '@integer(1000,5000)',
|
||||||
|
@ -42,6 +42,74 @@ const daily = Mock.mock({
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
const paragraph = Mock.mock({
|
||||||
|
'list|15': [
|
||||||
|
{
|
||||||
|
'name': '@cname',
|
||||||
|
department: '机电工程系',
|
||||||
|
grade: '机制1班',
|
||||||
|
counselor: '王刚',
|
||||||
|
cellPhone: '13354679999',
|
||||||
|
money: 16800,
|
||||||
|
condition: '未还款'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': '@cname',
|
||||||
|
department: '护理分院',
|
||||||
|
grade: '护理1班',
|
||||||
|
counselor: '李昆',
|
||||||
|
cellPhone: '18845065230',
|
||||||
|
money: 24000,
|
||||||
|
condition: '未还款'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': '@cname',
|
||||||
|
department: '建筑系',
|
||||||
|
grade: '建筑1班',
|
||||||
|
counselor: '张明',
|
||||||
|
cellPhone: '16656664666',
|
||||||
|
money: 12000,
|
||||||
|
condition: '未还款'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
const analysis = Mock.mock({
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: '机电工程系',
|
||||||
|
studentnumber: 120,
|
||||||
|
department: 120,
|
||||||
|
major: 80,
|
||||||
|
grade: '1344000',
|
||||||
|
tuition: 40,
|
||||||
|
weigrade: 672000,
|
||||||
|
shition: 2016000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: '护理分院',
|
||||||
|
studentnumber: 200,
|
||||||
|
department: 200,
|
||||||
|
major: 120,
|
||||||
|
grade: '2016000',
|
||||||
|
tuition: 80,
|
||||||
|
weigrade: 1344000,
|
||||||
|
shition: 33600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: '建筑系',
|
||||||
|
studentnumber: 300,
|
||||||
|
department: 300,
|
||||||
|
major: 200,
|
||||||
|
grade: '2016000',
|
||||||
|
tuition: 100,
|
||||||
|
weigrade: 1680000,
|
||||||
|
shition: 5040000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
//应收管理列表
|
//应收管理列表
|
||||||
|
@ -145,7 +213,7 @@ export default [
|
||||||
},
|
},
|
||||||
// 当日明细列表
|
// 当日明细列表
|
||||||
{
|
{
|
||||||
url: '/post-sdy-daily-list',
|
url: '/get-sdy-daily-list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
response: () => {
|
response: () => {
|
||||||
return {
|
return {
|
||||||
|
@ -153,6 +221,52 @@ export default [
|
||||||
data: daily
|
data: daily
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// 学生催款表
|
||||||
|
{
|
||||||
|
url: '/get-sdy-paragraph-list',
|
||||||
|
method: 'get',
|
||||||
|
response: () => {
|
||||||
|
return {
|
||||||
|
code: 200,
|
||||||
|
data: paragraph
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 学生催款表搜索
|
||||||
|
{
|
||||||
|
url: '/post-sdy-paragraph-find',
|
||||||
|
method: 'post',
|
||||||
|
response: (req) => {
|
||||||
|
if (req.body.name !== '') {
|
||||||
|
const arr = paragraph.list.filter(item => item.name.includes(req.body.name))
|
||||||
|
return arr
|
||||||
|
} else if (req.body.studentnumber !== '') {
|
||||||
|
const arr = paragraph.list.filter(item => item.department.includes(req.body.studentnumber))
|
||||||
|
return arr
|
||||||
|
} else if (req.body.counselor !== '') {
|
||||||
|
const arr = paragraph.list.filter(item => item.counselor.includes(req.body.counselor))
|
||||||
|
return arr
|
||||||
|
} else if (req.body.grade !== '') {
|
||||||
|
const arr = paragraph.list.filter(item => item.grade.includes(req.body.grade))
|
||||||
|
return arr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
code: 200,
|
||||||
|
data: arr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 学院分析
|
||||||
|
{
|
||||||
|
url: '/get-sdy-analysis-list',
|
||||||
|
method: 'get',
|
||||||
|
response: () => {
|
||||||
|
return {
|
||||||
|
code: 200,
|
||||||
|
data: analysis
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
]
|
]
|
1698
package-lock.json
generated
1698
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
|
@ -19,6 +19,7 @@
|
||||||
"pdfmake": "^0.2.10",
|
"pdfmake": "^0.2.10",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
|
"prettier": "^3.2.5",
|
||||||
"tdesign-vue-next": "^1.9.3",
|
"tdesign-vue-next": "^1.9.3",
|
||||||
"vite-plugin-mock": "^3.0.1",
|
"vite-plugin-mock": "^3.0.1",
|
||||||
"vue": "^3.4.21",
|
"vue": "^3.4.21",
|
||||||
|
|
8
prettier.json
Normal file
8
prettier.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/prettierrc",
|
||||||
|
"semi": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"singleQuote": true,
|
||||||
|
"printWidth": 100,
|
||||||
|
"trailingComma": "none"
|
||||||
|
}
|
|
@ -21,5 +21,17 @@ export function APILoansAdd(data) {
|
||||||
}
|
}
|
||||||
// 借款管理
|
// 借款管理
|
||||||
export function APIDailyList() {
|
export function APIDailyList() {
|
||||||
return request.get('/post-sdy-daily-list')
|
return request.get('/get-sdy-daily-list')
|
||||||
|
}
|
||||||
|
//催缴管理
|
||||||
|
export function APIParagraphList() {
|
||||||
|
return request.get('/get-sdy-paragraph-list')
|
||||||
|
}
|
||||||
|
//催缴搜索
|
||||||
|
export function APIParagraphFind(data) {
|
||||||
|
return request.post('/post-sdy-paragraph-find', data)
|
||||||
|
}
|
||||||
|
//学院分析
|
||||||
|
export function APIAnalysisList() {
|
||||||
|
return request.get('/get-sdy-analysis-list')
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,9 @@
|
||||||
<t-menu-item value="3-5" to="/charge-schedule">
|
<t-menu-item value="3-5" to="/charge-schedule">
|
||||||
<span>学生催款单</span>
|
<span>学生催款单</span>
|
||||||
</t-menu-item>
|
</t-menu-item>
|
||||||
|
<t-menu-item value="3-6" to="/faculty-analysis">
|
||||||
|
<span>部门分析表</span>
|
||||||
|
</t-menu-item>
|
||||||
</t-submenu>
|
</t-submenu>
|
||||||
<t-submenu value="4" title="学生管理">
|
<t-submenu value="4" title="学生管理">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
|
|
|
@ -1,7 +1,193 @@
|
||||||
<template>
|
<template>
|
||||||
<div>1</div>
|
<div class="back-color">
|
||||||
|
<div class="form">
|
||||||
|
<t-form
|
||||||
|
:data="formData"
|
||||||
|
reset-type="initial"
|
||||||
|
colon
|
||||||
|
@reset="onReset"
|
||||||
|
@submit="onSubmit"
|
||||||
|
>
|
||||||
|
<t-row>
|
||||||
|
<t-col :span="3">
|
||||||
|
<t-form-item label="学生姓名" name="name">
|
||||||
|
<t-input v-model="formData.name"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
</t-col>
|
||||||
|
<t-col :span="3">
|
||||||
|
<t-form-item label="学生部门" name="studentnumber">
|
||||||
|
<t-input v-model="formData.studentnumber"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
</t-col>
|
||||||
|
<t-col :span="3">
|
||||||
|
<t-form-item label="学生导员" name="counselor">
|
||||||
|
<t-input v-model="formData.counselor"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
</t-col>
|
||||||
|
<t-col :span="3">
|
||||||
|
<t-form-item label="学生班级" name="grade">
|
||||||
|
<t-input v-model="formData.grade"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
</t-col>
|
||||||
|
</t-row>
|
||||||
|
<t-row style="margin-top: 0.5rem">
|
||||||
|
<t-col :push="10" :span="2" style="margin-top: 0.2rem">
|
||||||
|
<t-button type="submit" class="button">搜索</t-button>
|
||||||
|
<t-button type="reset">重置</t-button>
|
||||||
|
</t-col>
|
||||||
|
</t-row>
|
||||||
|
</t-form>
|
||||||
|
</div>
|
||||||
|
<div class="table">
|
||||||
|
<t-table
|
||||||
|
row-key="id"
|
||||||
|
:data="tableData"
|
||||||
|
:columns="columns"
|
||||||
|
:hover="true"
|
||||||
|
table-layout="auto"
|
||||||
|
:pagination="pagination"
|
||||||
|
:show-header="true"
|
||||||
|
cell-empty-content="-"
|
||||||
|
max-height="550"
|
||||||
|
lazy-load
|
||||||
|
@row-click="handleRowClick"
|
||||||
|
@page-change="onPageChange"
|
||||||
|
:loading="loading"
|
||||||
|
>
|
||||||
|
<template #condition="{ row }">
|
||||||
|
<t-tag theme="danger">{{ row.condition }}</t-tag>
|
||||||
|
</template>
|
||||||
|
<template #operation="{ row }">
|
||||||
|
<t-button size="small" @click="onClick(row)">联系该学生导员</t-button>
|
||||||
|
</template>
|
||||||
|
</t-table>
|
||||||
|
</div>
|
||||||
|
<div class="dialog">
|
||||||
|
<t-space>
|
||||||
|
<t-dialog
|
||||||
|
v-model:visible="visible"
|
||||||
|
header="联系该学生导员"
|
||||||
|
width="40%"
|
||||||
|
:close-on-overlay-click="false"
|
||||||
|
:on-cancel="onCancel"
|
||||||
|
:on-close-btn-click="onCloseBtnClick"
|
||||||
|
:on-confirm="onConfirmAnother"
|
||||||
|
confirm-btn="联系该导员"
|
||||||
|
>
|
||||||
|
<t-space direction="vertical" style="width: 100%">
|
||||||
|
<t-form :data="formData" reset-type="initial" colon disabled>
|
||||||
|
<t-form-item label="导员姓名" name="name">
|
||||||
|
<t-input v-model="dialogData.name"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
<t-form-item label="导员手机号" name="number">
|
||||||
|
<t-input v-model="dialogData.number"></t-input>
|
||||||
|
</t-form-item>
|
||||||
|
</t-form>
|
||||||
|
</t-space>
|
||||||
|
</t-dialog>
|
||||||
|
</t-space>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup></script>
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
|
import {
|
||||||
|
APIParagraphList,
|
||||||
|
APIParagraphFind
|
||||||
|
} from '@/api/receivables-management/management'
|
||||||
|
//表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
name: '',
|
||||||
|
studentnumber: '',
|
||||||
|
counselor: '',
|
||||||
|
grade: ''
|
||||||
|
})
|
||||||
|
//学生催款单
|
||||||
|
const tableData = ref([])
|
||||||
|
//表头
|
||||||
|
const columns = [
|
||||||
|
{ colKey: 'name', title: '学生姓名' },
|
||||||
|
{ colKey: 'department', title: '学生院系' },
|
||||||
|
{ colKey: 'grade', title: '学生班级' },
|
||||||
|
{ colKey: 'counselor', title: '学生导员' },
|
||||||
|
{ colKey: 'cellPhone', title: '导员手机号' },
|
||||||
|
{ colKey: 'money', title: '催款金额' },
|
||||||
|
{ colKey: 'condition', title: '还款情况' },
|
||||||
|
{ colKey: 'operation', title: '操作', align: 'center' }
|
||||||
|
]
|
||||||
|
//分页
|
||||||
|
let pagination = {
|
||||||
|
defaultCurrent: 1,
|
||||||
|
defaultPageSize: 10,
|
||||||
|
total: 50
|
||||||
|
}
|
||||||
|
//对话框数据
|
||||||
|
const dialogData = reactive({
|
||||||
|
name: '',
|
||||||
|
number: ''
|
||||||
|
})
|
||||||
|
// 监听分页变化事件
|
||||||
|
const onPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
|
loading.value = true
|
||||||
|
const timerId = setTimeout(() => {
|
||||||
|
loading.value = false
|
||||||
|
clearInterval(timerId)
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(false)
|
||||||
|
// 点击表格
|
||||||
|
const handleRowClick = e => {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
//表单重置
|
||||||
|
const onReset = () => {
|
||||||
|
ParagraphList()
|
||||||
|
}
|
||||||
|
//表单提交
|
||||||
|
const onSubmit = async () => {
|
||||||
|
const res = await APIParagraphFind(formData)
|
||||||
|
tableData.value = res
|
||||||
|
pagination.total = res.length
|
||||||
|
}
|
||||||
|
// 获取学生催款单列表
|
||||||
|
const ParagraphList = async () => {
|
||||||
|
const res = await APIParagraphList()
|
||||||
|
tableData.value = res.data.list
|
||||||
|
pagination.total = res.data.list.length
|
||||||
|
}
|
||||||
|
//对话框
|
||||||
|
const visible = ref(false)
|
||||||
|
const onClick = row => {
|
||||||
|
dialogData.name = row.counselor
|
||||||
|
dialogData.number = row.cellPhone
|
||||||
|
visible.value = true
|
||||||
|
}
|
||||||
|
// 点击了确定按钮
|
||||||
|
const onConfirmAnother = () => {
|
||||||
|
visible.value = false
|
||||||
|
}
|
||||||
|
// 点击了取消按钮
|
||||||
|
const onCancel = () => {}
|
||||||
|
// 点击了关闭按钮
|
||||||
|
const onCloseBtnClick = () => {}
|
||||||
|
onMounted(() => {
|
||||||
|
ParagraphList()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped></style>
|
<style lang="less" scoped>
|
||||||
|
.form {
|
||||||
|
background-color: #fff;
|
||||||
|
height: 6rem;
|
||||||
|
padding-top: 0.5rem;
|
||||||
|
}
|
||||||
|
.button {
|
||||||
|
margin-right: 1rem;
|
||||||
|
margin-left: 3rem;
|
||||||
|
}
|
||||||
|
.table {
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
<div class="table">
|
<div class="table">
|
||||||
<div>收费日报表</div>
|
<div>收费日报表</div>
|
||||||
<t-table
|
<t-table
|
||||||
row-key="id"
|
|
||||||
:data="tableData"
|
:data="tableData"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:hover="true"
|
:hover="true"
|
||||||
|
@ -33,18 +32,18 @@
|
||||||
<div>减免明细表</div>
|
<div>减免明细表</div>
|
||||||
<t-table
|
<t-table
|
||||||
row-key="id"
|
row-key="id"
|
||||||
:data="tableData"
|
:data="mitigateTableData"
|
||||||
:columns="columns"
|
:columns="mitigateColumns"
|
||||||
:hover="true"
|
:hover="true"
|
||||||
table-layout="auto"
|
table-layout="auto"
|
||||||
:pagination="pagination"
|
:pagination="mitigatePagination"
|
||||||
:show-header="true"
|
:show-header="true"
|
||||||
cell-empty-content="-"
|
cell-empty-content="-"
|
||||||
max-height="550"
|
max-height="550"
|
||||||
lazy-load
|
lazy-load
|
||||||
@row-click="handleRowClick"
|
@row-click="mitigateHandleRowClick"
|
||||||
@page-change="onPageChange"
|
@page-change="mitigateOnPageChange"
|
||||||
:loading="loading"
|
:loading="mitigateLoading"
|
||||||
>
|
>
|
||||||
</t-table>
|
</t-table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -52,18 +51,18 @@
|
||||||
<div>退费明细表</div>
|
<div>退费明细表</div>
|
||||||
<t-table
|
<t-table
|
||||||
row-key="id"
|
row-key="id"
|
||||||
:data="tableData"
|
:data="refundTableData"
|
||||||
:columns="columns"
|
:columns="refundColumns"
|
||||||
:hover="true"
|
:hover="true"
|
||||||
table-layout="auto"
|
table-layout="auto"
|
||||||
:pagination="pagination"
|
:pagination="refundPagination"
|
||||||
:show-header="true"
|
:show-header="true"
|
||||||
cell-empty-content="-"
|
cell-empty-content="-"
|
||||||
max-height="550"
|
max-height="550"
|
||||||
lazy-load
|
lazy-load
|
||||||
@row-click="handleRowClick"
|
@row-click="refundHandleRowClick"
|
||||||
@page-change="onPageChange"
|
@page-change="refundOnPageChange"
|
||||||
:loading="loading"
|
:loading="refundLoading"
|
||||||
>
|
>
|
||||||
</t-table>
|
</t-table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -71,18 +70,18 @@
|
||||||
<div>学生欠费明细表</div>
|
<div>学生欠费明细表</div>
|
||||||
<t-table
|
<t-table
|
||||||
row-key="id"
|
row-key="id"
|
||||||
:data="tableData"
|
:data="studentTableData"
|
||||||
:columns="columns"
|
:columns="studentColumns"
|
||||||
:hover="true"
|
:hover="true"
|
||||||
table-layout="auto"
|
table-layout="auto"
|
||||||
:pagination="pagination"
|
:pagination="studentPagination"
|
||||||
:show-header="true"
|
:show-header="true"
|
||||||
cell-empty-content="-"
|
cell-empty-content="-"
|
||||||
max-height="550"
|
max-height="550"
|
||||||
lazy-load
|
lazy-load
|
||||||
@row-click="handleRowClick"
|
@row-click="studentHandleRowClick"
|
||||||
@page-change="onPageChange"
|
@page-change="studentOnPageChange"
|
||||||
:loading="loading"
|
:loading="tudentLoading"
|
||||||
>
|
>
|
||||||
</t-table>
|
</t-table>
|
||||||
</div>
|
</div>
|
||||||
|
@ -92,9 +91,10 @@
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { APIDailyList } from '@/api/receivables-management/management'
|
import { APIDailyList } from '@/api/receivables-management/management'
|
||||||
import lineChart from '@/components/echarts/line.vue'
|
import lineChart from '@/components/echarts/line.vue'
|
||||||
// 表格数据
|
import dayjs from 'dayjs'
|
||||||
|
// 日常收费明细表数据
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
// 表格头数据
|
// 日常收费明细表格头数据
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{ colKey: 'date', title: '日期' },
|
{ colKey: 'date', title: '日期' },
|
||||||
{ colKey: 'tuiti', title: '学费' },
|
{ colKey: 'tuiti', title: '学费' },
|
||||||
|
@ -106,19 +106,19 @@ const columns = ref([
|
||||||
{ colKey: 'cost', title: '其他费用' },
|
{ colKey: 'cost', title: '其他费用' },
|
||||||
{ colKey: 'tuition', title: '总计' }
|
{ colKey: 'tuition', title: '总计' }
|
||||||
])
|
])
|
||||||
// 表格分页数据
|
// 日常收费明细表格分页数据
|
||||||
let pagination = {
|
let pagination = {
|
||||||
defaultCurrent: 1,
|
defaultCurrent: 1,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
total: 50
|
total: 50
|
||||||
}
|
}
|
||||||
// 表格加载状态
|
// 日常收费明细表格加载状态
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
// 表格点击事件
|
// 日常收费明细表格点击事件
|
||||||
const handleRowClick = e => {
|
const handleRowClick = e => {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
// 监听分页变化事件
|
// 日常收费明细监听分页变化事件
|
||||||
const onPageChange = (Newpage, PreviousPagePrev) => {
|
const onPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
const timerId = setTimeout(() => {
|
const timerId = setTimeout(() => {
|
||||||
|
@ -144,12 +144,164 @@ const seriesData = ref([
|
||||||
type: 'line'
|
type: 'line'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
// 获取数据
|
// 获取日常收费明细表数据
|
||||||
const DailyList = async () => {
|
const DailyList = async () => {
|
||||||
const res = await APIDailyList()
|
const res = await APIDailyList()
|
||||||
tableData.value = res.data.list
|
tableData.value = res.data.list
|
||||||
pagination.total = res.data.list.length
|
pagination.total = res.data.list.length
|
||||||
}
|
}
|
||||||
|
// 减免明细表
|
||||||
|
const mitigateTableData = ref([
|
||||||
|
{
|
||||||
|
name: '张三',
|
||||||
|
type: '五保户',
|
||||||
|
amount: 100,
|
||||||
|
note: '该学上为五保户特批,减免100元。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '李四',
|
||||||
|
type: '平困证',
|
||||||
|
amount: 500,
|
||||||
|
note: '该学上为五保户特批,减免500元。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '王五',
|
||||||
|
type: '校长亲属',
|
||||||
|
amount: 1000,
|
||||||
|
note: '该学上为五保户特批,减免1000元。'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
// 减免明细表格头数据
|
||||||
|
const mitigateColumns = ref([
|
||||||
|
{ colKey: 'name', title: '姓名' },
|
||||||
|
{ colKey: 'type', title: '类型' },
|
||||||
|
{ colKey: 'amount', title: '金额' },
|
||||||
|
{ colKey: 'note', title: '备注' }
|
||||||
|
])
|
||||||
|
// 减免明细表格分页数据
|
||||||
|
let mitigatePagination = {
|
||||||
|
defaultCurrent: 1,
|
||||||
|
defaultPageSize: 10,
|
||||||
|
total: 50
|
||||||
|
}
|
||||||
|
// 减免明细表格加载状态
|
||||||
|
const mitigateLoading = ref(false)
|
||||||
|
// 减免明细表格点击事件
|
||||||
|
const mitigateHandleRowClick = e => {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
// 减免明细监听分页变化事件
|
||||||
|
const mitigateOnPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
|
mitigateLoading.value = true
|
||||||
|
const timerId = setTimeout(() => {
|
||||||
|
mitigateLoading.value = false
|
||||||
|
clearInterval(timerId)
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
//退费明细表
|
||||||
|
const refundTableData = ref([
|
||||||
|
{
|
||||||
|
data: dayjs().format('YYYY-MM-DD'),
|
||||||
|
name: '张三',
|
||||||
|
type: '退学',
|
||||||
|
amount: 16800,
|
||||||
|
draw: '是',
|
||||||
|
note: '该学生上学是犯下大错'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: dayjs().format('YYYY-MM-DD'),
|
||||||
|
name: '王五',
|
||||||
|
type: '休学',
|
||||||
|
amount: 16800,
|
||||||
|
draw: '是',
|
||||||
|
note: '该学生学习中途生病,需休学'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
data: dayjs().format('YYYY-MM-DD'),
|
||||||
|
name: '张三',
|
||||||
|
type: '开除',
|
||||||
|
amount: 16800,
|
||||||
|
draw: '亲属待领',
|
||||||
|
note: '该同学被开除'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
//退费明细表格头数据
|
||||||
|
const refundColumns = ref([
|
||||||
|
{ colKey: 'date', title: '日期' },
|
||||||
|
{ colKey: 'name', title: '姓名' },
|
||||||
|
{ colKey: 'type', title: '类型' },
|
||||||
|
{ colKey: 'amount', title: '金额' },
|
||||||
|
{ colKey: 'draw', title: '是否为本人领取' },
|
||||||
|
{ colKey: 'note', title: '备注' }
|
||||||
|
])
|
||||||
|
//退费明细表格分页数据
|
||||||
|
let refundPagination = {
|
||||||
|
defaultCurrent: 1,
|
||||||
|
defaultPageSize: 10,
|
||||||
|
total: 50
|
||||||
|
}
|
||||||
|
//退费明细表格加载状态
|
||||||
|
const refundLoading = ref(false)
|
||||||
|
//退费明细表格点击事件
|
||||||
|
const refundHandleRowClick = e => {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
//退费明细监听分页变化事件
|
||||||
|
const refundOnPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
|
refundLoading.value = true
|
||||||
|
const timerId = setTimeout(() => {
|
||||||
|
refundLoading.value = false
|
||||||
|
clearInterval(timerId)
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
//学生欠费明细表
|
||||||
|
const studentTableData = ref([
|
||||||
|
{
|
||||||
|
name: '张三',
|
||||||
|
type: '3年学费',
|
||||||
|
amount: 18000,
|
||||||
|
note: '该学生3年未缴纳学费,欠款18000元。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '王五',
|
||||||
|
type: '住宿费',
|
||||||
|
amount: 2400,
|
||||||
|
note: '该学生3年未缴纳学费,欠款2400元。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '赵六',
|
||||||
|
type: '书费',
|
||||||
|
amount: 200,
|
||||||
|
note: '该学生今年年未缴纳书费,欠款200元。'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
//学生欠费明细表格头数据
|
||||||
|
const studentColumns = ref([
|
||||||
|
{ colKey: 'name', title: '姓名' },
|
||||||
|
{ colKey: 'type', title: '类型' },
|
||||||
|
{ colKey: 'amount', title: '金额' },
|
||||||
|
{ colKey: 'note', title: '备注' }
|
||||||
|
])
|
||||||
|
//学生欠费明细表格分页数据
|
||||||
|
let studentPagination = {
|
||||||
|
defaultCurrent: 1,
|
||||||
|
defaultPageSize: 10,
|
||||||
|
total: 50
|
||||||
|
}
|
||||||
|
//学生欠费明细表格加载状态
|
||||||
|
const tudentLoading = ref(false)
|
||||||
|
//学生欠费明细表格点击事件
|
||||||
|
const studentHandleRowClick = e => {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
//学生欠费明细监听分页变化事件
|
||||||
|
const studentOnPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
|
tudentLoading.value = true
|
||||||
|
const timerId = setTimeout(() => {
|
||||||
|
tudentLoading.value = false
|
||||||
|
clearInterval(timerId)
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
DailyList()
|
DailyList()
|
||||||
})
|
})
|
||||||
|
|
582
src/pages/receivables-management/facultyAnalysis.vue
Normal file
582
src/pages/receivables-management/facultyAnalysis.vue
Normal file
|
@ -0,0 +1,582 @@
|
||||||
|
<template>
|
||||||
|
<div class="back-color">
|
||||||
|
<div class="table">
|
||||||
|
<t-table
|
||||||
|
row-key="id"
|
||||||
|
:data="tableData"
|
||||||
|
:columns="columns"
|
||||||
|
:hover="true"
|
||||||
|
table-layout="auto"
|
||||||
|
:pagination="pagination"
|
||||||
|
:show-header="true"
|
||||||
|
cell-empty-content="-"
|
||||||
|
max-height="550"
|
||||||
|
lazy-load
|
||||||
|
@page-change="onPageChange"
|
||||||
|
:loading="loading"
|
||||||
|
>
|
||||||
|
</t-table>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<t-select
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请选择"
|
||||||
|
:options="options"
|
||||||
|
size="medium"
|
||||||
|
@change="handleChange"
|
||||||
|
style="
|
||||||
|
width: 200px;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 20px;
|
||||||
|
margin-top: 3rem;
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div style="background-color: #fff; display: flex">
|
||||||
|
<div ref="chartContainer" style="width: 38rem; height: 30rem"></div>
|
||||||
|
<div ref="Container" style="width: 38rem; height: 30rem"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted } from 'vue'
|
||||||
|
import { APIAnalysisList } from '@/api/receivables-management/management'
|
||||||
|
import * as echarts from 'echarts'
|
||||||
|
//表格数据
|
||||||
|
const tableData = ref([])
|
||||||
|
// 表格loading
|
||||||
|
const loading = ref(false)
|
||||||
|
// 表格列数据
|
||||||
|
const columns = ref([
|
||||||
|
{ colKey: 'serial-number', title: '序号' },
|
||||||
|
{ colKey: 'name', title: '学院名称' },
|
||||||
|
{ colKey: 'studentnumber', title: '学生总数' },
|
||||||
|
{ colKey: 'department', title: '应缴费人数' },
|
||||||
|
{ colKey: 'major', title: '实际缴费人数' },
|
||||||
|
{ colKey: 'grade', title: '应缴总金额' },
|
||||||
|
{ colKey: 'tuition', title: '未缴费人数' },
|
||||||
|
{ colKey: 'weigrade', title: '未缴总金额' },
|
||||||
|
{ colKey: 'shition', title: '实收总金额' },
|
||||||
|
{ colKey: 'action', title: '操作', align: 'center' }
|
||||||
|
])
|
||||||
|
// 表格分页数据
|
||||||
|
let pagination = {
|
||||||
|
defaultCurrent: 1,
|
||||||
|
defaultPageSize: 10,
|
||||||
|
total: 50
|
||||||
|
}
|
||||||
|
// 监听分页变化事件
|
||||||
|
const onPageChange = (Newpage, PreviousPagePrev) => {
|
||||||
|
loading.value = true
|
||||||
|
const timerId = setTimeout(() => {
|
||||||
|
loading.value = false
|
||||||
|
clearInterval(timerId)
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
// 获取表格数据
|
||||||
|
const AnalysisList = async () => {
|
||||||
|
const res = await APIAnalysisList()
|
||||||
|
tableData.value = res.data.list
|
||||||
|
pagination.total = res.data.list.length
|
||||||
|
}
|
||||||
|
// 图表
|
||||||
|
const chartContainer = ref(null)
|
||||||
|
const Container = ref(null)
|
||||||
|
let option = {
|
||||||
|
title: {
|
||||||
|
text: '部门缴费人数分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}人'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电工程系', '护理系', '建筑系']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: ['120', '200', '300']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: ['80', '120', '200']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let moneypOption = {
|
||||||
|
title: {
|
||||||
|
text: '部门缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}元'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电工程系', '护理系', '建筑系', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['1344000', '2016000', '2016000', '5376000']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['672000', '1344000', '168000', '974000']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
const eoption = option => {
|
||||||
|
const chart = echarts.init(chartContainer.value)
|
||||||
|
chart.setOption(option)
|
||||||
|
}
|
||||||
|
const moneyption = option => {
|
||||||
|
const chart = echarts.init(Container.value)
|
||||||
|
chart.setOption(option)
|
||||||
|
}
|
||||||
|
// 选择框
|
||||||
|
const value = ref('部门')
|
||||||
|
const options = [
|
||||||
|
{ label: '部门', value: '部门' },
|
||||||
|
{ label: '机电工程系', value: '机电工程系' },
|
||||||
|
{ label: '护理分院', value: '护理分院' },
|
||||||
|
{ label: '建筑系', value: '建筑系' }
|
||||||
|
]
|
||||||
|
const handleChange = value => {
|
||||||
|
if (value === '部门') {
|
||||||
|
let option = {
|
||||||
|
title: {
|
||||||
|
text: '部门缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}人'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电工程系', '护理系', '建筑系']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: ['120', '200', '300']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: ['80', '120', '200']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let moneypOption = {
|
||||||
|
title: {
|
||||||
|
text: '部门缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}元'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电工程系', '护理系', '建筑系', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['1344000', '2016000', '2016000', '5376000']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['672000', '1344000', '168000', '974000']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
eoption(option)
|
||||||
|
moneyption(moneypOption)
|
||||||
|
} else if (value === '机电工程系') {
|
||||||
|
let option = {
|
||||||
|
title: {
|
||||||
|
text: '机电工程系缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}人数'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电一班', '机电二班', '机电三班', '机电四班', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [15, 23, 18, 13, 74]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [15, 7, 12, 17, 64]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
let moneypOption = {
|
||||||
|
title: {
|
||||||
|
text: '机电工程系缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}元'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['机电一班', '机电二班', '机电三班', '机电四班', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['1344000', '2016000', '2016000', '5376000']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['672000', '1344000', '168000', '974000']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
eoption(option)
|
||||||
|
moneyption(moneypOption)
|
||||||
|
} else if (value === '护理分院') {
|
||||||
|
let option = {
|
||||||
|
title: {
|
||||||
|
text: '护理分院缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}人数'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: [
|
||||||
|
'护理一班',
|
||||||
|
'护理二班',
|
||||||
|
'护理三班',
|
||||||
|
'护理四班',
|
||||||
|
'护理五班',
|
||||||
|
'总计'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [25, 23, 28, 13, 20, 109]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [15, 17, 12, 27, 20, 91]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let moneypOption = {
|
||||||
|
title: {
|
||||||
|
text: '护理分院缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}元'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: [
|
||||||
|
'护理一班',
|
||||||
|
'护理二班',
|
||||||
|
'护理三班',
|
||||||
|
'护理四班',
|
||||||
|
'护理五班',
|
||||||
|
'总计'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['420000', '386400', '470400', '336000', '403200', '1831200']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['252000', '285600', '201600', '285600', '403200', '1528800']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
eoption(option)
|
||||||
|
moneyption(moneypOption)
|
||||||
|
} else if (value === '建筑系') {
|
||||||
|
let option = {
|
||||||
|
title: {
|
||||||
|
text: '建筑系',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}人数'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['建筑一班', '建筑二班', '建筑三班', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [95, 74, 74, 243]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费人数',
|
||||||
|
type: 'line',
|
||||||
|
data: [25, 6, 26, 63]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
let moneypOption = {
|
||||||
|
title: {
|
||||||
|
text: '建筑系缴费分析表',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b}<br/>{c}元'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
left: 'left'
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
name: 'x',
|
||||||
|
splitLine: { show: false },
|
||||||
|
data: ['建筑一班', '建筑二班', '建筑三班', '总计']
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '0%',
|
||||||
|
right: '0%',
|
||||||
|
bottom: '0%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'log',
|
||||||
|
name: 'y',
|
||||||
|
minorSplitLine: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '应缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['1596000', '1246200', '1246200', '4082400']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '未缴费',
|
||||||
|
type: 'line',
|
||||||
|
data: ['420000', '100800', '436800', '1058400']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
eoption(option)
|
||||||
|
moneyption(moneypOption)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
AnalysisList()
|
||||||
|
eoption(option)
|
||||||
|
moneyption(moneypOption)
|
||||||
|
console.log(option.series[0].data)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
|
@ -49,6 +49,12 @@ const ReceivablesManagement = [
|
||||||
name: "ChargeSchedule",
|
name: "ChargeSchedule",
|
||||||
component: () => import("@/pages/receivables-management/chargeSchedule.vue"),
|
component: () => import("@/pages/receivables-management/chargeSchedule.vue"),
|
||||||
meta: { title: "学生催款单", },
|
meta: { title: "学生催款单", },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/faculty-analysis",
|
||||||
|
name: "FacultyAnalysis",
|
||||||
|
component: () => import("@/pages/receivables-management/facultyAnalysis.vue"),
|
||||||
|
meta: { title: "部门分析表", },
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue
Block a user