-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -61,7 +37,6 @@
@@ -87,7 +62,8 @@
v-if="permissions.professional_professionalteacheracademicrelation_add">新 增
- 通过
- 驳回
- 待审核
- -
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -144,10 +117,11 @@
v-if="scope.row.qualificationImg && scope.row.qualificationImg !== ''"
type="primary"
link
+ icon="Document"
@click="handlePreview(scope.row.qiList, 1)">查看
-
+
-
-
+
@@ -156,40 +130,44 @@
v-if="scope.row.degreeImg && scope.row.degreeImg !== ''"
type="primary"
link
+ icon="Document"
@click="handlePreview(scope.row.deList, 2)">查看
-
-
+
+
+
编辑
通过
驳回
删除
@@ -214,7 +192,6 @@
-
@@ -229,28 +206,28 @@ import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage } from '/@/hooks/message'
import { useMessageBox } from '/@/hooks/message'
import { useDict } from '/@/hooks/dict'
-import VChart from 'vue-echarts'
-import { use } from 'echarts/core'
-import { PieChart } from 'echarts/charts'
-import { TooltipComponent, LegendComponent } from 'echarts/components'
-import { CanvasRenderer } from 'echarts/renderers'
import {
fetchList,
putObj,
delObj,
- getChartOption,
exportExcel
} from '/@/api/professional/professionaluser/professionalteacheracademicrelation'
import { getDegreeList } from '/@/api/professional/rsbase/professionalacademicdegreeconfig'
import { getQualificationList } from '/@/api/professional/rsbase/academicqualificationsconfig'
import { defineAsyncComponent } from 'vue'
-const MultiDialog = defineAsyncComponent(() => import('/@/views/professional/teacherbase/multiDialog.vue'))
-import DataForm from './form.vue'
-import ProfessionalBackResaon from '/@/views/professional/common/professional-back-resaon.vue'
+const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
+const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
+const DataForm = defineAsyncComponent(() => import('./form.vue'))
+const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue'))
const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue'))
-// 注册 ECharts 组件
-use([TooltipComponent, LegendComponent, PieChart, CanvasRenderer])
+// 审核状态选项(独立定义,防止其他页面修改时被波及)
+import type { StateOption } from '/@/components/AuditState/index.vue'
+const auditStateOptions: StateOption[] = [
+ { value: '1', label: '已通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' },
+ { value: '-2', label: '已驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' },
+ { value: '0', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }
+]
// 使用 Pinia store
const userInfoStore = useUserInfo()
@@ -275,10 +252,8 @@ const { professional_state: professionalState } = useDict('professional_state')
// 表格引用
const tableRef = ref()
const searchFormRef = ref()
-const multiDialogRef = ref()
const dataFormRef = ref()
const backReasonRef = ref()
-const chartRef = ref()
const showSearch = ref(true)
// 搜索表单数据
@@ -288,10 +263,6 @@ const search = reactive({
realName: ''
})
-// 图表数据
-const chartOption = ref
({})
-const chartData = ref([])
-
// 材料预览
const dialogVisible = ref(false)
const dialogTitle = ref('')
@@ -334,34 +305,6 @@ const state: BasicTableProps = reactive({
const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTable(state)
-// 初始化图表
-const initChartOption = async () => {
- try {
- const response = await getChartOption()
- chartOption.value = response.data.data || {}
-
- // 处理图表数据(如果有的话)
- if (chartOption.value.series && chartOption.value.series[0] && chartOption.value.series[0].data) {
- let total = 0
- chartOption.value.series[0].data.forEach((item: any) => {
- total += item.value || 0
- })
-
- chartData.value = []
- chartOption.value.series[0].data.forEach((item: any) => {
- const rate = total > 0 ? Number((item.value / total * 100).toFixed(1)) : 0
- chartData.value.push({
- xl: item.name,
- total: item.value,
- rate: `${rate}%`
- })
- })
- }
- } catch (error) {
- // Failed to load chart data
- }
-}
-
// 预览材料
const handlePreview = (list: string[], type: number) => {
imgUrl.value = []
@@ -425,7 +368,7 @@ const resetQuery = () => {
// 打开新增窗口
const handleAdd = () => {
- multiDialogRef.value?.init(1)
+ dataFormRef.value?.openDialog()
}
// 打开编辑窗口
diff --git a/src/views/professional/professionalteacheracademicrelation/statistics.vue b/src/views/professional/professionalteacheracademicrelation/statistics.vue
new file mode 100644
index 0000000..bfbd07e
--- /dev/null
+++ b/src/views/professional/professionalteacheracademicrelation/statistics.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
学历统计
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/professional/professionalteachercertificaterelation/form.vue b/src/views/professional/professionalteachercertificaterelation/form.vue
index b96063b..f15932e 100644
--- a/src/views/professional/professionalteachercertificaterelation/form.vue
+++ b/src/views/professional/professionalteachercertificaterelation/form.vue
@@ -1,5 +1,5 @@
-
+
点击上传
- 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
+ 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
@@ -63,7 +67,6 @@
点击上传
- 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
+ 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
@@ -81,7 +86,7 @@
@@ -92,18 +97,13 @@
import { ref, reactive, computed } from 'vue'
import { Session } from '/@/utils/storage'
import { useMessage } from '/@/hooks/message'
-import { getAllInfoAboutList } from '/@/api/professional/teacherbase'
+import { getMyTeacherNo, updateOtherInfo } from '/@/api/professional/professionaluser/teacherbase'
import { putObj } from '/@/api/professional/professionaluser/professionalteachercertificaterelation'
import { getTeacherCertificateList } from '/@/api/professional/rsbase/professionalteachercertificateconf'
-
-// Props
-const props = defineProps<{
- visible?: boolean
-}>()
+import { checkLocked } from '/@/api/professional/professionalstatuslock'
// Emits
const emit = defineEmits<{
- (e: 'update:visible', value: boolean): void
(e: 'refreshData'): void
}>()
@@ -114,11 +114,8 @@ const message = useMessage()
const formRef = ref()
const submitLoading = ref(false)
-// 对话框显示状态
-const visible = computed({
- get: () => props.visible || false,
- set: (val) => emit('update:visible', val)
-})
+// 对话框显示状态(内部管理)
+const dialogVisible = ref(false)
// 表单数据
const dataForm = reactive({
@@ -143,39 +140,15 @@ const formRules = {
{ required: true, message: '请选择取证时间', trigger: 'change' }
],
certificateNumber: [
- { required: true, message: '请输入证书编号', trigger: 'blur' }
+ { required: true, message: '请输入证书编号', trigger: 'blur' },
+ { pattern: /^[A-Za-z0-9]+$/, message: '证书编号只能包含英文和数字', trigger: 'blur' }
]
}
// 教师资格证列表
const teacherCertificateList = ref([])
-// 基础信息
-const baseInfoAbout = reactive<{
- stationTypeList: any[]
- atStationList: any[]
- teacherTypeList: any[]
- employmentNatureList: any[]
- stationLevelList: any[]
- stationDutyLevelList: any[]
- workTypeList: any[]
- proTitleList: any[]
- majorStationList: any[]
- qualificationList: any[]
- partBranchList: any[]
-}>({
- stationTypeList: [],
- atStationList: [],
- teacherTypeList: [],
- employmentNatureList: [],
- stationLevelList: [],
- stationDutyLevelList: [],
- workTypeList: [],
- proTitleList: [],
- majorStationList: [],
- qualificationList: [],
- partBranchList: []
-})
+// 基础信息(简化,只保留需要的)
// 上传相关
const url = ref('')
@@ -195,23 +168,8 @@ const showForm = ref(false)
// 初始化字典数据
const initDicData = async () => {
try {
- const [response, certResponse] = await Promise.all([
- getAllInfoAboutList(),
- getTeacherCertificateList()
- ])
-
- const map = response.data.data
- baseInfoAbout.stationTypeList = map['stationTypeList'] || []
- baseInfoAbout.atStationList = map['atStationList'] || []
- baseInfoAbout.teacherTypeList = map['teacherTypeList'] || []
- baseInfoAbout.employmentNatureList = map['employmentNatureList'] || []
- baseInfoAbout.stationLevelList = map['stationLevelList'] || []
- baseInfoAbout.stationDutyLevelList = map['stationDutyLevelList'] || []
- baseInfoAbout.workTypeList = map['workTypeList'] || []
- baseInfoAbout.proTitleList = map['proTitleList'] || []
- baseInfoAbout.majorStationList = map['majorStationList'] || []
- baseInfoAbout.qualificationList = map['qualificationList'] || []
- baseInfoAbout.partBranchList = map['partBranchList'] || []
+ // 使用专门的 API 获取数据(与 index.vue 保持一致)
+ const certResponse = await getTeacherCertificateList()
// 获取教师资格证列表
if (certResponse && certResponse.data) {
@@ -219,13 +177,16 @@ const initDicData = async () => {
? certResponse.data
: (certResponse.data.records || certResponse.data.list || [])
}
-
- visible.value = true
} catch (error) {
// 获取字典数据失败
}
}
+// 证书编号输入处理(只允许英文和数字)
+const handleCertificateNumberInput = (value: string) => {
+ dataForm.certificateNumber = value.replace(/[^A-Za-z0-9]/g, '')
+}
+
// 文件上传成功 - 材料A
const materiaUploadSuccess = (response: any) => {
if (response.data && response.data.code === "-1") {
@@ -245,38 +206,104 @@ const materiaUploadSuccessB = (response: any) => {
}
// 打开对话框
-const openDialog = (row: any) => {
- url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${row.teacherNo}&type=0`
- fileList.value = []
- fileListB.value = []
- Object.assign(dataForm, {
- certificateConfId: row.certificateConfId || '',
- certificateTime: row.certificateTime || '',
- certificateNumber: row.certificateNumber || '',
- materialA: row.materialA || '',
- materialB: row.materialB || '',
- evidenceA: row.evidenceA || '',
- evidenceB: row.evidenceB || '',
- state: row.state || '',
- teacherNo: row.teacherNo || '',
- id: row.id || ''
- })
- showForm.value = true
- initDicData()
+const openDialog = async (row?: any) => {
+ if (row && row.id) {
+ // 编辑模式
+ url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${row.teacherNo}&type=0`
+ fileList.value = []
+ fileListB.value = []
+ Object.assign(dataForm, {
+ certificateConfId: row.certificateConfId || '',
+ certificateTime: row.certificateTime || '',
+ certificateNumber: row.certificateNumber || '',
+ materialA: row.materialA || '',
+ materialB: row.materialB || '',
+ evidenceA: row.evidenceA || '',
+ evidenceB: row.evidenceB || '',
+ state: row.state || '',
+ teacherNo: row.teacherNo || '',
+ id: row.id || ''
+ })
+ showForm.value = true
+ await initDicData()
+ dialogVisible.value = true
+ } else {
+ // 新增模式:先检查是否锁定,再获取当前用户的 teacherNo
+ try {
+ const lockResponse = await checkLocked('teacherTitle')
+ if (lockResponse.data) {
+ // 已锁定
+ message.warning("新增功能已锁定,暂不允许操作")
+ return
+ }
+
+ // 未锁定,继续获取 teacherNo
+ const response = await getMyTeacherNo()
+ const teacherNo = response.data
+ url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${teacherNo}&type=0`
+ Object.assign(dataForm, {
+ certificateConfId: '',
+ certificateTime: '',
+ certificateNumber: '',
+ materialA: '',
+ materialB: '',
+ evidenceA: '',
+ evidenceB: '',
+ state: '',
+ teacherNo: teacherNo,
+ id: ''
+ })
+ fileList.value = []
+ fileListB.value = []
+ // 先加载字典数据,再显示表单
+ await initDicData()
+ showForm.value = true
+ dialogVisible.value = true
+ } catch (error) {
+ message.error('获取教师编号失败')
+ return
+ }
+ }
}
// 提交表单
const dialogSubmit = async () => {
if (!formRef.value) return
+ // 验证证明材料是否上传(与 MultiDialog 保持一致)
+ if (!dataForm.evidenceA && !dataForm.materialA) {
+ message.warning("请上传证明材料")
+ return
+ }
+
await formRef.value.validate(async (valid: boolean) => {
if (valid) {
submitLoading.value = true
try {
- dataForm.state = '0'
- await putObj(dataForm)
- message.success("操作成功")
- visible.value = false
+ if (dataForm.id) {
+ // 编辑:使用 putObj 接口(管理员编辑)
+ dataForm.state = '0'
+ await putObj(dataForm)
+ message.success("修改成功")
+ } else {
+ // 新增:使用 updateOtherInfo 接口(与 MultiDialog 保持一致)
+ // 注意:MultiDialog 的 type=0 表单只有 certificateConfId 和 certificateNumber,没有 certificateTime
+ const submitData: any = {
+ type: 0, // 教师资格证类型
+ teacherNo: dataForm.teacherNo,
+ certificateConfId: dataForm.certificateConfId,
+ certificateNumber: dataForm.certificateNumber,
+ mateA: dataForm.evidenceA || dataForm.materialA // 使用 mateA 字段(与 MultiDialog 一致)
+ }
+
+ const res = await updateOtherInfo(submitData)
+ if (res.data == '-1') {
+ message.warning("当前不允许提交")
+ } else {
+ message.success("提交成功")
+ }
+ }
+ dialogVisible.value = false
emit('refreshData')
} catch (error: any) {
message.error(error?.msg || '操作失败')
diff --git a/src/views/professional/professionalteachercertificaterelation/index.vue b/src/views/professional/professionalteachercertificaterelation/index.vue
index 172cba8..0868d43 100755
--- a/src/views/professional/professionalteachercertificaterelation/index.vue
+++ b/src/views/professional/professionalteachercertificaterelation/index.vue
@@ -14,7 +14,6 @@
@@ -39,7 +37,6 @@
@@ -65,7 +62,8 @@
v-if="permissions.professional_professionalteachercertificaterelation_add">新 增
- 通过
- 驳回
- 待审核
- -
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -116,40 +111,44 @@
v-if="scope.row.evidenceA && scope.row.evidenceA !== ''"
type="primary"
link
+ icon="Document"
@click="handlePreview(scope.row.srcList)">查看
-
-
+
+
+
编辑
通过
驳回
删除
@@ -174,7 +173,6 @@
-
@@ -197,11 +195,20 @@ import {
exportExcel
} from '/@/api/professional/professionaluser/professionalteachercertificaterelation'
import { defineAsyncComponent } from 'vue'
-const MultiDialog = defineAsyncComponent(() => import('/@/views/professional/teacherbase/multiDialog.vue'))
+const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
+const AuditState = defineAsyncComponent(() => import('/@/components/AuditState/index.vue'))
const DataForm = defineAsyncComponent(() => import('./form.vue'))
const ProfessionalBackResaon = defineAsyncComponent(() => import('/@/views/professional/common/professional-back-resaon.vue'))
const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue'))
+// 审核状态选项(独立定义,防止其他页面修改时被波及)
+import type { StateOption } from '/@/components/AuditState/index.vue'
+const auditStateOptions: StateOption[] = [
+ { value: '1', label: '已通过', type: 'success', icon: 'fa-solid fa-circle-check', effect: 'dark' },
+ { value: '-2', label: '已驳回', type: 'danger', icon: 'fa-solid fa-circle-xmark', effect: 'dark' },
+ { value: '0', label: '待审核', type: 'warning', icon: 'fa-regular fa-clock', effect: 'light' }
+]
+
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
@@ -225,7 +232,6 @@ const { professional_state: professionalState } = useDict('professional_state')
// 表格引用
const tableRef = ref()
const searchFormRef = ref()
-const multiDialogRef = ref()
const dataFormRef = ref()
const backReasonRef = ref()
const showSearch = ref(true)
@@ -327,7 +333,7 @@ const resetQuery = () => {
// 打开新增窗口
const handleAdd = () => {
- multiDialogRef.value?.init(0)
+ dataFormRef.value?.openDialog()
}
// 打开编辑窗口
diff --git a/src/views/professional/professionalteacherhonor/form.vue b/src/views/professional/professionalteacherhonor/form.vue
index c9d53c9..5e0d6d0 100644
--- a/src/views/professional/professionalteacherhonor/form.vue
+++ b/src/views/professional/professionalteacherhonor/form.vue
@@ -1,5 +1,5 @@
-
+
点击上传
- 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
+ 仅支持jpg,jpeg,png,pdf后缀的文件上传
+
@@ -52,7 +53,7 @@
@@ -63,17 +64,12 @@
import { ref, reactive, computed } from 'vue'
import { Session } from '/@/utils/storage'
import { useMessage } from '/@/hooks/message'
-import { getAllInfoAboutList } from '/@/api/professional/teacherbase'
+import { getMyTeacherNo, updateOtherInfo } from '/@/api/professional/professionaluser/teacherbase'
import { putObj } from '/@/api/professional/professionaluser/professionalteacherhonor'
-
-// Props
-const props = defineProps<{
- visible?: boolean
-}>()
+import { checkLocked } from '/@/api/professional/professionalstatuslock'
// Emits
const emit = defineEmits<{
- (e: 'update:visible', value: boolean): void
(e: 'refreshData'): void
}>()
@@ -84,11 +80,8 @@ const message = useMessage()
const formRef = ref()
const submitLoading = ref(false)
-// 对话框显示状态
-const visible = computed({
- get: () => props.visible || false,
- set: (val) => emit('update:visible', val)
-})
+// 对话框显示状态(内部管理)
+const dialogVisible = ref(false)
// 表单数据
const dataForm = reactive({
@@ -116,32 +109,7 @@ const dataRules = {
]
}
-// 基础信息
-const baseInfoAbout = reactive<{
- stationTypeList: any[]
- atStationList: any[]
- teacherTypeList: any[]
- employmentNatureList: any[]
- stationLevelList: any[]
- stationDutyLevelList: any[]
- workTypeList: any[]
- proTitleList: any[]
- majorStationList: any[]
- qualificationList: any[]
- partBranchList: any[]
-}>({
- stationTypeList: [],
- atStationList: [],
- teacherTypeList: [],
- employmentNatureList: [],
- stationLevelList: [],
- stationDutyLevelList: [],
- workTypeList: [],
- proTitleList: [],
- majorStationList: [],
- qualificationList: [],
- partBranchList: []
-})
+// 基础信息(简化,只保留需要的)
// 上传相关
const url = ref('')
@@ -160,26 +128,9 @@ const showForm = ref(false)
// 标题
const title = ref('')
-// 初始化字典数据
+// 初始化字典数据(简化,不需要加载字典数据)
const initDicData = async () => {
- try {
- const response = await getAllInfoAboutList()
- const map = response.data.data
- baseInfoAbout.stationTypeList = map['stationTypeList'] || []
- baseInfoAbout.atStationList = map['atStationList'] || []
- baseInfoAbout.teacherTypeList = map['teacherTypeList'] || []
- baseInfoAbout.employmentNatureList = map['employmentNatureList'] || []
- baseInfoAbout.stationLevelList = map['stationLevelList'] || []
- baseInfoAbout.stationDutyLevelList = map['stationDutyLevelList'] || []
- baseInfoAbout.workTypeList = map['workTypeList'] || []
- baseInfoAbout.proTitleList = map['proTitleList'] || []
- baseInfoAbout.majorStationList = map['majorStationList'] || []
- baseInfoAbout.qualificationList = map['qualificationList'] || []
- baseInfoAbout.partBranchList = map['partBranchList'] || []
- visible.value = true
- } catch (error) {
- // 获取字典数据失败
- }
+ // 综合表彰不需要额外的字典数据
}
// 文件上传成功
@@ -192,37 +143,102 @@ const materiaUploadSuccess = (response: any) => {
}
// 打开对话框
-const openDialog = (row: any) => {
- title.value = row.teacherName || ''
- url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${row.teacherNo}&type=4`
- fileList.value = []
- Object.assign(dataForm, {
- honor: row.honor || '',
- honorCompany: row.honorCompany || '',
- year: row.year || null,
- materialA: row.materialA || '',
- attachment: row.attachment || '',
- state: row.state || '',
- teacherNo: row.teacherNo || '',
- teacherName: row.teacherName || '',
- id: row.id || ''
- })
- showForm.value = true
- initDicData()
+const openDialog = async (row?: any) => {
+ if (row && row.id) {
+ // 编辑模式
+ title.value = row.teacherName || ''
+ url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${row.teacherNo}&type=4`
+ fileList.value = []
+ Object.assign(dataForm, {
+ honor: row.honor || '',
+ honorCompany: row.honorCompany || '',
+ year: row.year || null,
+ materialA: row.materialA || '',
+ attachment: row.attachment || '',
+ state: row.state || '',
+ teacherNo: row.teacherNo || '',
+ teacherName: row.teacherName || '',
+ id: row.id || ''
+ })
+ showForm.value = true
+ await initDicData()
+ dialogVisible.value = true
+ } else {
+ // 新增模式:先检查是否锁定,再获取当前用户的 teacherNo
+ try {
+ const lockResponse = await checkLocked('remix')
+ if (lockResponse.data) {
+ // 已锁定
+ message.warning("新增功能已锁定,暂不允许操作")
+ return
+ }
+
+ // 未锁定,继续获取 teacherNo
+ const response = await getMyTeacherNo()
+ const teacherNo = response.data
+ title.value = '新增综合表彰'
+ url.value = `/professional/file/teacherAboutInfoUpload?teacherNo=${teacherNo}&type=4`
+ Object.assign(dataForm, {
+ honor: '',
+ honorCompany: '',
+ year: null,
+ materialA: '',
+ attachment: '',
+ state: '',
+ teacherNo: teacherNo,
+ teacherName: '',
+ id: ''
+ })
+ fileList.value = []
+ // 先加载字典数据,再显示表单
+ await initDicData()
+ showForm.value = true
+ dialogVisible.value = true
+ } catch (error) {
+ message.error('获取教师编号失败')
+ return
+ }
+ }
}
// 提交表单
const dialogSubmit = async () => {
if (!formRef.value) return
+ // 验证证明材料是否上传(与 MultiDialog 保持一致)
+ if (!dataForm.attachment && !dataForm.materialA) {
+ message.warning("请上传证明材料")
+ return
+ }
+
await formRef.value.validate(async (valid: boolean) => {
if (valid) {
submitLoading.value = true
try {
- dataForm.state = '0'
- await putObj(dataForm)
- message.success("操作成功")
- visible.value = false
+ if (dataForm.id) {
+ // 编辑:使用 putObj 接口(管理员编辑)
+ dataForm.state = '0'
+ await putObj(dataForm)
+ message.success("修改成功")
+ } else {
+ // 新增:使用 updateOtherInfo 接口(与 MultiDialog 保持一致)
+ const submitData: any = {
+ type: 4, // 综合表彰类型
+ teacherNo: dataForm.teacherNo,
+ honor: dataForm.honor,
+ honorCompany: dataForm.honorCompany,
+ year: dataForm.year,
+ mateA: dataForm.attachment || dataForm.materialA // 使用 mateA 字段(与 MultiDialog 一致)
+ }
+
+ const res = await updateOtherInfo(submitData)
+ if (res.data == '-1') {
+ message.warning("当前不允许提交")
+ } else {
+ message.success("提交成功")
+ }
+ }
+ dialogVisible.value = false
emit('refreshData')
} catch (error: any) {
message.error(error?.msg || '操作失败')
diff --git a/src/views/professional/professionalteacherhonor/index.vue b/src/views/professional/professionalteacherhonor/index.vue
index 285c1bf..912bd73 100755
--- a/src/views/professional/professionalteacherhonor/index.vue
+++ b/src/views/professional/professionalteacherhonor/index.vue
@@ -14,7 +14,6 @@
@@ -39,7 +37,6 @@
@@ -65,10 +62,11 @@
v-if="permissions.professional_professionalteacherhonor_add">新 增
导出
+ :loading="exportLoading">导出信息
@@ -86,18 +84,15 @@