This commit is contained in:
shilixia 2020-07-14 09:25:59 +08:00
parent de204dffca
commit bd1255c47b
6 changed files with 417 additions and 9 deletions

View File

@ -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'
})
}
}

View File

@ -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
},
]
},
{

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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')