|
@@ -0,0 +1,213 @@
|
|
|
|
+<template>
|
|
|
|
+ <div id="index">
|
|
|
|
+ <detail-frame :title="mainTitle">
|
|
|
|
+ <data-form :data="form" :fields="fields" :rules="rules" @save="handleSave">
|
|
|
|
+ <template #options="{item}">
|
|
|
|
+ <template v-if="item.model === 'department'">
|
|
|
|
+ <el-option v-for="(item, index) in deptList" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-if="item.model === 'politics'">
|
|
|
|
+ <el-option v-for="(i, index) in politicsList" :key="index" :label="i.name" :value="i.name"></el-option>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-if="item.model === 'education'">
|
|
|
|
+ <el-option v-for="(i, index) in educationList" :key="index" :label="i.name" :value="i.name"></el-option>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-if="item.model === 'degree'">
|
|
|
|
+ <el-option v-for="(i, index) in degreeList" :key="index" :label="i.name" :value="i.name"></el-option>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-if="item.model === 'nation'">
|
|
|
|
+ <el-option v-for="(i, index) in nationList" :key="index" :label="i.name" :value="i.name"></el-option>
|
|
|
|
+ </template>
|
|
|
|
+ </template>
|
|
|
|
+ <template #radios="{item}">
|
|
|
|
+ <template v-if="item.model === 'gender'">
|
|
|
|
+ <el-radio label="男">男</el-radio>
|
|
|
|
+ <el-radio label="女">女</el-radio>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-if="item.model === 'islyteacher'">
|
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
|
+ <el-radio label="0">否</el-radio>
|
|
|
|
+ </template>
|
|
|
|
+ </template>
|
|
|
|
+ <template #custom="{item, form}">
|
|
|
|
+ <template v-if="item.model == 'eduexperience'">
|
|
|
|
+ <el-button type="primary" size="mini" @click="perDialog = true" style="margin:10px 0;">添加</el-button>
|
|
|
|
+ <el-table :data="form.eduexperience" style="width: 100%" border>
|
|
|
|
+ <el-table-column prop="date" label="时间" align="center"> </el-table-column>
|
|
|
|
+ <el-table-column prop="content" label="学校名称&培训内容" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
|
+ <el-table-column prop="card" label="学历&培训证书" align="center" :show-overflow-tooltip="true"> </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </template>
|
|
|
|
+ </template>
|
|
|
|
+ </data-form>
|
|
|
|
+ </detail-frame>
|
|
|
|
+ <el-dialog title="教育培训经历" :visible.sync="perDialog" center>
|
|
|
|
+ <el-form :model="experienceForm" label-position="left" label-width="auto" :rules="perRules" ref="experienceForm">
|
|
|
|
+ <el-form-item label="培训时间">
|
|
|
|
+ <el-date-picker v-model="experienceForm.date" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="请选择"> </el-date-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="学校名称&培训内容">
|
|
|
|
+ <el-input type="textarea" :rows="2" placeholder="请输入学校名称&培训内容" v-model="experienceForm.content"> </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="学历&培训证书">
|
|
|
|
+ <el-input type="textarea" :rows="2" placeholder="请输入学历&培训证书" v-model="experienceForm.card"> </el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <template #footer>
|
|
|
|
+ <el-button @click="closeAttend()">取 消</el-button>
|
|
|
|
+ <el-button type="primary" @click="proAttend">确 定</el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ </div>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
|
+import dataForm from '@frame/components/form';
|
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
|
+const { mapActions: director } = createNamespacedHelpers('director');
|
|
|
|
+const { mapActions: mapNation } = createNamespacedHelpers('nation');
|
|
|
|
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
|
|
|
|
+export default {
|
|
|
|
+ metaInfo: { title: '教师信息管理' },
|
|
|
|
+ name: 'index',
|
|
|
|
+ props: {},
|
|
|
|
+ components: {
|
|
|
|
+ detailFrame,
|
|
|
|
+ dataForm,
|
|
|
|
+ },
|
|
|
|
+ data: function() {
|
|
|
|
+ return {
|
|
|
|
+ form: {
|
|
|
|
+ eduexperience: [],
|
|
|
|
+ },
|
|
|
|
+ fields: [
|
|
|
|
+ { label: '姓名', required: true, model: 'name' },
|
|
|
|
+ { label: '性别', model: 'gender', type: `radio` },
|
|
|
|
+ { label: '所属部门', required: false, model: 'department', type: 'select' },
|
|
|
|
+ { label: '手机号', required: true, model: 'phone', options: { maxLength: 11, minLength: 11 } },
|
|
|
|
+ { label: '民族', model: 'nation', type: `select` },
|
|
|
|
+ { label: '固定电话', required: false, model: 'mobile' },
|
|
|
|
+ { label: '身份证号', required: false, model: 'idnumber', options: { maxLength: 18, minLength: 18 } },
|
|
|
|
+ { label: '政治面貌', model: 'politics', type: `select` },
|
|
|
|
+ { label: '工作地点', required: false, model: 'jobaddress' },
|
|
|
|
+ { label: '职务', required: false, model: 'job' },
|
|
|
|
+ { label: '职称', required: false, model: 'protitle' },
|
|
|
|
+ { label: '最后学历', model: 'education', type: `select` },
|
|
|
|
+ { label: '最后学位', model: 'degree', type: `select` },
|
|
|
|
+ { label: 'QQ', required: false, model: 'qq' },
|
|
|
|
+ { label: '年龄', required: false, model: 'age' },
|
|
|
|
+ { label: '教育培训经历', required: false, model: 'eduexperience', custom: true },
|
|
|
|
+ { label: '是/否是礼仪老师', model: 'islyteacher', type: `radio` },
|
|
|
|
+ ],
|
|
|
|
+ rules: {},
|
|
|
|
+ politicsList: [
|
|
|
|
+ { code: '01', name: '中国共产党党员' },
|
|
|
|
+ { code: '02', name: '中国共产党预备党员' },
|
|
|
|
+ { code: '03', name: '中国共产主义青年团团员' },
|
|
|
|
+ { code: '04', name: '中国国民党革命委员会会员' },
|
|
|
|
+ { code: '05', name: '中国民主同盟盟员' },
|
|
|
|
+ { code: '06', name: '中国民主建国会会员' },
|
|
|
|
+ { code: '07', name: '中国民主促进会会员' },
|
|
|
|
+ { code: '08', name: '中国农工民主党党员' },
|
|
|
|
+ { code: '09', name: '中国致公党党员' },
|
|
|
|
+ { code: '10', name: '九三学社社员' },
|
|
|
|
+ { code: '11', name: '台湾民主自治同盟盟员' },
|
|
|
|
+ { code: '12', name: '无党派民主人士' },
|
|
|
|
+ { code: '13', name: '群众' },
|
|
|
|
+ { code: '14', name: '其他' },
|
|
|
|
+ ],
|
|
|
|
+ educationList: [
|
|
|
|
+ { code: '01', name: '博士生毕业' },
|
|
|
|
+ { code: '03', name: '博士生结业' },
|
|
|
|
+ { code: '09', name: '博士生肆业' },
|
|
|
|
+ { code: '11', name: '硕士生毕业' },
|
|
|
|
+ { code: '13', name: '硕士生结业' },
|
|
|
|
+ { code: '19', name: '硕士生肆业' },
|
|
|
|
+ { code: '21', name: '研班毕业' },
|
|
|
|
+ { code: '25', name: '双学位毕业' },
|
|
|
|
+ { code: '31', name: '本科生毕业' },
|
|
|
|
+ { code: '33', name: '本科生结业' },
|
|
|
|
+ { code: '39', name: '本科生肆业' },
|
|
|
|
+ { code: '41', name: '专科生毕业' },
|
|
|
|
+ { code: '43', name: '专科生结业' },
|
|
|
|
+ { code: '49', name: '专科生肆业' },
|
|
|
|
+ { code: '51', name: '中专生毕业' },
|
|
|
|
+ { code: '53', name: '中专生结业' },
|
|
|
|
+ { code: '59', name: '中专生肆业' },
|
|
|
|
+ { code: '61', name: '高职毕业' },
|
|
|
|
+ { code: '63', name: '高职结业' },
|
|
|
|
+ ],
|
|
|
|
+ degreeList: [{ name: '博士学位' }, { name: '硕士学位' }, { name: '学士学位' }],
|
|
|
|
+ nationList: [],
|
|
|
|
+ // 部门
|
|
|
|
+ deptList: [],
|
|
|
|
+ perDialog: false,
|
|
|
|
+ experienceForm: {},
|
|
|
|
+ perRules: {},
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ this.getOtherList();
|
|
|
|
+ this.search();
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ ...director(['fetch', 'update']),
|
|
|
|
+ ...mapNation({ nation: 'query' }),
|
|
|
|
+ ...mapDept({ dept: 'query' }),
|
|
|
|
+ async search() {
|
|
|
|
+ let userid = this.user.userid;
|
|
|
|
+ let res = await this.fetch(userid);
|
|
|
|
+ if (res.errcode === 0) {
|
|
|
|
+ this.$set(this, `form`, res.data);
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 保存
|
|
|
|
+ async handleSave({ data }) {
|
|
|
|
+ let res = await this.update(data);
|
|
|
|
+ if (res.errcode === 0) {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: '修改信息成功',
|
|
|
|
+ type: 'success',
|
|
|
|
+ });
|
|
|
|
+ this.search();
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ async getOtherList() {
|
|
|
|
+ let res;
|
|
|
|
+ res = await this.dept();
|
|
|
|
+ if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
|
|
|
|
+ res = await this.nation();
|
|
|
|
+ if (this.$checkRes(res)) this.$set(this, `nationList`, res.data);
|
|
|
|
+ },
|
|
|
|
+ // 教育经历
|
|
|
|
+ proAttend() {
|
|
|
|
+ console.log(this.experienceForm);
|
|
|
|
+ this.form.eduexperience.push(this.experienceForm);
|
|
|
|
+ this.experienceForm = {};
|
|
|
|
+ this.perDialog = false;
|
|
|
|
+ },
|
|
|
|
+ // 取消
|
|
|
|
+ closeAttend() {
|
|
|
|
+ this.experienceForm = {};
|
|
|
|
+ this.perDialog = false;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ ...mapState(['user']),
|
|
|
|
+ mainTitle() {
|
|
|
|
+ let meta = this.$route.meta;
|
|
|
|
+ let main = meta.title || '';
|
|
|
|
+ let sub = meta.sub || '';
|
|
|
|
+ return `${main}${sub}`;
|
|
|
|
+ },
|
|
|
|
+ keyWord() {
|
|
|
|
+ let meta = this.$route.meta;
|
|
|
|
+ let main = meta.title || '';
|
|
|
|
+ return main;
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="less" scoped></style>
|