Files
zhxg_pc/src/views/stuCQS/good/fdy.vue

881 lines
34 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>