peixun
This commit is contained in:
parent
de204dffca
commit
bd1255c47b
|
@ -1,32 +1,32 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function getUserDetailList(query) {
|
||||
export function getTrainList(query) {
|
||||
return request({
|
||||
url: '/employee/userdetail/',
|
||||
url: '/employee/train/',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
export function createUserDetail(data) {
|
||||
export function createTrain(data) {
|
||||
return request({
|
||||
url: '/employee/userdetail/',
|
||||
url: '/employee/train/',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function updateUserDetail(id, data) {
|
||||
export function updateTrain(id, data) {
|
||||
return request({
|
||||
url: `/employee/userdetail/${id}/`,
|
||||
url: `/employee/train/${id}/`,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function deleteUserDetail(id) {
|
||||
export function deleteTrain(id) {
|
||||
return request({
|
||||
url: `/employee/userdetail/${id}/`,
|
||||
url: `/employee/train/${id}/`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,6 +87,26 @@ export const asyncRoutes = [
|
|||
component: () => import('@/views/employee/qualification'),
|
||||
meta: { title: '注册资格', icon: 'example', perms: ['qualification_manage'] }
|
||||
},
|
||||
{
|
||||
path: 'train',
|
||||
name: 'Train',
|
||||
component: () => import('@/views/employee/train'),
|
||||
meta: { title: '人员培训', icon: 'example', perms: ['Train_manage'] }
|
||||
},
|
||||
{
|
||||
path: 'train/create',
|
||||
name: 'TrainCreate',
|
||||
component: () => import('@/views/employee/traincreate'),
|
||||
meta: { title: '新增人员培训', icon: 'example', perms: ['Train_create'] },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: 'train/update',
|
||||
name: 'TrainUpdate',
|
||||
component: () => import('@/views/employee/trainupdate'),
|
||||
meta: { title: '修改人员培训', icon: 'example', perms: ['Train_update'] },
|
||||
hidden: true
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
@ -0,0 +1,146 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div style="margin-top:6px">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="handleCreate">新增</el-button>
|
||||
</div>
|
||||
<el-table v-loading="listLoading"
|
||||
:data="train.results"
|
||||
style="width: 100%;margin-top:10px;"
|
||||
border
|
||||
fit
|
||||
stripe
|
||||
highlight-current-row
|
||||
max-height="600">
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column align="header-center" label="培训主题">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="开始时间">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.start_time }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="结束时间">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.end_time }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="header-center" label="学时">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.hours }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="header-center" label="培训机构">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.train_org }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="培训讲师">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.teacher }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训内容">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.content }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训备注">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.remark }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="260px">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary"
|
||||
size="small"
|
||||
:disabled="!checkPermission(['implementrule_update'])"
|
||||
@click="handleUpdate(scope)">编辑</el-button>
|
||||
<el-button type="danger"
|
||||
size="small"
|
||||
:disabled="!checkPermission(['implementrule_delete'])"
|
||||
@click="handleDelete(scope)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="train.count>0"
|
||||
:total="train.count"
|
||||
:page.sync="listQuery.page"
|
||||
:limit.sync="listQuery.page_size"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getTrainList,deleteTrain,createTrain } from "@/api/train"
|
||||
import { getDictList } from "@/api/dict"
|
||||
import Pagination from "@/components/Pagination"
|
||||
import checkPermission from '@/utils/permission'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import { genTree } from '../../utils'
|
||||
export default {
|
||||
components: { Pagination, Treeselect },
|
||||
data() {
|
||||
return {
|
||||
train: {count:0},
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
page_size: 20
|
||||
},
|
||||
typeOptions: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.getTypeOptions()
|
||||
},
|
||||
methods: {
|
||||
checkPermission,
|
||||
getList() {
|
||||
this.listLoading = true;
|
||||
getTrainList(this.listQuery).then(response => {
|
||||
if (response.data) {
|
||||
this.train = response.data
|
||||
}
|
||||
this.listLoading = false
|
||||
});
|
||||
},
|
||||
getTypeOptions() {
|
||||
getDictList({type__code:'cert_field'}).then(res=>{
|
||||
this.typeOptions = genTree(res.data)
|
||||
})
|
||||
},
|
||||
resetFilter() {
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
page_size: 20
|
||||
}
|
||||
this.getList()
|
||||
},
|
||||
handleFilter() {
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
},
|
||||
handleCreate() {
|
||||
this.$router.push({path:"/employee/train/create"})
|
||||
},
|
||||
handleUpdate(scope) {
|
||||
this.$router.push({path:"/employee/train/update",query:{id:scope.row.id}})
|
||||
},
|
||||
handleDelete(scope) {
|
||||
deleteImplementRule(scope.row.id).then(res=>{
|
||||
this.$message.success('成功')
|
||||
this.getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
|
@ -0,0 +1,129 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训主题" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入培训主题" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训机构" prop="train_org">
|
||||
<el-input v-model="formData.train_org" placeholder="请输入培训机构" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开始日期" prop="start_time">
|
||||
<el-date-picker v-model="formData.start_time"
|
||||
type="date"
|
||||
placeholder="选择开始日期"
|
||||
format="yyyy 年 MM 月 dd 日"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结束日期" prop="end_time">
|
||||
<el-date-picker v-model="formData.end_time"
|
||||
type="date"
|
||||
placeholder="选择结束日期"
|
||||
format="yyyy 年 MM 月 dd 日"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="学时" prop="hours">
|
||||
<el-input v-model="formData.hours" placeholder="请输入学时" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训讲师" prop="teacher">
|
||||
<el-input v-model="formData.teacher" placeholder="请输入培训讲师" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训内容" prop="content">
|
||||
<el-input v-model="formData.teacher" placeholder="请输入培训内容" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训类型" prop="content">
|
||||
<el-select v-model="formData.train_type"
|
||||
placeholder="请选择机构类型"
|
||||
clearable
|
||||
:style="{width: '100%'}">
|
||||
<el-option v-for="(item, index) in type_Options"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
:disabled="item.disabled">
|
||||
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="培训备注" prop="remark">
|
||||
<el-input v-model="formData.remark" placeholder="请输入培训备注" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
const defaultForm = {
|
||||
|
||||
}
|
||||
export default {
|
||||
components: {},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
formData: Object.assign({}, defaultForm),
|
||||
rules: {},
|
||||
genderOptions:[
|
||||
{'value':'男','label':'男'},
|
||||
{'value':'女','label':'女'}
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
created() {},
|
||||
mounted() {},
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs['elForm'].resetFields()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,109 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="编号" prop="code">
|
||||
<el-input v-model="formData.code" placeholder="请输入编号" clearable :style="{width: '100%'}"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="易记码" prop="remember_code">
|
||||
<el-input v-model="formData.remember_code" placeholder="请输入易记码" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别" prop="gender">
|
||||
<el-select v-model="formData.gender" placeholder="请选择性别" clearable :style="{width: '100%'}" >
|
||||
<el-option
|
||||
v-for="item in genderOptions"
|
||||
:key="item.key"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="座机号" prop="landline">
|
||||
<el-input v-model="formData.landline" placeholder="请输入座机" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="formData.email" placeholder="请输入邮箱" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职称" prop="gender">
|
||||
<el-select v-model="formData.pro_title" placeholder="请选择职称" clearable :style="{width: '100%'}" >
|
||||
<el-option
|
||||
v-for="item in titleOptions"
|
||||
:key="item.key"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="座机号" prop="landline">
|
||||
<el-input v-model="formData.landline" placeholder="请输入座机" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="formData.email" placeholder="请输入邮箱" clearable :style="{width: '100%'}">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
const defaultForm = {
|
||||
|
||||
}
|
||||
export default {
|
||||
components: {},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
formData: Object.assign({}, defaultForm),
|
||||
rules: {},
|
||||
genderOptions:[
|
||||
{'value':'男','label':'男'},
|
||||
{'value':'女','label':'女'}
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
created() {},
|
||||
mounted() {},
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs['elForm'].resetFields()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -144,6 +144,10 @@ class Train(CommonAModel):
|
|||
train_org = models.CharField('培训机构', max_length=200)
|
||||
teacher = models.CharField('主讲人', max_length=200)
|
||||
content = models.TextField('培训内容')
|
||||
rain_address = models.CharField('地点机构', max_length=500)
|
||||
examine_Type = models.CharField('考核方式', max_length=200)
|
||||
train_type =models.ForeignKey(
|
||||
Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='培训类型', related_name='train_level')
|
||||
remark = models.TextField('备注')
|
||||
employees = models.ManyToManyField(Employee, verbose_name='参加人员', related_name='train_employees')
|
||||
|
||||
|
|
Loading…
Reference in New Issue