881 lines
34 KiB
Vue
881 lines
34 KiB
Vue
<template>
|
||
<div v-loading.fullscreen.lock="fullLoading" class="app-container">
|
||
<el-form ref="queryForm" :model="queryParams" size="mini" :inline="true" label-width="68px">
|
||
<el-form-item label="学号" prop="stuNo">
|
||
<el-input v-model="queryParams.stuNo" placeholder="请输入学号" clearable @keyup.enter.native="handleQuery" />
|
||
</el-form-item>
|
||
<el-form-item label="学生姓名" prop="stuName">
|
||
<el-input v-model="queryParams.stuName" placeholder="请输入学生姓名" clearable
|
||
@keyup.enter.native="handleQuery"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="奖项" prop="code">
|
||
<el-select v-model="queryParams.code">
|
||
<el-option v-for="(v, i) in code_list" :key="i" clearable :value="v.code"
|
||
:label="v.name"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label=" ">
|
||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||
</el-form-item>
|
||
</el-form>
|
||
|
||
<el-table v-loading="loading" :data="table_data">
|
||
<el-table-column label="奖项" prop="typeName" align="center" />
|
||
<el-table-column label="学生" prop="stuName" align="center" />
|
||
<el-table-column label="学号" prop="stuNo" align="center" />
|
||
<el-table-column label="提交时间" prop="createTime" align="center" />
|
||
<el-table-column label="申请状态" align="center">
|
||
<template slot-scope="scope">
|
||
<dict-tag :options="dict.type.audius_detail_type" :value="scope.row.applyStatus" />
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="操作" align="center">
|
||
<template slot-scope="scope">
|
||
<el-button v-if="scope.row.applyStatus == 1" type="text" size="mini" icon="el-icon-view"
|
||
@click="auditVClick(scope.row)"
|
||
>审核</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||
:limit.sync="queryParams.pageSize" @pagination="getList"
|
||
/>
|
||
|
||
<el-dialog :title="editMode ? '申请 (编辑模式)' : '申请'" :visible.sync="auditV" fullscreen :append-to-body="true">
|
||
<el-steps :active="getStep(auditForm)">
|
||
<el-step title="学生提交申请" description="" />
|
||
|
||
<el-step title="辅导员审核"
|
||
:status="isEmpty(auditForm.fdyComment) ? 'wait' : getStepStatus(auditForm.fdyComment)"
|
||
>
|
||
<template slot="description">
|
||
<div>
|
||
{{ isEmpty(auditForm.fdyNoName) ? '' : auditForm.fdyNoName }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.fdyComment) ? '' : auditForm.fdyComment }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.fdyTime) ? '' : auditForm.fdyTime }}
|
||
</div>
|
||
</template>
|
||
</el-step>
|
||
|
||
<el-step title="学院审核"
|
||
:status="isEmpty(auditForm.deptComment) ? 'wait' : getStepStatus(auditForm.deptComment)"
|
||
>
|
||
<template slot="description">
|
||
<div>
|
||
{{ isEmpty(auditForm.deptNoName) ? '' : auditForm.deptNoName }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.deptComment) ? '' : auditForm.deptComment }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.deptTime) ? '' : auditForm.deptTime }}
|
||
</div>
|
||
</template>
|
||
</el-step>
|
||
|
||
<el-step title="学工审核"
|
||
:status="isEmpty(auditForm.finalComment) ? 'wait' : getStepStatus(auditForm.finalComment)"
|
||
>
|
||
<template slot="description">
|
||
<div>
|
||
{{ isEmpty(auditForm.finalNoName) ? '' : auditForm.finalNoName }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.finalComment) ? '' : auditForm.finalComment }}
|
||
</div>
|
||
<div>
|
||
{{ isEmpty(auditForm.finalTime) ? '' : auditForm.finalTime }}
|
||
</div>
|
||
</template>
|
||
</el-step>
|
||
</el-steps>
|
||
<hr>
|
||
<el-form ref="auditForm" :model="editMode ? editForm : auditForm" label-width="160px">
|
||
<el-row>
|
||
<div style="display: flex;">
|
||
<el-col :span="12" style="margin-right: 50px;">
|
||
<el-form-item label="班级">
|
||
<el-input v-model="auditForm.className" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="姓名">
|
||
<el-input v-model="auditForm.stuName" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
</el-form-item>
|
||
|
||
<el-form-item label="政治面貌">
|
||
<el-input v-model="auditForm.zzmm" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item v-if="!isEmpty(auditForm.classtwoSure)" label="第二课堂学分认定">
|
||
<el-input v-model="auditForm.classtwoSure" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
</el-form-item>
|
||
|
||
<el-form-item label="职务">
|
||
<el-input v-if="!editMode" v-model="auditForm.classPost" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
<el-input v-else v-model="editForm.classPost" size="mini" placeholder="请输入职务" />
|
||
</el-form-item>
|
||
<el-form-item v-if="!isEmpty(auditForm.bankCard)" label="中国农业银行银行卡号">
|
||
<el-input v-if="!editMode" v-model="auditForm.bankCard" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
<el-input v-else v-model="editForm.bankCard" size="mini" placeholder="请输入银行卡号" />
|
||
</el-form-item>
|
||
<el-form-item v-if="!isEmpty(auditForm.bankAddr)" label="开户行">
|
||
<el-input v-if="!editMode" v-model="auditForm.bankAddr" readonly size="mini"
|
||
class="auditForm-input"
|
||
/>
|
||
<el-input v-else v-model="editForm.bankAddr" size="mini" placeholder="请输入开户行" />
|
||
</el-form-item>
|
||
<el-form-item label="获奖情况">
|
||
<el-input v-if="!editMode" v-model="auditForm.goodHis" readonly type="textarea"
|
||
:maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
|
||
class="auditForm-input"
|
||
/>
|
||
<el-input v-else v-model="editForm.goodHis" type="textarea"
|
||
:maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
|
||
placeholder="请输入获奖情况"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="主要事迹">
|
||
<el-input v-if="!editMode" v-model="auditForm.mainHis" readonly type="textarea"
|
||
:maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
|
||
class="auditForm-input"
|
||
/>
|
||
<el-input v-else v-model="editForm.mainHis" type="textarea"
|
||
:maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
|
||
placeholder="请输入主要事迹"
|
||
/>
|
||
</el-form-item>
|
||
<el-form-item label="您的审核意见">
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-radio-group v-model="doForm.status">
|
||
<el-radio :label="10">驳回</el-radio>
|
||
<el-radio :label="11">拒绝</el-radio>
|
||
<el-radio :label="6">通过</el-radio>
|
||
</el-radio-group>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-button v-if="!editMode" size="mini" type="primary" plain @click="toggleEditMode">修改申请</el-button>
|
||
<el-button v-else size="mini" type="success" @click="saveEdit">保存修改</el-button>
|
||
<el-button v-if="editMode" size="mini" @click="cancelEdit">取消编辑</el-button>
|
||
<el-button size="mini" type="primary" @click="doAudit">提交审核</el-button>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<el-input v-model="doForm.common" placeholder="请输入审核意见" type="textarea"
|
||
:maxlength="1000" :autosize="{ minRows: 10, maxRows: 10 }"
|
||
class="auditForm-input"
|
||
/>
|
||
</el-form-item>
|
||
</el-col>
|
||
|
||
|
||
<el-col :span="12">
|
||
<div>
|
||
<el-row>
|
||
<el-col :span="4">
|
||
<span style="font-weight: bolder;">该生申请奖项:</span>
|
||
</el-col>
|
||
<el-col :span="8">
|
||
<span style="color: red; font-weight: bolder;">
|
||
{{ auditForm.typeName }}
|
||
</span>
|
||
</el-col>
|
||
<el-col :span="6">
|
||
<el-button size="mini" @click="lookNeedV = true;">查看评优要求</el-button>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
|
||
|
||
<el-drawer :modal="false" size="50%" title="评优要求" :visible.sync="lookNeedV" direction="ltr"
|
||
:append-to-body="true"
|
||
>
|
||
<div class="sign">
|
||
<ol>
|
||
<h3>学业奖学金</h3>
|
||
<li>
|
||
一等奖学金:平均学分绩班级排名前3%,学年综合素质测评班级排名前50%;
|
||
</li>
|
||
<li>
|
||
二等奖学金:平均学分绩级排名前6%,学年综合素质测评班级排名前50%;
|
||
</li>
|
||
<li>
|
||
三等奖学金:平均学分绩班级排名前9%,学年综合素质测评班级排名前50%
|
||
</li>
|
||
</ol>
|
||
|
||
</div>
|
||
|
||
<div class="sign">
|
||
<ol>
|
||
<h3>三好学生</h3>
|
||
<li>
|
||
德、智、体、美、劳全面发展,平时注重道德修养,勤俭节约,弘扬正能量,树立良好形象。
|
||
</li>
|
||
<li>
|
||
以身作则,为人表率,具有较强的集体观念和集体荣誉感。热心为同学服务,待人诚恳、谦虚、有礼貌。
|
||
</li>
|
||
<li>
|
||
积极参加学校开展的第二课堂活动,第二课堂成绩单学分认定为优秀。在各级各类活动(竞赛)中成绩突出。
|
||
</li>
|
||
<li>
|
||
积极参加体育锻炼及其他文体活动,身体健康,体能考核成绩为良好及以上。(体测成绩80分以上)
|
||
</li>
|
||
<li>
|
||
参评学年各科平均学分绩75分以上(含75分),考查课“中等”及以上,平均学分绩班级排名前30%,学年综合素质测评班级排名前30%
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<div class="sign">
|
||
<ol>
|
||
<h3>优秀学生干部</h3>
|
||
<li>
|
||
关心集体,吃苦在前,以身作则,能起到模范带头作用。
|
||
</li>
|
||
<li>
|
||
具有较强的工作能力和组织能力,工作认真负责,责任心强,团结同学,热心为同学服务,工作效果好。社会实践工作取得较好成绩,在学生中有较高威信。
|
||
</li>
|
||
<li>
|
||
积极参加学校开展的第二课堂活动,第二课堂成绩单学分认定为优秀。在各级各类活动(竞赛)中成绩突出。
|
||
</li>
|
||
<li>
|
||
积极参加体育锻炼及其他文体活动,身体健康,体能考核成绩为良好及以上。
|
||
</li>
|
||
<li>
|
||
参评学年各科平均学分绩为70分以上(含70分),平均学分绩班级排名前40%,学年综合素质测评班级排名前50%
|
||
</li>
|
||
<span style="text-decoration: underline;color: lightskyblue;cursor: pointer;"
|
||
@click="lookMore"
|
||
>查看更多</span>
|
||
</ol>
|
||
|
||
</div>
|
||
</el-drawer>
|
||
|
||
|
||
<el-table :data="score_list">
|
||
<el-table-column label="学年" prop="stuYearName" align="center" />
|
||
<el-table-column label="平均学分绩" prop="stuScore" align="center" />
|
||
<el-table-column label="综合素质总成绩" prop="cphScore" align="center" />
|
||
<el-table-column label="体测成绩" prop="sportScore" align="center" />
|
||
<el-table-column label="平均学分绩班级排名" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.stuClassRank + '/' + scope.row.classCount }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="综合素质总成绩班级排名" align="center">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.cphClassRank + '/' + scope.row.classCount }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="平均学分绩班级排名百分比" align="center">
|
||
<template slot-scope="scope">
|
||
{{ Math.round(scope.row.stuClassRank / scope.row.classCount * 10000) / 100 + "%"
|
||
}}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="学年综合素质测评班级排名百分比" align="center">
|
||
<template slot-scope="scope">
|
||
{{ Math.round(scope.row.cphClassRank / scope.row.classCount * 10000) / 100 + "%"
|
||
}}
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
|
||
<el-table :data="count_list">
|
||
<el-table-column label="学年" prop="stuYearName" align="center" />
|
||
<el-table-column label="课程总门数" prop="courseCount" align="center" />
|
||
<el-table-column label="通过门数" prop="passCount" align="center" />
|
||
<el-table-column label="未通过门数" prop="unpassCount" align="center" />
|
||
</el-table>
|
||
|
||
<el-row>
|
||
<el-col v-for="(v, i) in course_list" :key="i" :span="12">
|
||
<el-table :header-row-style="{ padding: '0' }" :data="v.value"
|
||
:row-style="{ height: '0' }" :cell-style="{ padding: '0' }"
|
||
>
|
||
<el-table-column :label="v.name" align="center">
|
||
<el-table-column label="课程" prop="courseName" align="center" />
|
||
<el-table-column label="成绩" prop="courseScore" align="center" />
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
</el-col>
|
||
</div>
|
||
|
||
|
||
</el-row>
|
||
</el-form>
|
||
|
||
</el-dialog>
|
||
|
||
<el-dialog title="导出奖项审核结果" :visible.sync="exportV" width="500px">
|
||
|
||
<el-select v-model="exportForm.stuYearId" placeholder="请选择学年">
|
||
<el-option v-for="(v, i) in year_list" :key="i" clearable :value="v.id"
|
||
:label="v.stuYearName"
|
||
/>
|
||
</el-select>
|
||
|
||
<el-select v-model="exportForm.typeName" placeholder="请选择奖项">
|
||
<el-option v-for="(v, i) in code_list" :key="i" clearable :value="v.code" :label="v.name" />
|
||
</el-select>
|
||
|
||
<el-select v-model="exportForm.classId" style="width: 442px;" placeholder="请选择班级">
|
||
<el-option v-for="(v, i) in class_list" :key="i" clearable :value="v.classId"
|
||
:label="v.className"
|
||
/>
|
||
</el-select>
|
||
<div style="font-size: small;margin: 10px 0 10px 10px; color: red;">*学年、奖项是必选项,班级不选就默认导出全部。</div>
|
||
<el-button @click="doExport">导出</el-button>
|
||
</el-dialog>
|
||
|
||
|
||
<el-dialog :visible.sync="lookMoreV" :append-to-body="true">
|
||
<MoreDetail />
|
||
</el-dialog>
|
||
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import { listAllYear as listYear } from '@/api/stuCQS/basedata/year'
|
||
import { updateGoodapply } from '@/api/stuCQS/good/apply'
|
||
import {
|
||
applyStatus,
|
||
countStuIam,
|
||
countStuPass,
|
||
fdyAudit,
|
||
fdyExport,
|
||
listFdyAudit,
|
||
listStuScoreClassRank,listStuScoreClassRankByTag, listStuYearCourseScore,
|
||
lookDetail
|
||
} from '@/api/stuCQS/good/audit'
|
||
import { listOwnClass } from '@/api/stuCQS/info-fill/stu_eva_task'
|
||
|
||
import { groupBy, isEmpty, openDownloadDialog, workbook2blob } from '@/api/helpFunc'
|
||
import MoreDetail from '@/views/stuCQS/good/MoreDetail.vue'
|
||
import lodash from 'lodash'
|
||
import * as XLSX from 'xlsx'
|
||
|
||
|
||
export default {
|
||
name: 'FdyAudit',
|
||
dicts: ['audius_detail_type'],
|
||
components: {
|
||
MoreDetail
|
||
},
|
||
data() {
|
||
return {
|
||
applyStatus,
|
||
|
||
code_list: [
|
||
{
|
||
name: '学业奖学金',
|
||
code: 'XYJXJ'
|
||
},
|
||
{
|
||
name: '三好学生',
|
||
code: 'SHXS'
|
||
},
|
||
{
|
||
name: '优秀学生干部',
|
||
code: 'YXXSGB'
|
||
}
|
||
],
|
||
|
||
isEmpty,
|
||
|
||
fullLoading: false,
|
||
|
||
loading: false,
|
||
table_data: [],
|
||
total: 0,
|
||
queryParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
code: null,
|
||
status: null,
|
||
stuNo: '',
|
||
stuName: ''
|
||
},
|
||
|
||
auditV: false,
|
||
auditForm: {},
|
||
material_list: [],
|
||
|
||
score_list: [],
|
||
myScoreV: false,
|
||
course_list: [],
|
||
courseParams: {
|
||
pageNum: 1,
|
||
pageSize: 10
|
||
},
|
||
courseTotal: 0,
|
||
course_loading: false,
|
||
|
||
count_list: [],
|
||
|
||
iamV: false,
|
||
iam_count: [],
|
||
|
||
doForm: {
|
||
auditId: null,
|
||
status: null,
|
||
common: ''
|
||
},
|
||
|
||
exportForm: {
|
||
typeName: null,
|
||
classId: null,
|
||
stuYearId: null
|
||
},
|
||
exportV: false,
|
||
|
||
class_list: [],
|
||
year_list: [],
|
||
|
||
lookNeedV: false,
|
||
lookMoreV: false,
|
||
|
||
editMode: false,
|
||
editForm: {
|
||
applyId: null,
|
||
classPost: '',
|
||
bankCard: '',
|
||
bankAddr: '',
|
||
goodHis: '',
|
||
mainHis: ''
|
||
}
|
||
}
|
||
},
|
||
watch: {
|
||
// 监听editForm的变化
|
||
editForm: {
|
||
handler(newVal, oldVal) {
|
||
console.log('editForm发生变化:', newVal)
|
||
console.log('旧值:', oldVal)
|
||
},
|
||
deep: true,
|
||
immediate: true
|
||
}
|
||
},
|
||
created() {
|
||
this.listOwnClass()
|
||
this.listAllStuYear()
|
||
this.getList()
|
||
},
|
||
methods: {
|
||
getStepStatus(data) {
|
||
if ((data.includes('同意') && !data.includes('不同意')) || data.includes('通过') || (data.includes('符合') && !data.includes('不符合'))) {
|
||
return 'success'
|
||
} else {
|
||
return 'error'
|
||
}
|
||
},
|
||
getStep(data) {
|
||
if (!isEmpty(data.finalComment)) {
|
||
return 4
|
||
} else if (!isEmpty(data.deptComment)) {
|
||
return 3
|
||
} else if (!isEmpty(data.fdyComment)) {
|
||
return 2
|
||
} else {
|
||
return 1
|
||
}
|
||
},
|
||
lookMore() {
|
||
this.lookMoreV = true
|
||
window.open('http://zhxg.gxsdxy.cn/file/pypxnotify.pdf')
|
||
},
|
||
async listAllStuYear() {
|
||
let res = await listYear()
|
||
if (res.code == 200) {
|
||
this.year_list = [...res.data]
|
||
}
|
||
},
|
||
async listOwnClass() {
|
||
let res = await listOwnClass()
|
||
if (res.code == 200) {
|
||
this.class_list = [...res.data]
|
||
}
|
||
},
|
||
async doExport() {
|
||
let sdata = { ...this.exportForm }
|
||
if (isEmpty(sdata.stuYearId)) {
|
||
this.$message.info('请选择学年')
|
||
return
|
||
}
|
||
if (isEmpty(sdata.typeName)) {
|
||
this.$message.info('请选择奖项')
|
||
return
|
||
}
|
||
|
||
this.loading = true
|
||
let res = await fdyExport(sdata)
|
||
this.loading = false
|
||
if (res.code == 200) {
|
||
let data = res.data
|
||
let fileName = ''
|
||
let fileHeader = []
|
||
let fileHeaderZh = {}
|
||
let fileCol = []
|
||
switch (sdata.typeName) {
|
||
case 'XYJXJ':
|
||
fileHeader = ['stuYearName', 'deptName', 'majorName', 'className', 'stuNo', 'stuName', 'typeName', 'applyStatus', 'bankCard', 'bankAddr', 'importTime', 'teacherName']
|
||
fileHeaderZh = {
|
||
'stuYearName': '学年',
|
||
'deptName': '学院',
|
||
'majorName': '专业',
|
||
'className': '班级',
|
||
'stuNo': '学号',
|
||
'stuName': '姓名',
|
||
'typeName': '奖项',
|
||
'applyStatus': '审核状态',
|
||
'bankCard': '银行卡号',
|
||
'bankAddr': '开户行',
|
||
'importTime': '导出时间',
|
||
'teacherName': '辅导员'
|
||
}
|
||
fileCol = [
|
||
{ wch: 15 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 10 },
|
||
{ wch: 10 },
|
||
{ wch: 15 },
|
||
{ wch: 20 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 40 }
|
||
]
|
||
fileName = '学业奖学金名单'
|
||
break
|
||
case 'SHXS':
|
||
fileHeader = ['stuYearName', 'deptName', 'majorName', 'className', 'stuNo', 'stuName', 'typeName', 'applyStatus', 'importTime', 'teacherName']
|
||
fileHeaderZh = {
|
||
'stuYearName': '学年',
|
||
'deptName': '学院',
|
||
'majorName': '专业',
|
||
'className': '班级',
|
||
'stuNo': '学号',
|
||
'stuName': '姓名',
|
||
'typeName': '奖项',
|
||
'applyStatus': '审核状态',
|
||
'importTime': '导出时间',
|
||
'teacherName': '辅导员'
|
||
}
|
||
fileCol = [
|
||
{ wch: 15 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 10 },
|
||
{ wch: 10 },
|
||
{ wch: 15 },
|
||
{ wch: 15 },
|
||
{ wch: 40 },
|
||
{ wch: 40 }
|
||
]
|
||
fileName = '优秀学生干部名单'
|
||
break
|
||
case 'YXXSGB':
|
||
fileHeader = ['stuYearName', 'deptName', 'majorName', 'className', 'stuNo', 'stuName', 'typeName', 'applyStatus', 'importTime', 'teacherName']
|
||
fileHeaderZh = {
|
||
'stuYearName': '学年',
|
||
'deptName': '学院',
|
||
'majorName': '专业',
|
||
'className': '班级',
|
||
'stuNo': '学号',
|
||
'stuName': '姓名',
|
||
'typeName': '奖项',
|
||
'applyStatus': '审核状态',
|
||
'importTime': '导出时间',
|
||
'teacherName': '辅导员'
|
||
}
|
||
fileCol = [
|
||
{ wch: 15 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 40 },
|
||
{ wch: 10 },
|
||
{ wch: 10 },
|
||
{ wch: 15 },
|
||
{ wch: 15 },
|
||
{ wch: 40 },
|
||
{ wch: 40 }
|
||
]
|
||
fileName = '学业奖学金名单'
|
||
break
|
||
}
|
||
|
||
const arrayWithHeader = [fileHeaderZh, ...data]
|
||
|
||
var sheet1 = XLSX.utils.json_to_sheet(arrayWithHeader,
|
||
{
|
||
header: fileHeader,
|
||
skipHeader: true
|
||
})
|
||
sheet1['!cols'] = fileCol
|
||
|
||
// 创建一个新的空的workbook
|
||
var wb = XLSX.utils.book_new()
|
||
// 为每一个工作簿设置名称并添加到workbook(excel表)中
|
||
XLSX.utils.book_append_sheet(wb, sheet1, fileName)
|
||
const workbookBlob = workbook2blob(wb) // 辅助函数workbook2blob
|
||
// 下载文档并添加文件名称
|
||
openDownloadDialog(workbookBlob, fileName + '.xlsx') // 辅助函数openDownloadDialog
|
||
|
||
|
||
} else {
|
||
this.$message.info('出错啦,刷新试试')
|
||
}
|
||
|
||
|
||
},
|
||
async exportVClick() {
|
||
this.exportV = true
|
||
},
|
||
async getList() {
|
||
this.loading = true
|
||
let res = await listFdyAudit(this.queryParams)
|
||
this.loading = false
|
||
if (res.code == 200) {
|
||
this.table_data = [...res.rows]
|
||
this.total = res.total
|
||
}
|
||
},
|
||
/** 搜索按钮操作 */
|
||
handleQuery() {
|
||
this.getList()
|
||
},
|
||
/** 重置按钮操作 */
|
||
resetQuery() {
|
||
this.resetForm('queryForm')
|
||
this.handleQuery()
|
||
},
|
||
async auditVClick(v) {
|
||
|
||
let id = v.applyId || v.id // 尝试获取applyId或id
|
||
console.log('提取的id:', id)
|
||
|
||
if (!id) {
|
||
this.$message.error('无法获取申请ID')
|
||
return
|
||
}
|
||
|
||
this.fullLoading = true
|
||
let res = await lookDetail(id)
|
||
this.fullLoading = false
|
||
if (res.code == 200) {
|
||
|
||
if (!isEmpty(res.data.material)) {
|
||
this.material_list = res.data.material.split(',')
|
||
} else {
|
||
this.material_list = []
|
||
}
|
||
this.auditForm = res.data
|
||
console.log('auditForm赋值后:', this.auditForm) // 调试用
|
||
this.auditV = true
|
||
}
|
||
//
|
||
this.myScoreVClick()
|
||
//this.iamVClick()
|
||
},
|
||
async countStuIam() {
|
||
let stuNo = this.auditForm.stuNo
|
||
let res = await countStuIam(stuNo)
|
||
if (res.code == 200) {
|
||
this.iam_count = res.data
|
||
}
|
||
},
|
||
|
||
async countStuPass() {
|
||
let stuNo = this.auditForm.stuNo
|
||
|
||
let res = await countStuPass(stuNo)
|
||
if (res.code == 200) {
|
||
this.count_list = [...res.data]
|
||
}
|
||
},
|
||
async listStuYearCourseScore() {
|
||
let stuNo = this.auditForm.stuNo
|
||
|
||
this.course_loading = true
|
||
let res = await listStuYearCourseScore(stuNo, this.courseParams)
|
||
this.course_loading = false
|
||
|
||
if (res.code == 200) {
|
||
|
||
let groupdata = groupBy([...res.rows], x => {
|
||
return x.termName
|
||
})
|
||
|
||
let temp = []
|
||
for (let i in groupdata) {
|
||
let needAddTemp = {}
|
||
needAddTemp.name = i.replace(/\"/g, '')
|
||
needAddTemp.value = groupdata[i]
|
||
temp.push(needAddTemp)
|
||
}
|
||
this.course_list = [...temp]
|
||
this.courseTotal = res.total
|
||
}
|
||
},
|
||
async listStuScoreClassRank() {
|
||
let stuNo = this.auditForm.stuNo
|
||
/* let res = await listStuScoreClassRank(stuNo) */
|
||
/* 此处使用硬编码,请根据实际情况修改。
|
||
当前功能是获取'评优评先---PYPS'标签对应学年的成绩排名信息。
|
||
涉及到学年标签字典module_tag,需要在字典管理中查询对应的信息。
|
||
如果在字典管理更改了 学年标签 的信息,此处也要进行相应修改。
|
||
---尽量避免学年标签字典的更改!!!! */
|
||
const yearTag = 'PYPS'
|
||
let res = await listStuScoreClassRankByTag(stuNo,yearTag)
|
||
if (res.code == 200) {
|
||
this.score_list = lodash.cloneDeep(res.data)
|
||
}
|
||
},
|
||
iamVClick() {
|
||
this.countStuIam()
|
||
this.countStuPass()
|
||
this.listStuScoreClassRank()
|
||
this.listStuYearCourseScore()
|
||
this.iamV = true
|
||
},
|
||
myScoreVClick() {
|
||
this.countStuPass()
|
||
this.listStuScoreClassRank()
|
||
this.listStuYearCourseScore()
|
||
this.myScoreV = true
|
||
},
|
||
async doAudit() {
|
||
let sdata = { ...this.doForm }
|
||
if (isEmpty(sdata.status)) {
|
||
this.$message.info('请选择是否通过')
|
||
return
|
||
}
|
||
if (isEmpty(sdata.common)) {
|
||
this.$message.info('请填写审核意见')
|
||
return
|
||
}
|
||
sdata.auditId = parseInt(this.auditForm.auditId)
|
||
this.fullLoading = true
|
||
let res = await fdyAudit(sdata)
|
||
this.fullLoading = false
|
||
if (res.code == 200) {
|
||
this.getList()
|
||
this.auditForm = {}
|
||
this.doForm = {
|
||
auditId: null,
|
||
status: null,
|
||
common: ''
|
||
}
|
||
this.auditV = false
|
||
this.$message.success(res.msg)
|
||
}
|
||
},
|
||
toggleEditMode() {
|
||
if (!this.editMode) {
|
||
// 确保我们能获取到申请ID
|
||
const applyId = this.auditForm.applyId || this.auditForm.id
|
||
this.editForm = {
|
||
id: applyId,
|
||
classPost: this.auditForm.classPost || '',
|
||
bankCard: this.auditForm.bankCard || '',
|
||
bankAddr: this.auditForm.bankAddr || '',
|
||
goodHis: this.auditForm.goodHis || '',
|
||
mainHis: this.auditForm.mainHis || ''
|
||
}
|
||
console.log('初始化后的editForm数据:', this.editForm)
|
||
this.editMode = true
|
||
} else {
|
||
this.editMode = false
|
||
}
|
||
},
|
||
cancelEdit() {
|
||
this.editMode = false
|
||
// 重置编辑表单
|
||
this.editForm = {
|
||
applyId: null,
|
||
classPost: '',
|
||
bankCard: '',
|
||
bankAddr: '',
|
||
goodHis: '',
|
||
mainHis: ''
|
||
}
|
||
},
|
||
async saveEdit() {
|
||
try {
|
||
// 验证必填字段
|
||
|
||
this.fullLoading = true
|
||
|
||
// 尝试像工作示例那样直接发送整个表单对象
|
||
const submitData = { ...this.editForm }
|
||
|
||
// 尝试直接发送数据,不使用包装对象
|
||
const res = await updateGoodapply(submitData)
|
||
this.fullLoading = false
|
||
|
||
|
||
if (res.code === 200) {
|
||
this.$message.success('修改成功')
|
||
// 更新审核表单数据
|
||
Object.assign(this.auditForm, this.editForm)
|
||
this.editMode = false
|
||
// 重新加载数据
|
||
this.getList()
|
||
} else {
|
||
this.$message.error(res.msg || '修改失败')
|
||
}
|
||
} catch (error) {
|
||
this.fullLoading = false
|
||
console.error('修改失败错误:', error)
|
||
this.$message.error('修改失败:' + (error.message || '未知错误'))
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.addForm-input {
|
||
width: 400px;
|
||
}
|
||
|
||
.detail {
|
||
.el-form-item {
|
||
margin-bottom: 0px;
|
||
}
|
||
}
|
||
|
||
.sign {
|
||
width: 100%;
|
||
border: 1px solid rgb(163, 211, 255);
|
||
font-size: small;
|
||
margin-bottom: 10px;
|
||
border-radius: 2px;
|
||
}
|
||
</style> |