renyuanpeixun

This commit is contained in:
shilixia 2020-07-24 09:07:44 +08:00
parent 322e3ee0da
commit 93c48b3c6b
5 changed files with 306 additions and 184 deletions

View File

@ -7,7 +7,12 @@ export function getTrainList(query) {
params: query params: query
}) })
} }
export function getTrain(id) {
return request({
url: `/employee/train/${id}/`,
method: 'get'
})
}
export function createTrain(data) { export function createTrain(data) {
return request({ return request({
url: '/employee/train/', url: '/employee/train/',

View File

@ -18,21 +18,19 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="开始日期" prop="start_time"> <el-form-item label="开始日期" prop="start_time">
<el-date-picker v-model="formData.start_time" <el-date-picker v-model="formData.start_time"
type="date" type="datetime"
placeholder="选择开始日期" placeholder="选择日期时间">
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="结束日期" prop="end_time"> <el-form-item label="结束日期" prop="end_time">
<el-date-picker v-model="formData.end_time" <el-date-picker v-model="formData.end_time"
type="date" type="datetime"
placeholder="选择结束日期" placeholder="选择日期时间">
format="yyyy 年 MM 月 dd 日"
value-format="yyyy-MM-dd">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -55,11 +53,15 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="选择学员" prop="hours"> <el-form-item label="选择学员" prop="employees">
<el-input v-model="formData.employees" readonly="readonly" clearable :style="{width: '80%'}">
<router-link to="/employee/user/select"> </el-input>
<span class="spanfour">link跳转</span> <el-button type="text" @click="dialogVisible = true">选择</el-button>
</router-link> <el-dialog title="" :visible.sync="dialogVisible">
<Userselet @closeMoule="closeMoule"></Userselet>
</el-dialog>
<SpeciesAnalyzed @closeMoule="closeMoule"></SpeciesAnalyzed>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -76,7 +78,7 @@
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="培训内容" prop="teacher"> <el-form-item label="培训内容" prop="teacher">
<el-input type="textarea" :rows="2" v-model="formData.teacher" <el-input type="textarea" :rows="2" v-model="formData.content"
placeholder="请输入培训内容" placeholder="请输入培训内容"
clearable clearable
:style="{width: '100%'}"></el-input> :style="{width: '100%'}"></el-input>
@ -118,6 +120,7 @@
</template> </template>
<script> <script>
import { createTrain} from "@/api/train";
import { getUserList} from "@/api/user"; import { getUserList} from "@/api/user";
import { getDictList } from "@/api/dict"; import { getDictList } from "@/api/dict";
import { genTree } from "@/utils"; import { genTree } from "@/utils";
@ -126,64 +129,71 @@
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { upUrl, upHeaders } from "@/api/file"; import { upUrl, upHeaders } from "@/api/file";
import Userselet from '@/views/employee/userselet';
const defaultForm = { const defaultForm = {
} }
export default { export default {
components: {Treeselect}, components: {Treeselect,Userselet},
props: [], props: [],
data() { data() {
return { return {
dialogVisible: false,
formData: Object.assign({}, defaultForm), formData: Object.assign({}, defaultForm),
rules: {}, rules: {},
type_Options: [ type_Options: [
], ],
} }
}, },
computed: {}, computed: {},
watch: {}, watch: {},
created() { created() {
this.getTypeOptions(), this.getTypeOptions()
this.getOrgAll(),
this. getRoleAll()
}, },
mounted() {}, mounted() {
this.list = this.$route.query.employeelist;
this.formData.employees = this.$route.query.employeelist;
console.log( this.list)
},
methods: { methods: {
submitForm() {
this.$refs['elForm'].validate(valid => {
if (!valid) return
// TODO 提交表单
})
},
getOrgAll() {
this.treeLoding = true;
getOrgAll().then(response => {
this.orgData = genTree(response.data);
this.treeLoding = false;
});
},
getRoleAll() {
getRoleAll().then(response => {
this.roles = genTree(response.data);
});
},
getTypeOptions() { getTypeOptions() {
getDictList({ type__code: "train_type" }).then(response => { getDictList({ type__code: "train_type" }).then(response => {
this.type_Options = genTree(response.data); this.type_Options = genTree(response.data);
}); });
},
closeMoule(e) {
this.formData.employees = e,
this.dialogVisible = false
}
,
submitForm() {
this.$refs["elForm"].validate(valid => {
if (!valid) return;
// TODO 提交表单
createTrain(this.formData).then(response => {
this.$message({
type: 'success',
message: '成功!'
})
this.$router.go(-1);
});
});
}, },
resetForm() { resetForm() {
this.$refs['elForm'].resetFields() this.$refs['elForm'].resetFields()
}, },

View File

@ -1,109 +1,209 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px"> <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="编号" prop="code"> <el-form-item label="培训主题" prop="name">
<el-input v-model="formData.code" placeholder="请输入编号" clearable :style="{width: '100%'}"></el-input> <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="datetime"
placeholder="选择日期时间">
</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="datetime"
placeholder="选择日期时间">
</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="kaohe_type">
<el-input v-model="formData.kaohe_type" 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="employees">
<el-input v-model="formData.employees" readonly="readonly" clearable :style="{width: '80%'}">
</el-input>
<el-button type="text" @click="dialogVisible = true">选择</el-button>
<el-dialog title="" :visible.sync="dialogVisible">
<Userselet @closeMoule="closeMoule"></Userselet>
</el-dialog>
<SpeciesAnalyzed @closeMoule="closeMoule"></SpeciesAnalyzed>
</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="24">
<el-form-item label="培训内容" prop="teacher">
<el-input type="textarea" :rows="2" v-model="formData.content"
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="train_type">
<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-item>
</el-col> </el-form>
<el-col :span="12"> </div>
<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> </template>
<script> <script>
const defaultForm = {
import { createTrain,getTrain} from "@/api/train";
} import { getDictList } from "@/api/dict";
export default { import { genTree } from "@/utils";
components: {}, import { getOrgAll } from "@/api/org"
props: [], import { getRoleAll } from "@/api/role"
data() { import Treeselect from "@riophae/vue-treeselect";
return { import "@riophae/vue-treeselect/dist/vue-treeselect.css";
formData: Object.assign({}, defaultForm), import Userselet from '@/views/employee/userselet';
rules: {}, const defaultForm = {
genderOptions:[
{'value':'','label':''}, }
{'value':'','label':''} export default {
] components: { Treeselect, Userselet },
} props: [],
}, data() {
computed: {}, return {
watch: {},
created() {}, dialogVisible: false,
mounted() {}, formData: Object.assign({}, defaultForm),
methods: { rules: {},
submitForm() { type_Options: [
this.$refs['elForm'].validate(valid => { ],
if (!valid) return }
// TODO 提交表单 },
computed: {},
watch: {},
created() {
this.formData.id = this.$route.query.id, //接收参数
this.getData(),
this.getTypeOptions()
},
mounted() {
this.list = this.$route.query.employeelist;
this.formData.employees = this.$route.query.employeelist;
console.log(this.list)
},
methods: {
getData() {
getTrain(this.formData.id).then(response => {
this.formData = response.data
}) })
}, },
resetForm() {
this.$refs['elForm'].resetFields() getTypeOptions() {
}, getDictList({ type__code: "train_type" }).then(response => {
this.type_Options = genTree(response.data);
});
},
closeMoule(e) {
this.formData.employees = e,
this.dialogVisible = false
}
,
submitForm() {
this.$refs["elForm"].validate(valid => {
if (!valid) return;
// TODO 提交表单
createTrain(this.formData).then(response => {
this.$message({
type: 'success',
message: '成功!'
})
this.$router.go(-1);
});
});
},
resetForm() {
this.$refs['elForm'].resetFields()
},
}
} }
} </script>
</script>

View File

@ -23,7 +23,9 @@
</span> </span>
</el-tree> </el-tree>
</el-col> </el-col>
<el-col :span="9">
<el-col :span="13">
<el-table ref="staffTable" <el-table ref="staffTable"
v-loading="listLoading" v-loading="listLoading"
:key="tableKey" :key="tableKey"
@ -35,13 +37,18 @@
<el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column> <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column>
<el-table-column label="姓名" align="center"> <el-table-column label="姓名" align="center">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span>{{ row.name }}</span> <span>{{ row.user.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="邮箱" align="center"> <el-table-column label="职务" align="center">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span>{{ row.email }}</span> <span>{{ row.user.position }}</span>
</template>
</el-table-column>
<el-table-column label="部门" align="center">
<template slot-scope="{row}">
<span>{{ row.user.dept_name }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -59,7 +66,7 @@
circle circle
style="margin-left: 0;margin-top: 10px;"></el-button> style="margin-left: 0;margin-top: 10px;"></el-button>
</el-col> </el-col>
<el-col :span="9"> <el-col :span="5">
<el-table ref="selectedStaffTable" <el-table ref="selectedStaffTable"
v-loading="listLoading" v-loading="listLoading"
:key="tableKey" :key="tableKey"
@ -71,26 +78,10 @@
<el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column> <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column>
<el-table-column label="姓名" align="center"> <el-table-column label="姓名" align="center">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span>{{ row.name }}</span> <span>{{ row.user.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="邮箱" align="center">
<template slot-scope="{row}">
<span>{{ row.email }}</span>
</template>
</el-table-column>
<!--<el-table-column label="类型" align="center">
<template slot-scope="{row}">
<el-select class="filter-item" placeholder="请选择" v-model="row.staffTypeId">
<el-option v-for="item in staffOptions"
:key="item.key"
:label="item.display_name"
:value="item.key"></el-option>
</el-select>
</template>
</el-table-column>-->
</el-table> </el-table>
</el-col> </el-col>
</el-row> </el-row>
@ -101,7 +92,8 @@
</div> </div>
</template> </template>
<script> <script>
import checkPermission from '@/utils/permission' import { getEmployeeList, deleteEmployee } from "@/api/employee"
import checkPermission from '@/utils/permission'
import { getUserList} from "@/api/user" import { getUserList} from "@/api/user"
import { getDictList } from "@/api/dict" import { getDictList } from "@/api/dict"
import { genTree } from "@/utils" import { genTree } from "@/utils"
@ -119,6 +111,9 @@ export default {
props: [], props: [],
data() { data() {
return { return {
dialogVisible: false,
listLoading: true, listLoading: true,
staffTemp: { staffTemp: {
name: "", name: "",
@ -148,10 +143,12 @@ data() {
], ],
} }
}, },
watch: { watch: {
filterText(val) { filterText(val) {
this.$refs.tree.filter(val); this.$refs.tree.filter(val);
} },
}, },
created() { created() {
this.getStaffList(), this.getStaffList(),
@ -180,7 +177,7 @@ methods: {
this.getStaffList(); this.getStaffList();
}, },
getStaffList() { getStaffList() {
getUserList(this.listQuery).then(response => { getEmployeeList(this.listQuery).then(response => {
this.staffList = response.data.results; this.staffList = response.data.results;
@ -264,10 +261,25 @@ methods: {
}, },
// 提交 // 提交
modifyStaff() { modifyStaff() {
console.log(this.selectedStaffList[0].name) console.log(this.selectedStaffList);
var userlist = [];
var userNameList = [];
for (let i = 0; i < this.selectedStaffList.length; i++) {
userlist[i]=this.selectedStaffList[i].id
userNameList[i]= this.selectedStaffList[i].user.name
}
this.$emit('closeMoule',userlist)
this.dialogVisible = false
} }
} }

View File

@ -422,12 +422,7 @@
code: [{ required: true, message: '请输入工厂编号', trigger: 'blur' }] code: [{ required: true, message: '请输入工厂编号', trigger: 'blur' }]
}, },
field101Options: [], field101Options: [],
field101Props: {
"multiple": false,
"label": "name",
"value": "code",
"children": "children"
},
}; };
}, },