Merge remote-tracking branch 'zcwy/zcwy-teacher-manage' into zcwy-teacher-manage

This commit is contained in:
zhangsir
2024-10-24 19:53:13 +08:00
6 changed files with 379 additions and 304 deletions

View File

@@ -288,6 +288,10 @@ export default {
pageSize: 10, pageSize: 10,
tableDataTotal: -1,//table列表总条数 tableDataTotal: -1,//table列表总条数
teacherrecordstableDataTotal: -1,//授课记录列表总条数 teacherrecordstableDataTotal: -1,//授课记录列表总条数
tSystemNames:{
systemName:null,
levelVoList: []
},
formParam: { formParam: {
description:"", description:"",
teacherType:'2', teacherType:'2',
@@ -299,6 +303,7 @@ export default {
teacherType:2, teacherType:2,
name: null,//姓名 name: null,//姓名
status: null,//状态 status: null,//状态
tSystemName: null,
pageNo: "1", pageNo: "1",
pageSize: "10" pageSize: "10"
}, },
@@ -465,11 +470,27 @@ export default {
state.vf = false state.vf = false
TeacherSystem() TeacherSystem()
} }
//保存 async function validateField(name) {
const createTeacherDialog = () => { return new Promise((resolve) => {
formRef.value formRef.value.validateFields([name])
.validate()
.then(() => { .then(() => {
resolve(false);
})
.catch(() => {
resolve(true);
});
});
}
//保存
const createTeacherDialog = async () => {
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}
if (state.vf == false) { if (state.vf == false) {
updateInTeacher(state.formParam).then(response => { updateInTeacher(state.formParam).then(response => {
message.success("修改成功"); message.success("修改成功");
@@ -489,10 +510,6 @@ export default {
console.log(err); console.log(err);
}); });
} }
})
.catch(() => {
console.log('error', error);
});
}; };
//删除弹窗 //删除弹窗
const deleteModal = (record) => { const deleteModal = (record) => {
@@ -581,19 +598,19 @@ export default {
console.log(state.formParam); console.log(state.formParam);
} }
const rules = { const rules = {
name: [{ required: true, message: '讲师不能为空' }], name: [{ required: true, message: '',log: '讲师不能为空' }],
supplier:[{ required: true, message: '供应商不能为空' }], supplier:[{ required: true, message: '',log:'供应商不能为空' }],
email:[ email:[
{ {
type: "email", type: "email",
message: '请输入正确的邮箱地址', message: '',log: '请输入正确的邮箱地址',
trigger: "blur" trigger: "blur"
} }
], ],
mobile: [ mobile: [
{ {
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码", message: '',log: "请输入正确的手机号码",
trigger: "blur" trigger: "blur"
} }
] ]
@@ -663,6 +680,7 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
lecturerAdmin, lecturerAdmin,
validateField,
rules, rules,
rule, rule,
formRef, formRef,

View File

@@ -10,7 +10,7 @@
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch> placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
</a-input> --> </a-input> -->
<a-input style="width: 276px; height: 40px; border-radius: 8px" placeholder="请输入工号/讲师姓名进行检索" showSearch <a-input style="width: 276px; height: 40px; border-radius: 8px" placeholder="请输入工号/讲师姓名进行检索" showSearch
allowClear v-model:name="searchParam.name"></a-input> allowClear v-model:courseName="searchParam.courseName"></a-input>
</a-form-item> </a-form-item>
<a-form-item class="select"> <a-form-item class="select">
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px" <a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
@@ -23,7 +23,6 @@
<a-range-picker <a-range-picker
v-model:value="searchdate" v-model:value="searchdate"
style="width: 420px" style="width: 420px"
@change="searchTimeChange"
format="YYYY-MM-DD" format="YYYY-MM-DD"
valueFormat="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
separator="至" separator="至"
@@ -56,9 +55,22 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" v-model:value="searchParam.systypeid" placeholder="内容分类" <a-tree-select
:options="getTeacherExpertiseList" allowClear> style="width: 230px"
</a-select> :fieldNames="{
children: 'children',
label: 'name',
value: 'code',
}"
allow-clear
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
v-model:value="searchParam.courseTypeId"
show-search
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择内容分类"
tree-default-expand-all
:tree-data="sysTypeOptions">
</a-tree-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" v-model:value="searchParam.status" placeholder="开课状态" <a-select style="width: 230px" v-model:value="searchParam.status" placeholder="开课状态"
@@ -111,7 +123,7 @@
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true" <a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true"
dropdown-style="drawaer" width="60%" :title="teacherdialogtitle"> dropdown-style="drawaer" width="60%" :title="teacherdialogtitle">
<a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef"> <a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef">
<!--讲师名称 teacher 内容分类 systypeid --> <!--讲师名称 teacher 内容分类 coursetypeid -->
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师名称" name="teacher"> <a-form-item label="讲师名称" name="teacher">
@@ -121,10 +133,22 @@
@onChange="managerChange"></ProjectManagerOutTeacher> </a-form-item> @onChange="managerChange"></ProjectManagerOutTeacher> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="内容分类" name="systypeid"> <a-form-item label="内容分类" name="courseTypeId">
<a-select class="draitem" v-model:value="formParam.systypeid" placeholder="内容分类" <a-tree-select
:options="getTeacherExpertiseList" allowClear> :fieldNames="{
</a-select> children: 'children',
label: 'name',
value: 'code',
}"
allow-clear
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
v-model:value="formParam.courseTypeId"
show-search
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择内容分类"
tree-default-expand-all
:tree-data="sysTypeOptions">
</a-tree-select>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@@ -217,7 +241,7 @@
<a-descriptions-item label="课程名称">{{ formParam.name }}</a-descriptions-item> <a-descriptions-item label="课程名称">{{ formParam.name }}</a-descriptions-item>
<a-descriptions-item label="开课状态">{{ formParam.status == 0 ? '未开课' : formParam.status == 1 <a-descriptions-item label="开课状态">{{ formParam.status == 0 ? '未开课' : formParam.status == 1
? '已开课' : '' }}</a-descriptions-item> ? '已开课' : '' }}</a-descriptions-item>
<a-descriptions-item label="内容分类 ">{{ formParam.sysTypeId }}</a-descriptions-item> <a-descriptions-item label="内容分类 ">{{ formParam.courseTypeId }}</a-descriptions-item>
<a-descriptions-item label="授课/课程日期 ">{{ formParam.beginTime }}</a-descriptions-item> <a-descriptions-item label="授课/课程日期 ">{{ formParam.beginTime }}</a-descriptions-item>
<a-descriptions-item label="授课时长 ">{{ formParam.duration }} <a-descriptions-item label="授课时长 ">{{ formParam.duration }}
<span style="margin-left: 5px ;" v-if="formParam.duration != null">({{ (formParam.duration / 60 <span style="margin-left: 5px ;" v-if="formParam.duration != null">({{ (formParam.duration / 60
@@ -274,7 +298,7 @@
</div> </div>
</template> </template>
<script lang="jsx"> <script lang="jsx">
import { reactive, toRefs, ref } from "vue"; import { reactive, toRefs, ref ,computed} from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { useStore } from "vuex"; import { useStore } from "vuex";
import { import {
@@ -324,13 +348,15 @@ export default {
teachingdialog: false,//查看抽屉 teachingdialog: false,//查看抽屉
pageSizeOptions: ['10', '20', '30', '50'], //下拉选择每页显示多少条 pageSizeOptions: ['10', '20', '30', '50'], //下拉选择每页显示多少条
pageSize: 10, pageSize: 10,
beginTime: null, //开始时间
endTime: null, //结束时间
tableDataTotal: -1,//table列表总条数 tableDataTotal: -1,//table列表总条数
formParam: { formParam: {
status: 1, status: 1,
entryType:1, entryType:1,
duration:null duration:null
}, },
searchdate: null, //选择时间 searchdate: undefined, //选择时间
searchParam: { searchParam: {
name:null, name:null,
recordType:2, recordType:2,
@@ -340,30 +366,30 @@ export default {
name: null, name: null,
address: null, address: null,
status: null, status: null,
startDate: null, beginTime: null,
endDate: null, endTime: null,
entryType:null, entryType:null,
}, },
}) })
function searchTimeChange(time, timeStr) { // function searchTimeChange(time, timeStr) {
let startTime = timeStr[0] // let startTime = timeStr[0]
let endTime = timeStr[1] ; // let endTime = timeStr[1] ;
state.startTime = new Date(startTime).getTime(); // state.startTime = new Date(startTime).getTime();
state.endTime = new Date(endTime).getTime(); // state.endTime = new Date(endTime).getTime();
// state.searchParam.startDate = new Date(startDate).getTime() ; // // state.searchParam.beginTime = new Date(beginTime).getTime() ;
// state.searchParam.endDate = new Date(endDate).getTime() ; // // state.searchParam.endTime = new Date(endTime).getTime() ;
state.searchParam.startDate = state.startTime ? state.startTime : null, // state.searchParam.beginTime = state.startTime ? state.startTime : null,
state.searchParam.endDate = state.endTime ? state.endTime : null // state.searchParam.endTime = state.endTime ? state.endTime : null
} // }
const AddressList = ref([ const AddressList = ref([
]); ]);
const rules = { const rules = {
teacher: [{ required: true, message: '讲师不能为空' }], teacher: [{ required: true, message: '',log:'讲师不能为空' }],
systypeid: [{ required: true, message: '内容分类不能为空' }], coursetypeid: [{ required: true, message:'',log: '内容分类不能为空' }],
name: [{ required: true, message: '课程名称不能为空' }], name: [{ required: true, message: '',log:'课程名称不能为空' }],
status: [{ required: true, message: '讲开课状态不能为空' }], status: [{ required: true, message:'',log: '讲开课状态不能为空' }],
duration: [{ required: true, message: '授课时长不能为空' }], duration: [{ required: true, message: '',log:'授课时长不能为空' }],
beginTime: [{ required: true, message: '授课日期不能为空' }], beginTime: [{ required: true, message:'',log: '授课日期不能为空' }],
} }
//获取开课场地 //获取开课场地
@@ -384,6 +410,8 @@ export default {
}) })
} }
AddressLista() AddressLista()
//获取内容分类
const sysTypeOptions = computed(() => store.state.content_type);
const OnTheJobStatusList = ref([ const OnTheJobStatusList = ref([
{ value: 1, label: "项目开课" }, { value: 1, label: "项目开课" },
{ value: 2, label: "路径开课" }, { value: 2, label: "路径开课" },
@@ -499,18 +527,25 @@ export default {
) )
} }
}, },
// {
// title: "内容分类",
// width: 100,
// dataIndex: "sysType1",
// ellipsis: true,
// key: "keywords",
// align: "center",
// //customRender: ({ record,text }) =>
// //`${getSysTypeMap(record.sysType1, record.sysTypeId)?getSysTypeMap//(record.sysType1) : ""}
// //${getSysTypeMap(record.sysType2, record.sysTypeId)?'-'+getSysTypeMap//(record.sysType2) : ""}
// //${getSysTypeMap(record.sysType3, record.sysTypeId)?'-'+getSysTypeMap//(record.sysType3) : ""}
// // `
// },
{ {
title: "内容分类", title: '内容分类',
width: 100, dataIndex: 'courseTypeId',
dataIndex: "sysType1", key: 'courseTypeId',
ellipsis: true, elipsis: true, align: "center",
key: "keywords", width: 120,
align: "center",
//customRender: ({ record,text }) =>
//`${getSysTypeMap(record.sysType1, record.sysTypeId)?getSysTypeMap//(record.sysType1) : ""}
//${getSysTypeMap(record.sysType2, record.sysTypeId)?'-'+getSysTypeMap//(record.sysType2) : ""}
//${getSysTypeMap(record.sysType3, record.sysTypeId)?'-'+getSysTypeMap//(record.sysType3) : ""}
// `
}, },
{ {
title: '授课时长(H) ', title: '授课时长(H) ',
@@ -585,18 +620,19 @@ export default {
status: null, status: null,
entryType:null, entryType:null,
systemId:null, systemId:null,
endDate:null, endTime:null,
startDate:null, beginTime:null,
entryType:null entryType:null
}; };
getTableDate(); getTableDate();
}; };
// List接口数据 // List接口数据
const getTableDate = (obj) => { const getTableDate = (obj) => {
state.tableLoading = true
state.tableLoading = true state.tableLoading = true
let objA = { ...state.searchParam }; let objA = { ...state.searchParam };
objA.startDate = state.searchParam.startDate !== null ? dayjs(new Date(state.searchParam.startDate).getTime()).format("YYYY-MM-DD") : "", objA.beginTime = state.searchdate ? dayjs(state.searchdate[0]).format("YYYY-MM-DD") : "",
objA.endDate = state.searchParam.endDate !== null ? dayjs(new Date(state.searchParam.endDate).getTime()).format("YYYY-MM-DD") : "", objA.endTime = state.searchdate ? dayjs(state.searchdate[1]).format("YYYY-MM-DD") : "",
getNewInTeacherCourseList(objA) getNewInTeacherCourseList(objA)
.then((res) => { .then((res) => {
tableData.value = res.data.data.records tableData.value = res.data.data.records
@@ -627,11 +663,27 @@ export default {
state.vf = false state.vf = false
TeacherSystem() TeacherSystem()
} }
//保存 async function validateField(name) {
const createTeacherDialog = () => { return new Promise((resolve) => {
formRef.value formRef.value.validateFields([name])
.validate()
.then(() => { .then(() => {
resolve(false);
})
.catch(() => {
resolve(true);
});
});
}
//保存
const createTeacherDialog = async () => {
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}
if (state.vf == false) { if (state.vf == false) {
updateInTeacherCourse(state.formParam).then(response => { updateInTeacherCourse(state.formParam).then(response => {
message.success("修改成功"); message.success("修改成功");
@@ -651,10 +703,6 @@ export default {
console.log(err); console.log(err);
}); });
} }
})
.catch(() => {
console.log('error', error);
});
}; };
//删除弹窗 //删除弹窗
const deleteModal = (record) => { const deleteModal = (record) => {
@@ -778,26 +826,26 @@ const handleImport = () => {
window.open( window.open(
`${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacherRecord?pageNo=${state.searchParam.pageNo `${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacherRecord?pageNo=${state.searchParam.pageNo
}&pageSize=${state.searchParam.pageSize} }&pageSize=${state.searchParam.pageSize}
&userNo=${state.searchParam.userNo ? state.searchParam.userNo : "" &name=${state.searchParam.name ? state.searchParam.name : ""}
} &courseName=${state.searchParam.courseName ? state.searchParam.courseName : ""}
&teacher=${state.searchParam.teacher ? state.searchParam.teacher : ""
}&name=${state.searchParam.name ? state.searchParam.name : ""}
&startDate=${state.searchParam.startDate ? state.searchParam.startDate : ""}
&endDate=${state.searchParam.endDate ? state.searchParam.endDate : ""}
&entryType=${state.searchParam.entryType ? state.searchParam.entryType : ""} &entryType=${state.searchParam.entryType ? state.searchParam.entryType : ""}
&id=${state.searchParam.id ? state.searchParam.id : "" &beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""}
}&status=${state.searchParam.status ? state.searchParam.status : ""}` &endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""}
&courseTypeId=${state.searchParam.courseTypeId ? state.searchParam.courseTypeId : ""}
&status=${state.searchParam.status ? state.searchParam.status : ""}`
); );
} }
return { return {
...toRefs(state), ...toRefs(state),
rules, rules,
validateField,
sysTypeOptions,
formRef, formRef,
handleImport, handleImport,
clearNonNumber, clearNonNumber,
managerChange, managerChange,
entryTypeList, entryTypeList,
searchTimeChange, // searchTimeChange,
cancelTeachingDialog, cancelTeachingDialog,
getTeacherExpertiseList, getTeacherExpertiseList,
getTeacherExpertiseLista, getTeacherExpertiseLista,

View File

@@ -63,7 +63,7 @@
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" placeholder="请选择讲师体系" v-model:value="searchParam.tSystemId" <a-select style="width: 230px" placeholder="请选择讲师体系" v-model:value="searchParam.tSystemId"
:options="LecturerSystemList" allowClear showSearch> :options="LecturerSystemList" allowClear showSearch @change="changetlevel">
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
@@ -74,7 +74,7 @@
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-tree-select <a-tree-select style="width: 230px"
:fieldNames="{ :fieldNames="{
children: 'children', children: 'children',
label: 'name', label: 'name',
@@ -151,18 +151,18 @@
<!-- 讲师姓名 teacher 组织 orgName--> <!-- 讲师姓名 teacher 组织 orgName-->
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师名称" name="teacher"> <a-form-item label="讲师名称" name="name">
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName"
<SearchTeacher v-model:value="formParam.teacher" v-model:lable="formParam.orgName" v-model:system="tSystemNames" v-model:level="formParam.tLevelId"></SearchTeacher>
v-model:system="formParam.tSystemName" v-model:level="formParam.sLevelName"></SearchTeacher>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师组织" name="orgName"> <a-form-item label="讲师组织" name="orgName">
<a-popover title="讲师组织"> <a-popover>
<template #content> <template #content>
{{ formParam.orgName }} {{ formParam.orgName }}.
</template> </template>
<a-input disabled v-model:value="formParam.orgName" class="draitem" <a-input disabled v-model:value="formParam.orgName" class="draitem"
placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch> placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch>
</a-input> </a-input>
@@ -174,30 +174,20 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师体系" name="tSystemName"> <a-form-item label="讲师体系" name="tSystemName">
<a-popover title="讲师体系"> <a-input disabled v-model:value="tSystemNames.systemName" class="draitem"
<template #content> placeholder="自动带出讲师的体系" allowClear showSearch>
{{ formParam.tSystemName }}
</template>
<a-input disabled v-model:value="formParam.tSystemName" class="draitem"
placeholder="自动带出讲师体系" allowClear showSearch>
</a-input> </a-input>
</a-popover>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师级别" name="levelId"> <a-form-item label="讲师级别" name="tLevelId">
<a-popover title="讲师级别"> <a-select class="draitem" v-model:value="formParam.tLevelId" placeholder="请选择讲师级别" allowClear
<template #content> :options="tSystemNames.levelVoList" @change="handleformlevel">
{{ formParam.sLevelName }} </a-select>
</template>
<a-input v-model:value="formParam.sLevelName" class="draitem"
placeholder="自动带出讲师级别" allowClear showSearch>
</a-input>
</a-popover>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<!-- 内容分类 id 课程名称 name --> <!-- 内容分类 courseTypeId 课程名称 name -->
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="内容分类" name="courseTypeId"> <a-form-item label="内容分类" name="courseTypeId">
@@ -219,8 +209,8 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="课程名称:" name="name"> <a-form-item label="课程名称:" name="coursename">
<a-input class="draitem" v-model:value="formParam.name" placeholder="请输入后搜索面授课" allowClear showSearch> <a-input class="draitem" v-model:value="formParam.coursename" placeholder="请输入后搜索面授课" allowClear showSearch>
</a-input> </a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -449,6 +439,10 @@ export default {
searchdate: undefined, //选择时间 searchdate: undefined, //选择时间
beginTime: null, //开始时间 beginTime: null, //开始时间
endTime: null, //结束时间 endTime: null, //结束时间
tSystemNames:{
systemName:null,
levelVoList: []
},
formParam: { formParam: {
courseStatus: 1, courseStatus: 1,
createFrom: 1, createFrom: 1,
@@ -795,6 +789,7 @@ export default {
pageSize: 10, pageSize: 10,
managerId: null, managerId: null,
name: null, name: null,
courseName:null,
createFrom: null, createFrom: null,
courseStatus:null, courseStatus:null,
orgId: null, orgId: null,
@@ -844,13 +839,30 @@ export default {
state.teacherdialogtitle = '修改授课记录' state.teacherdialogtitle = '修改授课记录'
state.lookTeacherId = record.teacherId state.lookTeacherId = record.teacherId
state.vf = false state.vf = false
TeacherSystem(record) TeacherSystem1(record)
}
async function validateField(name) {
return new Promise((resolve) => {
formRef.value.validateFields([name])
.then(() => {
resolve(false);
})
.catch(() => {
resolve(true);
});
});
} }
//保存 //保存
const createTeacherDialog = () => { const createTeacherDialog = async () => {
formRef.value state.formParam.tSystemName = state.tSystemNames.systemName
.validate() const formItemNames = Object.keys(rules);
.then(() => { 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}
if (state.vf == false) { if (state.vf == false) {
updateInTeacherCourse(state.formParam).then(response => { updateInTeacherCourse(state.formParam).then(response => {
message.success("修改成功"); message.success("修改成功");
@@ -870,11 +882,7 @@ export default {
console.log(err); console.log(err);
}); });
} }
}) };
.catch(() => {
console.log('error', error);
})
}
//删除弹窗 //删除弹窗
const deleteModal = (record) => { const deleteModal = (record) => {
state.deleteTeacherdialog = true state.deleteTeacherdialog = true
@@ -927,10 +935,14 @@ export default {
type: null, type: null,
remark: null, remark: null,
offcourseId: null, offcourseId: null,
createFrom: null createFrom: null,
}
} }
state.tSystemNames = {
systemName:null,
levelVoList: []
}
}
// //页面内部姓名 // //页面内部姓名
// const infoteacherList = ref([ // const infoteacherList = ref([
// ]); // ]);
@@ -963,32 +975,36 @@ export default {
state.teachingdialog = false; state.teachingdialog = false;
} }
//内部授课详情 //内部授课详情
const TeacherSystem = (record) => { // const TeacherSystem = (record) => {
state.formParam = { // state.formParam = {
recordType: 1, // recordType: 1,
name: record.name, // name: record.name,
userNo: record.userNo, // userNo: record.userNo,
orgName: record.orgName, // orgName: record.orgName,
tSystemName: record.tSystemName, // tSystemName: record.tSystemName,
levelId: record.levelId, // levelId: record.levelId,
type: record.type, // type: record.type,
courseName: record.courseName, // courseName: record.courseName,
courseStatus:record.courseStatus, // courseStatus:record.courseStatus,
beginTime: dayjs(record.beginTime, 'YYYY-MM-DD'), // beginTime: dayjs(record.beginTime, 'YYYY-MM-DD'),
// ref< moment.Moment >(moment(record.beginTime,'YYYY-MM-DD')), // // ref< moment.Moment >(moment(record.beginTime,'YYYY-MM-DD')),
// record.beginTime, // // record.beginTime,
duration: record.duration, // duration: record.duration,
score: record.score, // score: record.score,
studys: record.studys, // studys: record.studys,
remark: record.remark, // remark: record.remark,
createFrom: record.createFrom // createFrom: record.createFrom
} // }
console.log(state.formParam) // console.log(state.formParam)
} // }
//内部授课详情 //内部授课详情
const TeacherSystem1 = (record) => { const TeacherSystem1 = (record) => {
getTeacherCourseList({id:record.id}).then((res) => { getTeacherCourseList({id:record.id}).then((res) => {
state.formParam = res.data.data state.formParam = res.data.data
state.tSystemNames.systemName = res.data.data.tSystemName
state.tSystemNames.systemCode = res.data.data.systemCode
state.tSystemNames.systemId = res.data.data.systemId
state.tSystemNames.levelVoList = res.data.data.levelVoList
console.log( state.formParam); console.log( state.formParam);
}) })
.catch((err) => { .catch((err) => {
@@ -1075,56 +1091,26 @@ export default {
} }
const tableDatas = ref([]) const tableDatas = ref([])
const rules = { const rules = {
teacher: [{ required: true, message: '讲师不能为空' }], teacher: [{ required: true, message:'',log: '讲师不能为空' }],
orgName: [{ required: true, message: '讲师组织不能为空' }], orgName: [{ required: true, message: '',log:'讲师组织不能为空' }],
levelId: [{ required: true, message: '讲师级别不能为空' }], levelId: [{ required: true, message: '',log:'讲师级别不能为空' }],
tSystemName: [{ required: true, message: '讲师体系不能为空' }], tSystemName: [{ required: true, message: '',log:'讲师体系不能为空' }],
id: [{ required: true, message: '内容分类不能为空' }], id: [{ required: true, message: '',log:'内容分类不能为空' }],
courseName: [{ required: true, message: '课程名称不能为空' }], courseName: [{ required: true, message: '',log:'课程名称不能为空' }],
beginTime: [{ required: true, message: '授课/课程日期不能为空' }], beginTime: [{ required: true, message: '',log:'授课/课程日期不能为空' }],
duration: [{ required: true, message: '授课时长不能为空' }], duration: [{ required: true, message:'',log: '授课时长不能为空' }],
courseStatus: [{ required: true, message: '开课状态不能为空' }], courseStatus: [{ required: true, message: '',log:'开课状态不能为空' }],
}
const rule = () => {
// if (state.formParam.teacher == null) {
// state.log = true
// message.warning('讲师不能为空')
// }
// if (state.formParam.orgName == null) {
// state.log = true
// message.warning('组织不能为空')
// }
// if (state.formParam.levelId == null) {
// state.log = true
// message.warning('讲师级别不能为空')
// }
// if (state.formParam.tSystemName == null) {
// state.log = true
// message.warning('讲师体系不能为空')
// }
// if (state.formParam.name == null) {
// state.log = true
// message.warning('课程名称不能为空')
// }
// if (state.formParam.beginTime == null) {
// state.log = true
// message.warning('授课/课程日期不能为空')
// }
// if (state.formParam.defaultteachingTime == null) {
// state.log = true
// message.warning('授课时长不能为空')
// }
// if (state.formParam.status == null) {
// state.log = true
// message.warning('开课状态不能为空')
// }
} }
// function managerChange(e, l, d, t, orgName) { // function managerChange(e, l, d, t, orgName) {
// console.log(e, l); // console.log(e, l);
// state.searchParam.userNo = d; // state.searchParam.userNo = d;
// state.searchParam.name = t; // state.searchParam.name = t;
// // state.searchParam.trainorgName=orgName // // state.searchParam.trainorgName=orgName
// } // }
const handleformlevel = (val) => {
state.formParam.tlevelName = state.tSystemNames.levelVoList.find(item=>item.id===val)?.levelName
}
//导出功能 //导出功能
const handleExport = () => { const handleExport = () => {
window.open( window.open(
@@ -1133,16 +1119,15 @@ export default {
&recordType=1 &recordType=1
&name=${state.searchParam.name ? state.searchParam.name : ""} &name=${state.searchParam.name ? state.searchParam.name : ""}
&courseName=${state.searchParam.courseName ? state.searchParam.courseName : ""} &courseName=${state.searchParam.courseName ? state.searchParam.courseName : ""}
&departId=${state.searchParam.departId ? state.searchParam.departId : ""} &createFrom=${state.searchParam.createFrom ? state.searchParam.createFrom : ""}
&courseStatus=${state.searchParam.courseStatus ? state.searchParam.courseStatus : ""}
&tSystemId=${state.searchParam.tSystemId ? state.searchParam.tSystemId : ""} &tSystemId=${state.searchParam.tSystemId ? state.searchParam.tSystemId : ""}
&beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""} &beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""}
&endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""} &endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""}
&createFrom=${state.searchParam.createFrom ? state.searchParam.createFrom : ""} &orgId=${state.searchParam.orgId ? state.searchParam.orgId : ""}
&id=${state.searchParam.id ? state.searchParam.id : ""} &courseTypeId=${state.searchParam.courseTypeId ? state.searchParam.courseTypeId : ""}
&type=${state.searchParam.type ? state.searchParam.type : ""}
&status=${state.searchParam.status ? state.searchParam.status : ""}
&studysranges=${state.searchParam.studysranges ? state.searchParam.studysranges : ""}
&scoreranges=${state.searchParam.scoreranges ? state.searchParam.scoreranges : ""} &scoreranges=${state.searchParam.scoreranges ? state.searchParam.scoreranges : ""}
&studysranges=${state.searchParam.studysranges ? state.searchParam.studysranges : ""}
`) `)
console.log(state.searchParam.name,state.searchParam,'参数') console.log(state.searchParam.name,state.searchParam,'参数')
} }
@@ -1192,13 +1177,14 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
sysTypeOptions, sysTypeOptions,
validateField,
handleformlevel,
// managerChange, // managerChange,
clearNonNumber, clearNonNumber,
clearscoreNumber, clearscoreNumber,
clearstudysNumber, clearstudysNumber,
beforeUpload2, beforeUpload2,
rules, rules,
rule,
formRef, formRef,
column, column,
tableDatas, tableDatas,
@@ -1229,7 +1215,7 @@ export default {
getTableDate, //list接口数据调用 getTableDate, //list接口数据调用
// getStu // getStu
LecturerSystemLista, LecturerSystemLista,
TeacherSystem, // TeacherSystem,
TeacherSystem1, TeacherSystem1,
getOrganizationLista, getOrganizationLista,
getOrganizationList, getOrganizationList,

View File

@@ -154,14 +154,13 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师名称" name="teacher"> <a-form-item label="讲师名称" name="teacher">
<SearchTeacher v-model:value="formParam.teacher" v-model:lable="formParam.orgName" <SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName"
v-model:system="formParam.systemName" v-model:level="formParam.levelName"></SearchTeacher> v-model:system="tSystemNames" v-model:level="formParam.tLevelId"></SearchTeacher>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师工号" name="teacherNo"> <a-form-item label="讲师工号" name="name">
<a-input class="draitem" v-model:value="searchParam.teacherNo" disabled <a-input class="draitem" v-model:value="searchParam.name" disabled
placeholder="请输入后讲师工号" allowClear showSearch> placeholder="请输入后讲师工号" allowClear showSearch>
</a-input> </a-input>
</a-form-item> </a-form-item>
@@ -171,34 +170,37 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师组织" name="departId"> <a-form-item label="讲师组织" name="departId">
<a-popover title="讲师组织"> <a-form-item label="讲师组织" name="orgName">
<a-popover>
<template #content> <template #content>
{{ formParam.departId }} {{ formParam.orgName }}.
</template> </template>
<a-input disabled v-model:value="formParam.departId" class="draitem"
<a-input disabled v-model:value="formParam.orgName" class="draitem"
placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch> placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch>
</a-input> </a-input>
</a-popover> </a-popover>
</a-form-item> </a-form-item>
</a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师体系" name="systemId"> <a-form-item label="讲师体系" name="tSystemName">
<a-select disabled class="draitem" v-model:value="formParam.tsystemid" placeholder="请选择讲师体系" <!-- <a-select class="draitem" v-model:value="formParam.tSystemName" placeholder="请选择讲师体系" allowClear
:options="lecturerSystemList"> @change="changetlevel" .:options="LecturerSystemList">
</a-select> </a-select> -->
<a-input disabled v-model:value="tSystemNames.systemName" class="draitem"
placeholder="自动带出讲师的体系" allowClear showSearch>
</a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<!-- 讲师级别 levelId 讲师发薪地 payrollPlaceName--> <!-- 讲师级别 levelId 讲师发薪地 payrollPlaceName-->
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师级别" name="levelName"> <a-form-item label="讲师级别" name="tLevelId">
<!-- <a-select disabled class="draitem" v-model:value="formParam.levelId" placeholder="请选择讲师级别" <a-select class="draitem" v-model:value="formParam.tLevelId" placeholder="请选择讲师级别" allowClear
:options="getLevelList"> :options="tSystemNames.levelVoList" @change="handleformlevel">
</a-select> --> </a-select>
<a-input disabled v-model:value="formParam.levelName" class="draitem"
placeholder="自动带出讲师的级别" allowClear showSearch>
</a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -362,7 +364,7 @@
<a-descriptions-item label="费用类型">"费用类型(未命名)"</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.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.courseName}}</a-descriptions-item>
<a-descriptions-item label="授课时长 ">{{formParam.teachingTime}}</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.teachingDate}}</a-descriptions-item>
<a-descriptions-item label="参训人数 ">{{formParam.studys}}</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.score}}</a-descriptions-item>
@@ -518,7 +520,11 @@
status:null, status:null,
pageNo: "1", pageNo: "1",
pageSize: "10", pageSize: "10",
} },
tSystemNames:{
systemName:null,
levelVoList: []
},
}) })
//费用类型 //费用类型
const courseTypeList=ref([ const courseTypeList=ref([
@@ -557,7 +563,7 @@
}; };
array.push(obj); array.push(obj);
}); });
LecturerSystemList.value = array; lecturerSystemList.value = array;
} }
}) })
} }
@@ -889,12 +895,28 @@ console.log( "讲师体系id" +val);
} }
}) })
} }
//保存 async function validateField(name) {
const createTeacherDialog = () => { return new Promise((resolve) => {
state.formParam.teachingDate= state.formParam.teachingDate!==null? dayjs(new Date(state.formParam.teachingDate).getTime()).format("YYYY-MM-DD"): "", formRef.value.validateFields([name])
formRef.value
.validate()
.then(() => { .then(() => {
resolve(false);
})
.catch(() => {
resolve(true);
});
});
}
//保存
const createTeacherDialog = async () => {
state.formParam.tSystemName = state.tSystemNames.systemName
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}
if (state.vf == false) { if (state.vf == false) {
updateTeacherFee(state.formParam).then(response => { updateTeacherFee(state.formParam).then(response => {
message.success("修改成功"); message.success("修改成功");
@@ -914,10 +936,6 @@ console.log( "讲师体系id" +val);
console.log(err); console.log(err);
}); });
} }
})
.catch(() => {
console.log('error', error);
});
}; };
//删除弹窗 //删除弹窗
// const deleteModal = (record) => { // const deleteModal = (record) => {
@@ -988,7 +1006,7 @@ console.log( "讲师体系id" +val);
tsystemid:null, tsystemid:null,
levelId:null, levelId:null,
payrollPlaceName:null, payrollPlaceName:null,
// 费用类型 : null tSystemName: null,
teacherpayrollPlace:null, teacherpayrollPlace:null,
teachingDate:null, teachingDate:null,
defaultTeachingTime:null, defaultTeachingTime:null,
@@ -1073,26 +1091,26 @@ console.log( "讲师体系id" +val);
state.formParam.defaultTeachingTime = state.formParam.defaultTeachingTime.replace(/\D/g, ''); state.formParam.defaultTeachingTime = state.formParam.defaultTeachingTime.replace(/\D/g, '');
} }
const rules = { const rules = {
name: [{ required: true, message: '讲师不能为空' }], name: [{ required: true, message:'',log: '讲师不能为空' }],
teacherNo: [{ required: true, message: '讲师工号不能为空' }], teacherNo: [{ required: true, message: '',log:'讲师工号不能为空' }],
departId: [{ required: true, message: '讲师组织不能为空' }], departId: [{ required: true, message: '',log:'讲师组织不能为空' }],
systemId: [{ required: true, message: '讲师体系不能为空' }], tSystemName: [{ required: true, message:'',log: '讲师体系不能为空' }],
levelName: [{ required: true, message: ' 讲师级别 不能为空' }], tLevelId: [{ required: true, message:'',log: ' 讲师级别 不能为空' }],
payrollPlaceName: [{ required: true, message: '讲师发薪地 不能为空' }], payrollPlaceName: [{ required: true, message:'',log: '讲师发薪地 不能为空' }],
courseType: [{ required: true, message: '费用类型不能为空' }], courseType: [{ required: true, message: '',log:'费用类型不能为空' }],
courseName: [{ required: true, message: '课程名称不能为空' }], courseName: [{ required: true, message:'',log: '课程名称不能为空' }],
teachingDate: [{ required: true, message: '授课日期不能为空' }], teachingDate: [{ required: true, message:'',log: '授课日期不能为空' }],
defaultTeachingTime: [{ required: true, message: ' 授课时长不能为空' }], defaultTeachingTime: [{ required: true, message:'',log: ' 授课时长不能为空' }],
studys: [{ required: true, message: ' 参训人数不能为空' }], studys: [{ required: true, message: '',log:' 参训人数不能为空' }],
score: [{ required: true, message: ' 评分不能为空' }], score: [{ required: true, message:'',log: ' 评分不能为空' }],
score: [{ required: true, message: '课酬基准 不能为空' }], score: [{ required: true, message:'',log: '课酬基准 不能为空' }],
expense: [{ required: true, message: '计划费用不能为空' }], expense: [{ required: true, message: '',log:'计划费用不能为空' }],
} }
function managerChange(e, l, d, t, orgName) { function managerChange(e, l, d, t, orgName) {
console.log(e, l); console.log(e, l);
state.searchParam.teacherNo = d; state.searchParam.teacherNo = d;
state.searchParam.teacherName = t; state.searchParam.teacherNo = t;
// state.searchParam.trainorgName=orgName // state.searchParam.trainorgName=orgName
} }
const handleImport = () => { const handleImport = () => {
@@ -1298,12 +1316,15 @@ const column = ref([
}, },
]) ])
const handleformlevel = (val) => {
state.formParam.tlevelName = state.tSystemNames.levelVoList.find(item=>item.id===val)?.levelName
}
//导出功能 //导出功能
const handleExport = ()=>{ const handleExport = ()=>{
window.open ( window.open (
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherExpense?pageNo=${ `${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherExpense?pageNo=${
state.searchParam.pageNo state.searchParam.pageNo
}&pageSize=${state.searchParam.pageSizess}&name=${ }&pageSize=${state.searchParam.pageSize}&name=${
state.searchParam.name ? state.searchParam.name : "" state.searchParam.name ? state.searchParam.name : ""
}&tsystemid=${ state.searchParam.tsystemid ? state.searchParam.tsystemid : ""}&levelId=${ }&tsystemid=${ state.searchParam.tsystemid ? state.searchParam.tsystemid : ""}&levelId=${
state.searchParam.levelId ? state.searchParam.levelId : "" state.searchParam.levelId ? state.searchParam.levelId : ""
@@ -1396,6 +1417,8 @@ const column = ref([
searchResetdrawer, searchResetdrawer,
column, column,
tableDatas, tableDatas,
handleformlevel,
validateField,
} }
}, },
}; };

View File

@@ -234,7 +234,7 @@ export default {
const columns = ref([ const columns = ref([
{ {
title: '编号 ', title: '编号 ',
dataIndex: 'billNo', dataIndex: 'teacherId',
key: 'billNo', key: 'billNo',
elipsis: true, elipsis: true,
align: "center", align: "center",
@@ -330,7 +330,7 @@ export default {
obj.beginTime = lastMonthStart.toISOString().split('T')[0]; obj.beginTime = lastMonthStart.toISOString().split('T')[0];
obj.endTime = lastMonthEnd.toISOString().split('T')[0]; obj.endTime = lastMonthEnd.toISOString().split('T')[0];
getTeacherFeeList(obj).then((res)=>{ getTeacherFeeList(obj).then((res)=>{
tableData.value = res.data.data tableData.value = res.data.data.records
state.tableDataTotal = Number(res.data.data.total); state.tableDataTotal = Number(res.data.data.total);
state.tableLoading = false state.tableLoading = false
}) })