mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 13:56:45 +08:00
暂时提交
This commit is contained in:
@@ -61,3 +61,7 @@ export const getAffiliationCode = () => http.get('/admin/affiliation/getAffiliat
|
||||
export const getAffiliationById = (id) => http.get(`/admin/affiliation/queryById?id=${id}`)
|
||||
//删除培训发生组织
|
||||
export const affiliationDelById = (id)=>http.post(`/admin/affiliation/delById?id=${id}`)
|
||||
//讲师费统计详情
|
||||
export const expenseSummaryById = (obj) => http.get( `/admin/expenseSummary/queryById?id=${obj.id}&name=${obj.name}&trainOrgId=${obj.trainOrgId}`)
|
||||
//查看月度讲师费详情
|
||||
export const queryDetailId = (obj) => http.get(`/admin/expenseSummary/queryDetailId?summaryId=${obj.summaryId}&name=${obj.name}`)
|
||||
307
src/components/project/ConfirmLecturer.vue
Normal file
307
src/components/project/ConfirmLecturer.vue
Normal file
@@ -0,0 +1,307 @@
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="visible"
|
||||
class="drawerStyle RouterFaceStu"
|
||||
placement="right"
|
||||
width="1200"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ name }}</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="@/assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="head">
|
||||
<div class="list" :class="item.id==indexList?'active':''" @click="clickItem(item,index)" v-for="(item,index) in forData">
|
||||
<div class="left">
|
||||
<div>培训发生组织</div>
|
||||
<div class="text">汇总金额</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div>{{item.name}}</div>
|
||||
<div class="text">{{item.name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="top">
|
||||
<div class="item">
|
||||
<a-input style="border-radius: 8px;width:240px;" v-model:value="search" placeholder="请输入工号/讲师名称进行搜索" allowClear />
|
||||
</div>
|
||||
<div class="item">
|
||||
<a-range-picker style="border-radius: 8px;width:360px;" v-model:value="value1" />
|
||||
</div>
|
||||
<div class="item">
|
||||
<a-button type="primary" style="margin-right:20px;border-radius:8px">搜索</a-button>
|
||||
<a-button type="primary" style="border-radius:8px">重置</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data-source="tableData"
|
||||
:pagination="false"
|
||||
:scroll="{ x: 'max-content' }"
|
||||
>
|
||||
<template #action="{ text, record }">
|
||||
<div class="action">
|
||||
<div class="btn">移除</div>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
import {computed, defineEmits,defineProps, ref, watch} from "vue";
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
name:{
|
||||
type: String,
|
||||
default: ""
|
||||
}
|
||||
});
|
||||
const forData = ref([
|
||||
{name:'a',id:1},
|
||||
{name:'b',id:2},
|
||||
{name:'c',id:3},
|
||||
{name:'c',id:3},
|
||||
{name:'c',id:3},
|
||||
{name:'c',id:3},
|
||||
])
|
||||
const indexList = ref(1)
|
||||
const clickItem = (item,i) => {
|
||||
console.log(item,i,'iiiii')
|
||||
indexList.value = i+1
|
||||
}
|
||||
const emit = defineEmits({})
|
||||
const columns = [
|
||||
{
|
||||
title: '讲师名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '讲师工号',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '所属组织',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
|
||||
{
|
||||
title: '讲师体系',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '讲师等级',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '发薪地',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
|
||||
{
|
||||
title: '课程类型',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '课程名称',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程日期',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程时长',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '参训人数',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '评分',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '课酬基准',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '计划费用',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '应发费用',
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
scopedSlots: { customRender: "action" },
|
||||
},
|
||||
]
|
||||
const closeDrawer = () => emit("update:visible", false);
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
|
||||
.RouterFaceStu {
|
||||
.drawerMain {
|
||||
min-width: 600px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.header {
|
||||
height: 73px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
// background-color: red;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
// margin-left: 24px;
|
||||
}
|
||||
}
|
||||
.content{
|
||||
margin: 0 20px;
|
||||
.head{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
overflow-x: auto;
|
||||
.list{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: #666;
|
||||
min-width: 260px;
|
||||
padding: 20px 10px;
|
||||
color: #ffffff;
|
||||
border-radius:6px;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 20px;
|
||||
.left{
|
||||
width: 35%;
|
||||
text-align:right;
|
||||
margin-right:30px;
|
||||
.text{
|
||||
margin-top:20px;
|
||||
}
|
||||
}
|
||||
.right{
|
||||
.text{
|
||||
margin-top:20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.active{
|
||||
background-color: #f5f5f5;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
.box{
|
||||
.top{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 10px;
|
||||
.item{
|
||||
margin-right: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btnn {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||
background-color: #fff;
|
||||
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
color: #4ea6ff;
|
||||
background-color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn2 {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: #4ea6ff;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
margin-left: 15px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -144,7 +144,7 @@
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="讲师名称" name="name">
|
||||
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName" v-model:orgId="formParam.orgId" v-model:id="formParam.userid"
|
||||
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName" v-model:orgId="formParam.orgId" v-model:id="formParam.id"
|
||||
v-model:system="tSystemNames" v-model:level="formParam.tLevelId"></SearchTeacher>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
@@ -432,7 +432,7 @@
|
||||
</a-drawer>
|
||||
<ImportWork v-model:showWork="showWork" :url="'/admin/export/exportTeacherExpense'" :title="title"></ImportWork>
|
||||
</div>
|
||||
|
||||
<ConfirmLecturer v-model:visible="visibleConfirm" :name="'确认讲师费'" />
|
||||
</template>
|
||||
<script lang="jsx">
|
||||
import { reactive, toRefs, ref ,watch} from "vue";
|
||||
@@ -452,6 +452,7 @@
|
||||
// lecturerFeeManagement
|
||||
// import {getProjSt} from "../../api/indexProjStu";
|
||||
// import AddTeacher from "../../components/drawers/project/AddTeacher"
|
||||
import ConfirmLecturer from "@/components/project/ConfirmLecturer"
|
||||
export default {
|
||||
name: "LecturerFee",
|
||||
components: {
|
||||
@@ -462,10 +463,12 @@
|
||||
FolderAddOutlined,//图标--新增
|
||||
SearchTeacher,
|
||||
ImportWork,
|
||||
ConfirmLecturer,
|
||||
},
|
||||
setup() {
|
||||
const formRef = ref();
|
||||
const state = reactive({
|
||||
visibleConfirm: false,
|
||||
title:'导入讲师费记录',
|
||||
allFeedialog:false,
|
||||
tableLoadings:false,
|
||||
@@ -878,21 +881,7 @@ console.log( "讲师体系id" +val);
|
||||
}
|
||||
//一键确认讲师费
|
||||
const handleTeacher =()=>{
|
||||
let array = []
|
||||
tableData.value.map((item)=>{
|
||||
let arr = {
|
||||
id:item.id
|
||||
}
|
||||
array.push(arr)
|
||||
return array
|
||||
})
|
||||
confirm(array)
|
||||
.then((res) => {
|
||||
if(res.data.code == 200 ){
|
||||
message.success("一键确认讲师费成功");
|
||||
getTableDate();
|
||||
}
|
||||
})
|
||||
state.visibleConfirm = true
|
||||
}
|
||||
async function validateField(name) {
|
||||
return new Promise((resolve) => {
|
||||
|
||||
@@ -234,16 +234,16 @@ export default {
|
||||
const columns = ref([
|
||||
{
|
||||
title: '编号 ',
|
||||
dataIndex: 'teacherId',
|
||||
key: 'billNo',
|
||||
dataIndex: 'trainOrgId',
|
||||
key: 'trainOrgId',
|
||||
elipsis: true,
|
||||
align: "center",
|
||||
width:200,
|
||||
},
|
||||
{
|
||||
title: '资源归属 ',
|
||||
dataIndex: 'resbgTxt',
|
||||
key: 'resbgTxt',
|
||||
dataIndex: 'trainOrgName',
|
||||
key: 'trainOrgName',
|
||||
elipsis: true,
|
||||
align: "center",
|
||||
width: 400,
|
||||
@@ -266,8 +266,8 @@ export default {
|
||||
},
|
||||
{
|
||||
title: '汇总金额 ',
|
||||
dataIndex: 'totalFee',
|
||||
key: 'totalFee',
|
||||
dataIndex: 'summaryTotal',
|
||||
key: 'summaryTotal',
|
||||
elipsis: true,
|
||||
align: "center",
|
||||
width: 200,
|
||||
|
||||
@@ -135,6 +135,7 @@ import ProjectManager from "@/components/project/ProjectManagerNew";
|
||||
import {getTrainOrg} from "../../api/lecturerFeeManagement";
|
||||
import { queryTeacherFeeTotalList, queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo ,getPreviousTeacherfee} from "../../api/lecturerFeeStatistics";
|
||||
import {CostDetails} from "../lecturer/CostDetails.vue"
|
||||
import * as api from '@/api/Lecturer'
|
||||
export default {
|
||||
name: "MonthlyStatistics",
|
||||
components: {
|
||||
@@ -167,6 +168,9 @@ export default {
|
||||
payrollPlaceId: null,
|
||||
departId: null,
|
||||
summaryDate:null,
|
||||
id: '5',
|
||||
name: '李玉冰',
|
||||
trainOrgId: '1820781519658237968',
|
||||
},
|
||||
teacherNo:null,
|
||||
drawer: {
|
||||
@@ -304,9 +308,9 @@ export default {
|
||||
// List接口数据
|
||||
const getTableDate = (obj) => {
|
||||
state.tableLoading = true
|
||||
state.searchParam.summaryDate= state.id
|
||||
queryTeacherFeeMonthly(state.searchParam)
|
||||
api.expenseSummaryById(state.searchParam)
|
||||
.then((res) => {
|
||||
console.log(res,'resssss')
|
||||
tableData.value = res.data.data.records
|
||||
state.tableDataTotal = Number(res.data.data.total);
|
||||
state.tableLoading = false
|
||||
|
||||
Reference in New Issue
Block a user