This commit is contained in:
guochunsi
2026-01-06 16:39:57 +08:00
parent 7f91263205
commit 9e583c3c30
32 changed files with 2830 additions and 481 deletions

View File

@@ -8,8 +8,8 @@
</template>
<script setup lang="ts">
import { ref } from 'vue'
import authImg from '@/components/tools/auth-img.vue'
import { ref, defineAsyncComponent } from 'vue'
const authImg = defineAsyncComponent(() => import('/@/components/tools/auth-img.vue'))
// Props
defineProps<{

View File

@@ -25,9 +25,11 @@
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="teacherNo" label="工号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="teacherName" label="姓名" min-width="120" align="center" show-overflow-tooltip />
<el-table-column label="姓名/工号" min-width="150" align="center">
<template #default="scope">
<TeacherNameNo :name="scope.row.teacherName" :no="scope.row.teacherNo" />
</template>
</el-table-column>
<el-table-column prop="year" label="年份" width="100" align="center" />
@@ -174,11 +176,14 @@
<script setup lang="ts">
import { ref, reactive, computed } from 'vue'
import { defineAsyncComponent } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage, useMessageBox } from '/@/hooks/message'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/professionalyearbounds'
import { fetchList, addObj, putObj, delObj } from '/@/api/professional/salaries/professionalyearbounds'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
// 使用 Pinia store
const userInfoStore = useUserInfo()

View File

@@ -92,7 +92,7 @@ import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage, useMessageBox } from '/@/hooks/message'
import { fetchList, delObj } from '/@/api/professional/salaryexportrecord'
import { fetchList, delObj } from '/@/api/professional/salaries/salaryexportrecord'
// 使用 Pinia store
const userInfoStore = useUserInfo()

View File

@@ -67,9 +67,11 @@
>
<el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column prop="realName" label="姓名" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="teacherNo" label="工号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column label="姓名/工号" min-width="150" align="center">
<template #default="scope">
<TeacherNameNo :name="scope.row.realName" :no="scope.row.teacherNo" />
</template>
</el-table-column>
<el-table-column prop="startDate" label="开始日期" width="120" align="center" />
@@ -104,7 +106,7 @@ import { ref, reactive, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { fetchList } from '/@/api/professional/teacherawardtax'
import { fetchList } from '/@/api/professional/salaries/teacherawardtax'
import ImportAwardTax from './importAwardTax.vue'
// 使用 Pinia store

View File

@@ -128,9 +128,11 @@
<el-table-column prop="numId" label="编号" width="100" align="center" show-overflow-tooltip />
<el-table-column prop="teacherNo" label="工号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="realName" label="姓名" min-width="120" align="center" show-overflow-tooltip />
<el-table-column label="姓名/工号" min-width="150" align="center">
<template #default="scope">
<TeacherNameNo :name="scope.row.realName" :no="scope.row.teacherNo" />
</template>
</el-table-column>
<el-table-column prop="postSalary" label="岗位工资" min-width="120" align="center" show-overflow-tooltip />
@@ -181,17 +183,20 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { defineAsyncComponent } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage, useMessageBox } from '/@/hooks/message'
import { fetchList, delBatch, setCanSearch } from '/@/api/professional/teacherpayslip'
import { checkAuth } from '/@/api/professional/teachersalary'
import { fetchList, delBatch, setCanSearch } from '/@/api/professional/salaries/teacherpayslip'
import { checkAuth } from '/@/api/professional/salaries/teachersalary'
import { getStationLevelList } from '/@/api/professional/professionalstationlevelconfig'
import SalaryInfo from './salaryInfo.vue'
import ImportBaseSalary from './importBaseSalary.vue'
import ExportBaseSalary from './exportBaseSalary.vue'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)

View File

@@ -206,8 +206,8 @@
<script setup lang="ts">
import { ref, reactive, nextTick } from 'vue'
import { queryUserInfo, queryExtendSalaryInfo } from '/@/api/professional/teacherpayslip'
import { checkAuth } from '/@/api/professional/teachersalary'
import { queryUserInfo, queryExtendSalaryInfo } from '/@/api/professional/salaries/teacherpayslip'
import { checkAuth } from '/@/api/professional/salaries/teachersalary'
// 对话框显示状态
const visible = ref(false)

View File

@@ -140,9 +140,11 @@
<el-table-column prop="numId" label="编号" width="100" align="center" show-overflow-tooltip />
<el-table-column prop="teacherNo" label="工号" min-width="120" align="center" show-overflow-tooltip />
<el-table-column prop="realName" label="姓名" min-width="120" align="center" show-overflow-tooltip />
<el-table-column label="姓名/工号" min-width="150" align="center">
<template #default="scope">
<TeacherNameNo :name="scope.row.realName" :no="scope.row.teacherNo" />
</template>
</el-table-column>
<el-table-column prop="postSalary" label="岗位工资" min-width="120" align="center" show-overflow-tooltip />
@@ -194,14 +196,17 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { defineAsyncComponent } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { BasicTableProps, useTable } from '/@/hooks/table'
import { useMessage, useMessageBox } from '/@/hooks/message'
import { fetchList, delBatch, setCanSearch, checkAuth } from '/@/api/professional/teachersalary'
import { fetchList, delBatch, setCanSearch, checkAuth } from '/@/api/professional/salaries/teachersalary'
import { getStationLevelList } from '/@/api/professional/professionalstationlevelconfig'
import SalaryInfo from './salaryInfo.vue'
import ImportBaseSalary from './importBaseSalary.vue'
const TeacherNameNo = defineAsyncComponent(() => import('/@/components/TeacherNameNo/index.vue'))
import ExportBaseSalary from './exportBaseSalary.vue'
import ImportTaxSalary from './importTaxSalary.vue'

View File

@@ -204,7 +204,7 @@
<script setup lang="ts">
import { ref, reactive, nextTick } from 'vue'
import { queryUserInfo, queryExtendSalaryInfo, checkAuth } from '/@/api/professional/teachersalary'
import { queryUserInfo, queryExtendSalaryInfo, checkAuth } from '/@/api/professional/salaries/teachersalary'
// 对话框显示状态
const visible = ref(false)

View File

@@ -0,0 +1,91 @@
<template>
<el-dropdown
v-if="hasVisibleItems"
trigger="click"
@command="handleCommand"
:style="dropdownStyle"
>
<el-button
:type="buttonType"
link
:style="buttonStyle"
>
<slot name="button">
{{ buttonText }}
<el-icon v-if="buttonIcon" class="el-icon--right" :style="iconStyle">
<component :is="buttonIcon" v-if="buttonIcon" />
</el-icon>
</slot>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
v-for="item in visibleItems"
:key="item.command"
:command="item.command"
>
<el-icon v-if="item.icon">
<component :is="item.icon" />
</el-icon>
<span :style="item.icon ? { marginLeft: '8px' } : {}">{{ item.label }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
<script setup lang="ts">
import { computed } from 'vue'
import { Operation } from '@element-plus/icons-vue'
interface MenuItem {
command: string
label: string
icon?: any
visible?: boolean | (() => boolean)
}
interface Props {
items: MenuItem[]
buttonText?: string
buttonIcon?: any
buttonType?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text'
buttonStyle?: string | Record<string, any>
dropdownStyle?: string | Record<string, any>
iconStyle?: string | Record<string, any>
}
const props = withDefaults(defineProps<Props>(), {
buttonText: '更多',
buttonIcon: Operation,
buttonType: 'primary',
buttonStyle: () => ({ whiteSpace: 'nowrap' }),
dropdownStyle: () => ({ marginLeft: '12px' }),
iconStyle: () => ({ marginLeft: '4px' })
})
const emit = defineEmits<{
command: [command: string]
}>()
// 计算可见的菜单项
const visibleItems = computed(() => {
return props.items.filter(item => {
if (item.visible === undefined) return true
if (typeof item.visible === 'boolean') return item.visible
if (typeof item.visible === 'function') return item.visible()
return false
})
})
// 是否有可见的菜单项
const hasVisibleItems = computed(() => {
return visibleItems.value.length > 0
})
// 处理命令
const handleCommand = (command: string) => {
emit('command', command)
}
</script>

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<template>
<el-dialog v-model="educationDialogFromVisible" width="80%" :title="waitShenheForm.title" append-to-body>
<el-dialog v-model="educationDialogFromVisible" width="600" :title="waitShenheForm.title" append-to-body>
<!--2.1 教师资格证-->
<el-form v-if="waitShenheForm.a" ref="teacherCertificateFormRef" :model="waitShenheForm.form" :rules="teacherCertificateRules" label-width="120px">
@@ -43,8 +43,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(0)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(0)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.2 学历-->
@@ -148,8 +150,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(1)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(1)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.3 职称-->
@@ -227,8 +231,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(2)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(2)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.4 职业-->
@@ -295,8 +301,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(3)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(3)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.5 综合表彰-->
@@ -339,8 +347,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(4)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(4)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.6 人员调动-->
@@ -404,8 +414,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(5)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(5)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
<!--2.7 党员调动-->
@@ -460,8 +472,10 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dialogSubmit(6)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
<div style="text-align: right; width: 100%;">
<el-button type="primary" @click="dialogSubmit(6)">提交</el-button>
<el-button @click="educationDialogFromVisible = false">取消</el-button>
</div>
</el-form-item>
</el-form>
</el-dialog>