Files
fe-manage/src/views/lecturer/LecturerFee.vue
2024-11-08 17:21:00 +08:00

1789 lines
58 KiB
Vue
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 >
<!-- 搜索框及按钮 -->
<div class="filter" >
<a-form layout="inline" style="min-width: 1380px;">
<a-form-item class="select">
<!-- v-model:value="searchParam.name" -->
<!-- <a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
</a-input>
--> <div style="width: 276px; height: 40px; border-radius: 8px" >
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch
v-on:keydown.enter="enterPressHadlerSearch">
</a-input>
</div>
</a-form-item>
<a-form-item class="select">
<a-input v-model:value="searchParam.orgId" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入培训发生组织进行搜索" allowClear showSearch
v-on:keydown.enter="enterPressHadlerSearch">
</a-input>
</a-form-item>
<a-form-item class="select ">
<div class="select addTimeBox">
<div class="addTime" >创建时间</div>
<a-range-picker
v-model:value="searchdate"
style="width: 420px"
format="YYYY-MM-DD"
valueFormat="YYYY-MM-DD"
separator="至"
:placeholder="[' 开始时间', ' 结束时间']"
v-on:keydown.enter="enterPressHadlerSearch"
/>
</div>
</a-form-item>
<div style="display: flex; margin-bottom: 20px">
<a-button @click="searchSubmit()" type="primary" class="resetbtn">查询 </a-button>
<!-- <div class="btn btn1" @click="searchReset" style="background:rgba(64, 158, 255, 0);" > -->
<!-- <div class="search"></div> -->
<a-button class="resetbtn " @click="searchReset">重置</a-button>
<!-- 更多筛选-->
<div v-if="moreid == 1">
<a-button @click="handlemoreid()" class="moreidbtn" type="text"> 展开
<RightOutlined />
</a-button>
</div>
<div v-if="moreid == 2">
<a-button @click="handlemoreid()" class="moreidbtn"> 返回
<UpOutlined />
</a-button>
</div>
</div>
<div style="width:100%"></div>
<!-- <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px ;margin-bottom:20px" v-model:value="searchParam.courseType" placeholder="请选择费用类型" allowClear
:options="courseTypeList">
</a-select>
</a-form-item> -->
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.type" placeholder="请选择课程类型" allowClear
:options="OnTheJobStatusList"
v-on:keydown.enter="enterPressHadlerSearch">
</a-select>
</a-form-item>
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.status" placeholder="请选择状态" allowClear
:options="AuthenticationStatusList"
v-on:keydown.enter="enterPressHadlerSearch">
</a-select>
</a-form-item>
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 235px ;margin-bottom:20px" placeholder="请选择讲师体系" v-model:value="searchParam.tsystemId" allowClear
:options="lecturerSystemList" @change="changetlevel"
v-on:keydown.enter="enterPressHadlerSearch">
</a-select>
</a-form-item>
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.levelId" placeholder="请选择讲师级别" allowClear :disabled="getLevelList.length!==0 ? false:true"
:options="getLevelList"
v-on:keydown.enter="enterPressHadlerSearch">
</a-select>
</a-form-item>
</a-form>
<div style="width: 100%;"></div>
<div style="display: flex; margin-bottom: 20px">
<a-button @click="addTeacher()" type="primary" class="langbtn">
<FolderAddOutlined /> 添加费用
</a-button>
<!-- <div style="margin-left: 20px ;">
<a-button @click="addTeacher()" class="langbtn">
<UploadOutlined /> 一键生成讲师费
</a-button>
</div> -->
<a-button class="resetbtn" @click="handleImport()" >
<DownloadOutlined /> 导入
</a-button>
<a-button @click="handleExport()" class="resetbtn">
<UploadOutlined /> 导出
</a-button>
<a-button @click="handleTeacher()" type="primary" class="langbtn">
一键确认讲师费
</a-button>
<a-button @click="allFee()" type="primary" class="langbtn">
批量确认讲师费
</a-button>
<!-- <div style="line-height: 40px;" >当前页面汇总金额<span style="line-height: 40px; font-size: 24px; color: rgb(207, 34, 34) ;font-weight: 600;">1,230,490</span> 当前总汇总金额<span style="line-height: 40px; font-size: 24px; color: rgb(207, 34, 34) ;font-weight: 600;">9,230,490</span></div> -->
</div>
<!-- 表格 -->
<div style="padding: 10px 0">
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="columns"
:data-source="tableData" :scroll="{ x: 1500 }" :loading="tableLoading" @expand="expandTable" :pagination="false">
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'operation'">
<a-space >
<a-button type="link" @click="() => handleLook(record, String(record.courseform))">查看</a-button>
<a-button type="link" :disabled="record.createFrom==1 ?false :true" @click="() => handleModify(record, String(record.courseform))">编辑</a-button>
<!-- <a-button :disabled="record.status==='A20' || record.status==='A30'||record.status==='S20' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">提交</a-button>
<a-button :disabled="record.status==='A10' && record.status!=='A20' || record.status==='A30'||record.status==='S20' ||record.status==='E10' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">撤回</a-button> -->
<!-- <a-button type="link" @click="() => deleteModal(record, String(record.courseform))">删除</a-button> -->
</a-space>
</template>
<template v-if="column.key === 'trainOrg'">
<a-space style="display:flex ;justify-content: space-around; ">
<a-popover>
<template #content>
<p>{{ record.trainOrg }}</p>
</template>
<span>{{ record.trainOrg }}</span>
</a-popover>
</a-space>
</template>
</template>
</a-table>
</div>
</div>
<div class="tableBox ">
<div style="float: right;">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="true"
:showQuickJumper="false"
:hideOnSinglePage="true"
:pageSize="searchParam.pageSize"
:current="searchParam.pageNo"
:total="tableDataTotal"
class="pagination"
@change="changePagination"
/>
</div>
</div>
<!-- 弹窗组件 -->
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true" dropdown-style="drawaer"
width="60%" :title="teacherdialogtitle">
<a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef" >
<!-- 讲师姓名 name 讲师工号 userNo-->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="讲师名称" name="name">
<SearchTeacher v-model:id="formParam.teacherId" v-model:value="formParam.name" v-model:orgId="formParam.orgId" v-model:lable="formParam.orgName" v-model:user="formParam.userNo"
v-model:system="tSystemNames" v-model:payrollPlaceCode="formParam.payrollPlaceId"
v-model:payrollPlaceName="formParam.payrollPlace" v-model:level="formParam.tlevelId" ></SearchTeacher>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="讲师工号" name="userNo">
<a-input class="draitem" v-model:value="formParam.userNo" disabled
placeholder="请输入讲师工号" allowClear showSearch>
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 讲师组织 departId 讲师体系 systemId -->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="讲师组织" name="orgName">
<a-popover>
<template #content>
{{ formParam.orgName }}.
</template>
<a-input disabled v-model:value="formParam.orgName" class="draitem"
placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch>
</a-input>
</a-popover>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="讲师体系" name="tsystemName">
<!-- <a-select class="draitem" v-model:value="formParam.tsystemName" placeholder="请选择讲师体系" allowClear
@change="changetlevel" .:options="LecturerSystemList">
</a-select> -->
<a-input disabled v-model:value="tSystemNames.systemName" class="draitem"
placeholder="自动带出讲师的体系" allowClear showSearch>
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 讲师级别 levelId 讲师发薪地 payrollPlaceName-->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="讲师级别" name="tlevelId">
<a-select class="draitem" v-model:value="formParam.tlevelId" placeholder="请选择讲师级别" allowClear
:options="tSystemNames.levelVoList" @change="handleformlevel">
</a-select>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="讲师发薪地" name="payrollPlace ">
<a-input disabled v-model:value="formParam.payrollPlace" class="draitem"
placeholder="自动带出讲师发薪地" allowClear showSearch >
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 费用类型 课程名称 courseName-->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="费用类型" name="courseType">
<a-select class="draitem" v-model:value="formParam.courseType" placeholder="请选择费用类型"
:options="courseTypeList">
</a-select>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="课程名称" name="courseName ">
<!-- <a-radio-group v-model:value="formParam.courseName">
<a-radio :value="0">面授课</a-radio>
<a-radio :value="1">在线课</a-radio>
</a-radio-group> -->
<!-- <a-select class="draitem" v-model:value="formParam.courseName" placeholder="请选择输入或选择面授课" style="width:63%" allowClear
:options="getLevelList">
</a-select> -->
<a-input v-model:value="formParam.courseName" placeholder="请输入面授课名称" class="draitem">
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 授课日期 teachingDate 授课时长 teachingTime -->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="授课/课程日期 :" name="teachingDate">
<a-date-picker class="draitem" v-model:value="teachingDate" style="width:100%" format="YYYY-MM-DD"
placeholder="请选择课程日期" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="授课时长" name="teachingTime">
<a-input v-model:value="formParam.teachingTime" style="width:80%; height: 40px; border-radius: 8px; "
@blur="clearNonNumber" placeholder="0" allowClear showSearch suffix="分钟">
</a-input>
<span style="margin-left: 5px ;" v-if="formParam.teachingTime != null">{{
(formParam.teachingTime / 60).toFixed(2) }}小时</span>
<span style="margin-left: 5px ;" v-if="formParam.teachingTime == null">0.00小时</span>
</a-form-item>
</a-col>
</a-row>
<!-- 参训人数 studys 评分 score -->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="参训人数" name="studys">
<a-input v-model:value="formParam.studys" class="draitem" @blur="clearstudysNumber"
placeholder="0 " allowClear showSearch >
</a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="评分" name="score">
<a-input class="draitem" v-model:value="formParam.score" placeholder="0"
@blur="clearscoreNumber" allowClear
showSearch >
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 课酬基准 计划费用 expense-->
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="课酬基准" name="levelPay">
<a-input v-model:value="formParam.levelPay" placeholder="可手动更改"
@blur="clearlevelPayNumber"
allowClear showSearch class="draitem">
</a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="计划费用" name="expense">
<a-input class="draitem" v-model:value="formParam.expense" placeholder="" allowClear disabled
showSearch>
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 应发费用 -->
<a-row :gutter="16">
<a-col :span="24">
<a-form-item label="应发费用" name="payableExpense">
<a-input v-model:value="formParam.payableExpense" class="draitem"
placeholder="0 " allowClear showSearch>
</a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 备注 remark -->
<a-row :gutter="16">
<a-col :span="24">
<a-form-item label="备注">
<a-textarea v-model:value="formParam.remark" showCount :maxlength="200"
style="width: 100%; height: 100px; border-radius: 8px ;margin-bottom:50px" placeholder="请输入" />
</a-form-item>
</a-col>
</a-row>
</a-form>
<div :style="{
position: 'absolute',
right: 0,
bottom: 0,
width: '100%',
borderTop: '1px solid #e9e9e9',
padding: '10px 16px',
background: '#fff',
textAlign: 'right',
zIndex: 1,
}">
<a-button class="drabtn" @click="cancelTeacherDialog">取消</a-button>
<a-button class="drabtn" type="primary" @click="createTeacherDialog" :loading="buttonLoading">保存
</a-button>
</div>
</a-drawer>
<!-- 修改状态功能弹窗 -->
<div>
<a-modal v-model:visible="editTeacher" :footer="null" :closable="close" wrapClassName="canclestu1"
centered="true">
<div class="delete">
<div class="del_header"></div>
<div class="del_main">
<div class="header">
<div class="icon1"></div>
<span>提示</span>
</div>
<div class="body">
<span v-if="handleOperate1== 'A10' ||handleOperate1== 'E10' ">您确定要提交此信息吗</span>
<span v-if="handleOperate1== 'A20'">您确定要撤回此信息吗</span>
</div>
<div class="del_btnbox">
<div class="del_btn btn2" @click="canceleditTeacherDialog" style="margin-right: 32px">
<div class="btnText">取消</div>
</div>
<div class="del_btn btn2" @click="closehandleOperate">
<div class="btnText">确定</div>
</div>
</div>
</div>
</div>
</a-modal>
</div>
<!-- <div> <Upload/> </div> -->
<a-drawer v-model:visible="teachingdialog" placement="right"
@closa="cancelTeachingDialog" :maskClosable="true" width="60%" title="查看讲师费用">
<span class="line"></span>
<span>讲师费用详情</span>
<a-descriptions style="padding-bottom: 35px;" bordered :column="2" :contentStyle="rowCenter" :labelStyle="rowCenter">
<a-descriptions-item label="讲师名称">{{formParam.name}}</a-descriptions-item>
<a-descriptions-item label="讲师工号">{{formParam.userNo}}</a-descriptions-item>
<a-descriptions-item label="讲师组织" :span="2">{{formParam.orgName}}</a-descriptions-item>
<a-descriptions-item label="讲师体系">{{formParam.tsystemName}}</a-descriptions-item>
<a-descriptions-item label="讲师级别">{{formParam.tlevelName }}</a-descriptions-item>
<a-descriptions-item label="发薪地">{{formParam.payrollPlace}}</a-descriptions-item>
<a-descriptions-item label="费用类型">"费用类型(未命名)"</a-descriptions-item>
<a-descriptions-item label="课程类型">{{formParam.courseType==1?'项目开课' :formParam.courseType==2 ?'路径开课':formParam.courseType==3 ?'面授开课':''}}</a-descriptions-item>
<a-descriptions-item label="课程名称">{{formParam.courseName}}</a-descriptions-item>
<a-descriptions-item label="授课时长 ">{{formParam.teachingDate}}</a-descriptions-item>
<a-descriptions-item label="授课/课程日期 ">{{formParam.teachingDate}}</a-descriptions-item>
<a-descriptions-item label="参训人数 ">{{formParam.studys}}</a-descriptions-item>
<a-descriptions-item label="评分 ">{{formParam.score}}</a-descriptions-item>
<a-descriptions-item label="课酬基准 ">{{formParam.levelPay}}</a-descriptions-item>
<a-descriptions-item label="计划费用 ">{{formParam.expense}}</a-descriptions-item>
<a-descriptions-item label="应发费用 ">{{formParam.payableExpense}}</a-descriptions-item>
<a-descriptions-item label="状态">{{formParam.status=="0"?'待确认' :formParam.status=="1"?'待提交':formParam.status== "2" ?'审核中':formParam.status== "3"?'审核通过':''}}</a-descriptions-item>
<a-descriptions-item label="备注 ">{{formParam.remark}}</a-descriptions-item>
</a-descriptions>
<span class="line"></span>
<div :style="{
position: 'absolute',
right: 0,
bottom: 0,
width: '100%',
borderTop: '1px solid #e9e9e9',
padding: '10px 16px',
background: '#fff',
textAlign: 'right',
zIndex: 1,
}">
<a-button class="drabtn" @click="cancelTeachingDialog">取消</a-button>
<a-button class="drabtn" type="primary" @click="cancelTeachingDialog" :loading="buttonLoading">返回
</a-button>
</div>
</a-drawer>
<ImportWork v-model:showWork="showWork" :url="'/admin/export/importTeacherExpense'" :fileName="uploadFile" :title="title"></ImportWork>
</div>
<!-- 一键确认讲师费 -->
<ConfirmLecturer :ids="selectsIds" v-model:visible="visibleConfirm" :name="'确认讲师费'" />
<!-- 批量确认讲师费 -->
<BatchLecturer @selectedRowKeys="selectedRowKeys" v-model:visible="allFeedialog" :name="'批量审批'" />
</template>
<script lang="jsx">
import { reactive, toRefs, ref ,watch} from "vue";
import { message } from "ant-design-vue";
import dayjs from "dayjs";
import {
RightOutlined,
UpOutlined,
UploadOutlined,
FolderAddOutlined,
DownloadOutlined
} from '@ant-design/icons-vue';
import ImportWork from "../../components/project/ImportWork.vue";
import SearchTeacher from "@/components/project/SearchTeacher";
import {getTeacherFeeList,getTeacherFeeDetail,addTeacherFee ,getListByIds,updateTeacherFee,updateStatusSubmit,approveTeacherFee,getTeacherLevel,deleteInTeacher,confirm} from "../../api/lecturerFeeManagement";
import {getTeacherSystemList, getLevel,getPayRollPlace,fileUp } from "../../api/Lecturer";
// lecturerFeeManagement
// import {getProjSt} from "../../api/indexProjStu";
// import AddTeacher from "../../components/drawers/project/AddTeacher"
import ConfirmLecturer from "@/components/project/ConfirmLecturer"
import BatchLecturer from "@/components/project/BatchLecturer"
export default {
name: "LecturerFee",
components: {
RightOutlined, //图标--展开
UpOutlined,//图标--收起
UploadOutlined,//图标--导出
DownloadOutlined,//图标-导入
FolderAddOutlined,//图标--新增
SearchTeacher,
ImportWork,
ConfirmLecturer,
BatchLecturer,
},
setup() {
const formRef = ref();
const state = reactive({
selectsIds: '',
visibleConfirm: false,
title:'导入讲师费记录',
allFeedialog:false,
tableLoadings:false,
teachingdialog:false,
showWork: false,
vf:true,
moreid:1,
byPid:null,
currentPage1: 1,
pageSize1: 10,
promotionrecordsLoading:false , //晋级记录遮罩层
teacherrecordsLoading:false,// 授课记录遮罩层
tableLoading:false,
tagsshow:"1",
delTeacherId:null, //删除id确认
newStatus:null , //修改状态码确认
id:null, //内部讲师工号确认
lookTeacherId:null, //内部讲师详情id确认
// deleteInTeacherdialog: false, //删除弹窗
editTeacher:false , //修改状态弹窗
handleOperate1:null, //修改状态弹窗内容
teacherdialog1: null,
teacherdialog: false, //控制讲师弹窗
teacherdialogtitle: '',//讲师弹框title内容
pageSizeOptions: ['10', '20', '30', '50'], //下拉选择每页显示多少条
pageSize: 10,
tableDataTotal: -1,//table列表总条数
teachingDate:null,
formParam: {
teachingDate:null ,
teachingTime:null,
name: null,
userNo: null,
payrollPlace: null,
payrollPlaceId: null,
},
searchdate: null, //选择时间
allsearchdate: null, //选择时间
searchParam: {
userNo:null,
name:null,
orgId:null,
tsystemId:null,
levelId:null,
courseType:null,
certStatus:null,
salaryName:null,
payrollPlaceName:null,
status:null,
pageNo: "1",
pageSize: "10",
beginTime: null,
endTime: null,
},
//一键确认
searchall:{
name:null,
beginTime: null,
endTime: null,
pageNo: "1",
pageSize: "10",
},
tSystemNames:{
systemName:null,
systemId: null,
levelVoList: []
},
})
//费用类型
const courseTypeList=ref([
{ value: '0', label: "在线" },
{ value: '1', label: "面授 " },
{ value: '2', label: "授课 " },
{ value: '3', label: "课程开发" },
{ value: '4', label: "作业员如模培训" },
])
//课程类型
const OnTheJobStatusList = ref([
{ value: 1, label: "项目开课" },
{ value: 2, label: "路径开课" },
{ value: 3, label: "面授开课" },
])
//认证状态
const AuthenticationStatusList = ref([
{ value: 0, label: "未认证" },
{ value: 1, label: "已认证" },
])
const lecturerSystemList = ref([
]);
///获取讲师体系列表
const LecturerSystemLista = () => {
let obj ={
pageNo:1,
pageSize:1000,
}
getTeacherSystemList(obj).then((res) => {
if (res.data.code === 200) {
let arr = res.data.data.records;
let array = [];
arr.map((value) => {
let obj = {
value: value.id,
label: value.systemName,
};
array.push(obj);
});
lecturerSystemList.value = array;
}
})
}
const getLevelList = ref([
// { value: 0, label: "未定级" },
])
const changetlevel = (val) => {
console.log( "讲师体系id" +val);
getLevel( {id:val}).then((res) => {
if (res.data.code === 200) {
let arr = res.data.data;
let array = [];
arr.map((value) => {
let obj = {
value: value.levelCode,
label: value.levelName,
};
array.push(obj);
});
getLevelList.value = array;
}
})
}
LecturerSystemLista()
// //获取讲师发薪地列表
// const PlaceOfPayList = ref([
// // { value: 0, label: "发薪地B1" },
// ])
// const PlaceOfPayLista =() => {
// getPayRollPlace().then((res)=>{
// if (res.data.code === 200) {
// let arr = res.data.data;
// let array = [];
// arr.map((value) => {
// let obj = {
// value: value.id,
// label: value.name,
// };
// array.push(obj);
// });
// PlaceOfPayList.value = array;
// }
// console.log("获取发薪地", PlaceOfPayList);
// })
// }
// PlaceOfPayLista()
//状态
const AccountStatusList = ref([
{ value:"0", label: "待确认", },
{ value:"1", label: "待提交", },
{ value:"2", label: "审核中", },
{ value:"3", label: "审核通过", },
])
watch(()=>state.formParam.name,(val)=>{
state.formParam.userNo = val?.split('/')[1]
}
)
//切换筛选
const handlemoreid=()=>{
if(state.moreid==1){
state.moreid=2
}
else if(state.moreid == 2){
state.moreid=1
state.searchParam.certStatus=null
state.searchParam.salaryName=null
state.searchParam.status=null
}
}
const columns = ref([
{
title: '讲师姓名 ',
dataIndex: 'name',
key: 'name',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师工号 ',
dataIndex: 'userNo',
key: 'userNo',
elipsis: true, align: "center",
width: 120,
},
{
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName',
elipsis: true,
align: "center",
width: 200,
},
{
title: '培训发生组织',
dataIndex: 'trainOrg',
key: 'trainOrg',
elipsis: true, align: "center",
width: 120,
},
{
title: '授课时长 ',
dataIndex: 'teachingTime',
key: 'teachingTime',
elipsis: true, align: "center",
width: 120,
},
{
title: '授课时间 ',
dataIndex: 'teachingTime',
key: 'teachingTime',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师体系',
dataIndex: 'systemName',
key: 'systemName',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师级别 ',
dataIndex: 'levelName',
key: 'levelName',
elipsis: true, align: "center",
width: 120,
// customRender: (value, record) => {
// return (
// <div>
// {value.record.grade == 0 || value.record.grade == 1 || value.record.grade == 2 || value.record.grade == 3
// ? {
// 0: "未定级",
// 1: "1级",
// 2: "2级",
// 3: "3级",
// }[value.record.grade + ""] || ""
// : "-"}
// </div>
// )
// }
},
{
title: '发薪地 ',
dataIndex: 'teacherpayrollPlace',
key: 'teacherpayrollPlace',
elipsis: true, align: "center",
width: 120,
},
{
title: '基准课酬 ',
dataIndex: 'teacherlevelPay',
key: 'teacherlevelPay',
elipsis: true, align: "center",
width: 120,
},
{
title: '计划费用 ',
dataIndex: 'expense',
key: 'expense',
elipsis: true, align: "center",
width: 120,
},
{
title: '参训人数 ',
dataIndex: 'studentNum',
key: 'studentNum',
elipsis: true, align: "center",
width: 120,
},
{
title: '评分 ',
dataIndex: 'courseAssess',
key: 'courseAssess',
elipsis: true, align: "center",
width: 120,
},
{
title: '课程类型 ',
dataIndex: ' courseType',
key: ' courseType',
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record. courseType == "1" || value.record. courseType == "2"|| value.record.courseTypeype == "3"
? {
"1": "项目开课",
"2": "路径开课",
"3": "面授开课",
}[value.record. courseType + ""] || ""
: "-"}
</div>
)
}
},
{
title: '状态 ',
dataIndex: 'status',
key: 'status',
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record.status== "0" || value.record.status == "1" ||value.record.status == "2" ||value.record.status == "3"
? {
"0": "待确认",
"1": "待提交",
"2": "审核中",
"3": "审核通过",
}[value.record.status + ""] || ""
: "-"}
</div>
)
}
},
{
title: '讲师组织',
dataIndex: 'trainOrg',
key: 'trainOrg',
elipsis: true, align: "center",
width: 200,
scopedSlots: { customRender: "trainOrg" },
},
{
title: '操作 ',
dataIndex: 'operation',
key: 'operation',
elipsis: true, align: "center",
fixed: "right",
width: 160,
scopedSlots: { customRender: "action" },
},
])
//列表数据
const tableData = ref([
])
// 搜索
const searchSubmit = () => {
getTableDate();
};
//重置
const searchReset = () => {
state.searchdate= null,
state.searchParam = {
endTime:null,
beginTime:null,
userNo:null,
tsystemId:null,
levelId:null,
courseType:null,
certStatus:null,
salaryName:null,
status:null,
pageNo: 1,
pageSize: 10 ,
};
getTableDate();
};
// //修改时间
// function searchTimeChange(time, timeStr) {
// let startTime = timeStr[0]
// let beginTime = timeStr[1] ;
// state.startTime = new Date(startTime).getTime();
// state.beginTime = new Date(beginTime).getTime();
// // state.searchParam.beginTime = new Date(beginTime).getTime() ;
// // state.searchParam.endTime = new Date(endTime).getTime() ;
// state.searchParam.beginTime = state.startTime ? state.startTime : null,
// state.searchParam.endTime = state.beginTime ? state.beginTime : null
// }
// List接口数据
const getTableDate = (obj) => {
state.tableLoading=true
let objA = { ...state.searchParam };
objA.beginTime = state.searchdate ? dayjs(state.searchdate[0]).format("YYYY-MM-DD") : "",
objA.endTime = state.searchdate ? dayjs(state.searchdate[1]).format("YYYY-MM-DD") : "",
getTeacherFeeList(objA)
.then((res) => {
tableData.value = res.data.data.records
state.tableDataTotal = Number(res.data.data.total);
state.tableLoading=false
console.log("获取讲师tableData", tableData);
})
};
getTableDate()
// // 翻页
const changePagination = (page,pageSize) => {
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 添加讲师费
const addTeacher = () => {
cancel()
state.teacherdialog = true;
state.vf = true
state.teacherdialogtitle = '添加讲师费'
}
//修改讲师费信息弹窗
const handleModify = (record) => {
state.teacherdialog = true;
state.teacherdialogtitle = '修改信息'
state.id= record.id
state.vf = false
TeacherSystem()
}
//一键确认讲师费
const handleTeacher =()=>{
state.visibleConfirm = true
}
async function validateField(name) {
return new Promise((resolve) => {
formRef.value.validateFields([name])
.then(() => {
resolve(false);
})
.catch(() => {
resolve(true);
});
});
}
//保存
const createTeacherDialog = async () => {
console.log(state.formParam,'formParam')
state.formParam.expense = String(state.formParam.expense)
state.formParam.teachingDate=state.teachingDate ? dayjs(state.teachingDate).format("YYYY-MM-DD").toString() : ""
state.formParam.tsystemName = state.tSystemNames.systemName
state.formParam.tsystemId = state.tSystemNames.systemId
const formItemNames = Object.keys(rules);
for(let i=0;i<formItemNames.length;i++){
const result = await validateField(formItemNames[i]);
if (result) {
return message.error(rules[formItemNames[i]][0].log)
}
}
state.formParam = {...state.formParam,...state.tSystemNames}
state.formParam.name = state.formParam?.name?.split('/')[0]
if (state.vf == false) {
updateTeacherFee(state.formParam).then(response => {
message.success("修改成功");
state.teacherdialog = false;
cancel()
getTableDate();
});
}
else {
addTeacherFee(state.formParam)
.then((res) => {
message.success("保存成功");
state.teacherdialog = false;
cancel()
getTableDate();
}).catch((err) => {
console.log(err);
});
}
};
//删除弹窗
// const deleteModal = (record) => {
// state.deleteInTeacherdialog = true
// state.delTeacherId = record.id
// };
//修改状态窗口
const handleOperate = (record) => {
state.handleOperate1=null
state.handleOperate1 = record.status
state.editTeacher = true
state.id= record.id
};
// //确认删除
const closeDeleteTeacher=()=>{
//调用删除接口
deleteInTeacher(state.delTeacherId).then((res)=>{
if(res.data.code == 200 ){
// message.success("删除成功");
state.deleteInTeacherdialog = false
getTableDate();
}
})
}
//提交撤回状态
const closehandleOperate= ()=>{
//调用接口
let ids ={
id : state.id
}
console.log(state.handleOperate1)
if ( state.handleOperate1 === 'A10'){
updateStatusSubmit(ids).then((res) => {
message.success("提交成功");
getTableDate();
})
}
else{
approveTeacherFee(ids).then((res) => {
message.success("撤回成功");
getTableDate();
})
}
// else if(state.handleOperate1 === 'A20'){
// approveTeacherFee(ids).then((res) => {
// message.success("撤回成功");
// getTableDate();
// })
// }
state.editTeacher =false
}
//取消按钮 清空输入的数据
const cancelTeacherDialog = () => {
formRef.value.resetFields();
state.teacherdialog = false
cancel()
};
const canceleditTeacherDialog=()=>{
state.editTeacher =false
}
//清空数据
const cancel = () => {
state.formParam ={
name:null,
userNo:null,
orgName:null,
tsystemName:null,
tlevelId:null,
payrollPlace:null,
courseType: null,
courseName:null,
teachingDate:null,
teachingTime:null,
courseType:null,
studys:null,
teacherlevelPay:null,
score:null,
levelPay:null,
payableExpense:null,
expense:null,
remark:null,
}
state.teachingDate=null
state.tSystemNames = {
systemName:null,
levelVoList: []
}
}
//表格内查看数据操作
const handleLook = (record) => {
state.teachingdialog = true;
state.teacherdialogtitle = '查看详情'
state.id= record.id
// alert(record.grade)
TeacherSystem()
// getteacherrecordstableData ()
}
//详情
const TeacherSystem=()=>{
getTeacherFeeDetail({id : state.id}).then((res) => {
// state.formParam=Object.assign({} ,res.data.data)
state.formParam=res.data.data
// tableDataFeeDetail.value = res.data.data.records
state.formParam.courseType = String(res.data.data.courseType)
state.formParam.levelPay = String(res.data.data.levelPay)
state.tSystemNames.systemName = res.data.data.tsystemName
state.tSystemNames.systemId = res.data.data.tsystemId
state.tSystemNames.systemCode = res.data.data.systemCode
state.tSystemNames.levelVoList = res.data.data.levelVoList
state.formParam.tlevelName = res.data.data.tlevelName
state.formParam.tlevelId = res.data.data.tlevelId
state.formParam.name = res.data.data.name+'/'+res.data.data.userNo
state.teachingDate = dayjs(res.data.data.teachingDate)
state.formParam.payrollPlaceId = res.data.data.payrollPlaceId
})
.catch((err) => {
console.log("详情", err);
});
}
//二级页面
const columnsFeeDetail = ref([
{
title: '时间',
dataIndex: 'updatedAt',
key: 'updatedAt',
elipsis: true, align: "center",
width: 150,
} ,
{
title: '操作人 ',
dataIndex: 'updatedBy',
key: 'updatedBy9',
elipsis: true, align: "center",
width: 150,
} ,
{
title: '操作 ',
dataIndex: 'status',
key: 'status',
elipsis: true, align: "center",
width: 150,
customRender: (value) => {
return (
<div>
{value.record.status == "A10" || value.record.status == "A20"
? {
"A10": "已提交",
"A20": "待审核",
}[value.record.status + ""] || ""
: "-"}
</div>
)
}
},
{
title: '备注 ',
dataIndex: 'remark',
key: 'remark',
elipsis: true, align: "center",
width: 150,
} ,
])
//取消按钮 清空输入的数据
const cancelTeachingDialog = () => {
state.teachingdialog = false
};
const clearNonNumber = () => {
state.formParam.teachingTime = state.formParam.teachingTime.replace(/\D/g, '');
state.formParam.expense = state.formParam.levelPay*state.formParam.teachingTime
}
const clearstudysNumber = () => {
state.formParam.studys = state.formParam.studys.replace(/\D/g, '');
}
const clearscoreNumber= () => {
state.formParam.score = state.formParam.score.replace(/\D/g, '');
}
const clearlevelPayNumber = () => {
state.formParam.levelPay = state.formParam.levelPay.replace(/\D/g, '');
state.formParam.expense = state.formParam.levelPay*state.formParam.teachingTime
}
const rules = {
name: [{ required: true, message:'',log: '讲师不能为空' }],
userNo: [{ required: true, message: '',log:'讲师工号不能为空' }],
orgName: [{ required: true, message: '',log:'讲师组织不能为空' }],
tsystemName: [{ required: true, message:'',log: '讲师体系不能为空' }],
tlevelId: [{ required: true, message:'',log: ' 讲师级别 不能为空' }],
payrollPlace: [{ required: true, message:'',log: '讲师发薪地 不能为空' }],
courseType: [{ required: true, message: '',log:'费用类型不能为空' }],
courseName: [{ required: true, message:'',log: '课程名称不能为空' }],
teachingDate: [{ required: true, message:'',log: '授课日期不能为空' }],
teachingTime: [{ required: true, message:'',log: ' 授课时长不能为空' }],
studys: [{ required: true, message: '',log:' 参训人数不能为空' }],
score: [{ required: true, message:'',log: ' 评分不能为空' }],
levelPay: [{ required: true, message:'',log: '课酬基准 不能为空' }],
expense: [{ required: true, message: '',log:'计划费用不能为空' }],
}
const handleImport = () => {
state.showWork = true
}
const allFee=()=>{
state.allFeedialog=true
}
const selectedRowKeys = (val) => {
state.selectsIds = val?.join(',');
state.visibleConfirm = true;
}
watch(()=>state.visibleConfirm,(val)=>{
if(!val){
state.selectsIds = '';
}
})
const tableDatas = ref([])
const column = ref([
{
title: '讲师姓名 ',
dataIndex: 'name',
key: 'name',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师工号 ',
dataIndex: 'userNo',
key: 'userNo',
elipsis: true, align: "center",
width: 120,
},
{
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName',
elipsis: true, align: "center",
width: 120,
},
{
title: '培训发生组织',
dataIndex: 'trainOrg',
key: 'trainOrg',
elipsis: true, align: "center",
width: 120,
},
{
title: '授课时长 ',
dataIndex: 'teachingTime',
key: 'teachingTime',
elipsis: true, align: "center",
width: 120,
},
{
title: '授课时间 ',
dataIndex: 'teachingTime',
key: 'teachingTime',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师体系',
dataIndex: 'systemName',
key: 'systemName',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师级别 ',
dataIndex: 'levelName',
key: 'levelName',
elipsis: true, align: "center",
width: 120,
// customRender: (value, record) => {
// return (
// <div>
// {value.record.grade == 0 || value.record.grade == 1 || value.record.grade == 2 || value.record.grade == 3
// ? {
// 0: "未定级",
// 1: "1级",
// 2: "2级",
// 3: "3级",
// }[value.record.grade + ""] || ""
// : "-"}
// </div>
// )
// }
},
{
title: '发薪地 ',
dataIndex: 'teacherpayrollPlace',
key: 'teacherpayrollPlace',
elipsis: true, align: "center",
width: 120,
},
{
title: '基准课酬 ',
dataIndex: 'teacherlevelPay',
key: 'teacherlevelPay',
elipsis: true, align: "center",
width: 120,
},
{
title: '计划费用 ',
dataIndex: 'expense',
key: 'expense',
elipsis: true, align: "center",
width: 120,
},
{
title: '参训人数 ',
dataIndex: 'studentNum',
key: 'studentNum',
elipsis: true, align: "center",
width: 120,
},
{
title: '评分 ',
dataIndex: 'courseAssess',
key: 'courseAssess',
elipsis: true, align: "center",
width: 120,
},
{
title: '课程类型 ',
dataIndex: ' courseType',
key: ' courseType',
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record. courseType == "1" || value.record. courseType == "2"|| value.record.courseTypeype == "3"
? {
"1": "项目开课",
"2": "路径开课",
"3": "面授开课",
}[value.record. courseType + ""] || ""
: "-"}
</div>
)
}
},
{
title: '状态 ',
dataIndex: 'status',
key: 'status',
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record.status== "0" || value.record.status == "1" ||value.record.status == "2" ||value.record.status == "3"
? {
"0": "待确认",
"1": "待提交",
"2": "审核中",
"3": "审核通过",
}[value.record.status + ""] || ""
: "-"}
</div>
)
}
},
{
title: '讲师组织',
dataIndex: 'trainOrg',
key: 'trainOrg',
elipsis: true, align: "center",
width: 200,
scopedSlots: { customRender: "trainOrg" },
},
{
title: '操作 ',
dataIndex: 'operation',
key: 'operation',
elipsis: true, align: "right",
fixed: "right",
width: 100,
scopedSlots: { customRender: "action" },
},
])
const handleformlevel = (val) => {
state.formParam.tlevelName = state.tSystemNames.levelVoList.find(item=>item.id===val)?.levelName
}
//导出功能
const handleExport = ()=>{
window.open (
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherExpense?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&name=${state.searchParam.name ? state.searchParam.name : ""
}&tsystemId=${ state.searchParam.tsystemId ? state.searchParam.tsystemId : ""}&levelId=${state.searchParam.levelId ? state.searchParam.levelId : ""
}&courseType=${ state.searchParam.courseType ? state.searchParam.courseType : ""}&certStatus=${
state.searchParam.certStatus ? state.searchParam.certStatus : ""
}&salaryName=${state.searchParam.salaryName ? state.searchParam.salaryName : ""}&status=${state.searchParam.status ? state.searchParam.status : ""}&beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""}&endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""}`
);
// this.download('lesson_records/export', {
// ...state.searchParam
// }, `project_${new Date().getTime()}.xlsx` )
}
const beforeUpload2 = (file) => {
console.log(file);
const fileType = [
"xls",
"xlsx",
"zip",
];
if (!fileType.includes(file.name.split(".")[1])) {
message.error(
"仅支持.xls,.xlsx,.zip格式!"
);
return false;
}
const formData = new FormData();
formData.append("file", file);
console.log(file);
fileUp(formData).then((res) => {
if (res.data.code === 200) {
state.imgList.push({
img: res.data.data,
name: file.name,
size: file.size,
});
console.log(state.imgList);
// state.hasImgName = res.data.data;
}
});
return false;
};
//回车
const enterPressHadlerSearch = e => {
  console.log("e",e);
    if (e.keyCode === 13) {
      searchSubmit()
    }
};
return {
...toRefs(state),
handleTeacher,
enterPressHadlerSearch,
rules,
formRef,
clearNonNumber,
handleImport,
beforeUpload2,
closeDeleteTeacher,
cancelTeachingDialog,
courseTypeList,
// searchTimeChange,
handlemoreid,
handleExport,
lecturerSystemList,
getLevelList,
OnTheJobStatusList,
// PlaceOfPayLista,
AuthenticationStatusList,
// PlaceOfPayList,
AccountStatusList,
searchSubmit,
searchReset,
columns,
columnsFeeDetail,
tableData,
changePagination,
addTeacher,
cancelTeacherDialog,
handleLook,
cancel,
// deleteModal,
handleModify,
// closeDeleteTeacher,
createTeacherDialog,
handleOperate,
closehandleOperate,
getTableDate, //list接口数据调用
// getStu
LecturerSystemLista,
TeacherSystem,
changetlevel,
canceleditTeacherDialog,
allFee,
selectedRowKeys,
column,
tableDatas,
handleformlevel,
validateField,
clearstudysNumber,
clearscoreNumber,
clearlevelPayNumber,
}
},
};
</script>
<style lang="scss" scoped >
.select .ant-picker {
width: 410px !important;
}
.addTimeBox {
position: relative;
display: flex;
align-items: center;
.addTime {
position: absolute;
z-index: 1;
margin-left: 10px;
color: rgba(0, 0, 0, 0.4);
}
.ant-picker {
padding-left: 85px;
}
::v-deep .ant-picker-range .ant-picker-active-bar {
margin-left: 85px !important;
}
}
.addTimeBox .ant-picker{
padding-left: 85px;
}
//导出按钮icon
.daochu {
width: 16px;
height: 18px;
background-image: url("../../assets/images/coursewareManage/export1.png");
}
//弹窗内详情样式
.display1 {
display: inline-block;
width: 200px;
}
// .display0{
// display:inline-block ;
// width:200px ;
// text-align:center }
//弹窗内确认取消按钮布局
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn1 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
margin-right: 14px;
}
.btn2 {
background-color: #4ea6ff;
color: #ffffff;
}
}
.ant-table-cell-fix-right {
width: 300px !important;
}
.ant-table-tbody>tr>td {
text-align: center;
}
.InsideTeaching {
width: 100%;
height: 100%;
.filter {
margin-left: 38px;
margin-right: 38px;
margin-top: 30px;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.select {
margin-right: 20px;
margin-bottom: 10px;
}
}
}
.delete {
z-index: 9999;
width: 424px;
background: #ffffff;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
border-radius: 4px;
position: absolute;
left: 30%;
top: 10%;
// transform: translate(-50%, -50%);
.del_header {
position: absolute;
width: calc(100%);
height: 40px;
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%);
}
.del_main {
width: 100%;
position: relative;
.header {
display: flex;
align-items: center;
padding-top: 20px;
padding-left: 26px;
font-size: 16px;
.del-icon {
width: 16px;
height: 16px;
margin-right: 10px;
background-image: url(@/assets/images/coursewareManage/notice.png);
background-size: 100% 100%;
}
.icon {
width: 16px;
height: 16px;
margin-right: 10px;
background-image: url(@/assets/images/coursewareManage/QR.png);
background-size: 100% 100%;
}
.close_exit {
position: absolute;
right: 42px;
cursor: pointer;
width: 20px;
height: 20px;
background-image: url(@/assets/images/coursewareManage/close.png);
background-size: 100% 100%;
}
}
.body {
width: 100%;
margin: 34px auto 56px auto;
display: flex;
justify-content: center;
align-items: center;
}
.del_btnbox {
display: flex;
margin: 30px auto;
justify-content: center;
.del_btn {
width: 100px;
height: 40px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn1 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
}
.btn2 {
background-color: #4ea6ff;
color: #ffffff;
}
}
}
}
.CreatePath {
.out {
z-index: 9999;
display: block;
position: absolute;
top: 90px;
width: 1080px !important;
height: 650px;
overflow: auto;
background-color: #fff;
box-shadow: 0 0 10px rgba(118, 136, 166, 0.21);
left: 50%;
top: 300px;
transform: translate(-50%, -50%);
.top {
width: 100%;
height: 68px;
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%);
display: flex;
align-items: center;
.topimg {
width: 18px;
height: 18px;
margin-left: 27px;
margin-top: -2px;
}
.topc {
color: #000000;
font-size: 16px;
margin-left: 8px;
}
}
.mid {
width: 100%;
height: 100%;
background-color: #fff;
display: flex;
flex-direction: column;
align-items: center;
.d {
// margin-top: 8px;
// color: #ff4e4e;
margin-left: -5px;
}
}
}
}
//添加样式
.langbtn {
height: 40px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
}
// 重置样式
.resetbtn {
width: 100px;
height: 40px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
}
//展开收起样式
.moreidbtn {
border: none;
color: #4ea6ff;
width: 80px
}
//小竖线
.line {
float: left;
width: 3px;
height: 25px;
background: #4ea6ff;
border-radius: 30%;
margin-right: 5px;
}
//抽屉功能
.drawaer
// /* 改变所有 a-tree-select 输入框的高度 */
// ::v-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{
// height: 40px;
// line-height: 40px;
// border-radius: 8px
// /* 确保文字垂直居中 */
// }
::v-deep .ant-select-single:not(.ant-select-customize-input) .ant-select-selector{
height: 40px !important;
line-height: 40px;
border-radius: 8px
}
// 抽屉内样式
.draitem{
width: 100%;
height: 40px !important;
border-radius: 8px;
line-height: 40px;
}
.drabtn{
height:40px;
width:80px;
border-radius:8px;
margin-right:20px
}
::v-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{
border-radius:8px;
height:40px;
}
.ant-col-12{
height:90px;
}
::v-deep .ant-select-selection-overflow-item {
margin-top: -2px;
}
::v-deep .ant-select-multiple .ant-select-selection-item {
height: 34px
}
.tableBox {
padding-bottom: 20px;
margin: 20px 38px 30px;
::v-deep .ant-select-dropdown{
display: inline-block;
}
::v-deep .ant-select-selection-item{
margin-left: 3px;
}
::v-deep .ant-pagination-options-size-changer.ant-select{
width: 84px;
}
.pa {
width: 100%;
display: flex;
justify-content: right;
}
}
</style>