|
@@ -0,0 +1,209 @@
|
|
|
+<template>
|
|
|
+ <div id="detail">
|
|
|
+ <detail-frame :title="mainTitle" returns="/director/index">
|
|
|
+ <data-form :data="info" :fields="fields" :rules="rules" @save="handleSave" :isNew="isNew">
|
|
|
+ <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 === 'nation'">
|
|
|
+ <el-option v-for="(item, index) in nationList" :key="index" :label="item.name" :value="item.name"></el-option>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.model === 'politics'">
|
|
|
+ <el-option v-for="(item, index) in politicsList" :key="index" :label="item.name" :value="item.name"></el-option>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.model === 'education'">
|
|
|
+ <el-option v-for="(item, index) in educationList" :key="index" :label="item.name" :value="item.name"></el-option>
|
|
|
+ </template>
|
|
|
+ <template v-if="item.model === 'degree'">
|
|
|
+ <el-option v-for="(item, index) in degreeList" :key="index" :label="item.name" :value="item.name"></el-option>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ <template #custom="{item, form}">
|
|
|
+ <template v-if="item.model == 'eduexperience'">
|
|
|
+ <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>
|
|
|
+ <template #radios="{item}">
|
|
|
+ <template v-if="item.model === 'gender'">
|
|
|
+ <el-radio label="男" value="男"></el-radio>
|
|
|
+ <el-radio label="女" value="女"></el-radio>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="item.model === 'status'">
|
|
|
+ <el-radio label="待审核" value="0"></el-radio>
|
|
|
+ <el-radio label="审核通过" value="1"></el-radio>
|
|
|
+ <el-radio label="审核拒绝" value="2"></el-radio>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
+ <el-radio label="0">否</el-radio>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </data-form>
|
|
|
+ </detail-frame>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
+import dataForm from '@frame/components/form';
|
|
|
+import { createNamespacedHelpers } from 'vuex';
|
|
|
+const { mapActions } = createNamespacedHelpers('director');
|
|
|
+const { mapActions: mapDept } = createNamespacedHelpers('dept');
|
|
|
+const { mapActions: nation } = createNamespacedHelpers('nation');
|
|
|
+
|
|
|
+export default {
|
|
|
+ metaInfo: { title: '班主任信息' },
|
|
|
+ name: 'detail',
|
|
|
+ props: {},
|
|
|
+ components: {
|
|
|
+ detailFrame,
|
|
|
+ dataForm,
|
|
|
+ },
|
|
|
+ data: () => ({
|
|
|
+ info: {},
|
|
|
+ fields: [
|
|
|
+ { label: '姓名', required: true, model: 'name', tip: '请输入姓名' },
|
|
|
+ { label: '性别', required: true, model: 'gender', type: `radio` },
|
|
|
+ { label: '民族', required: true, model: 'nation', type: 'select' },
|
|
|
+ { label: '手机', required: true, model: 'phone', options: { maxlength: 11, minlength: 11 }, tip: '请输入11位电话号码' },
|
|
|
+ { label: '固定电话', required: true, model: 'mobile', tip: '请输入固定电话' },
|
|
|
+ { label: '身份证号', required: true, model: 'idnumber', tip: '请输入身份证号' },
|
|
|
+ { label: '政治面貌', required: true, model: 'politics', type: 'select' },
|
|
|
+ { label: '工作单位', required: true, model: 'jobaddress', tip: '请输入工作单位' },
|
|
|
+ { label: '所属部门', required: true, model: 'department', type: 'select' },
|
|
|
+ { label: '职务', required: true, model: 'job', tip: '请输入职务' },
|
|
|
+ { label: '职称', required: true, model: 'protitle', tip: '请输入职称' },
|
|
|
+ { label: '最后学历', required: true, model: 'education', type: 'select' },
|
|
|
+ { label: '最后学位', required: true, model: 'degree', type: 'select' },
|
|
|
+ { label: 'QQ', required: true, model: 'qq', tip: '请输入qq' },
|
|
|
+ { label: '礼仪课教师', required: true, model: 'islyteacher', type: 'radio' },
|
|
|
+ { label: '教育培训经历', model: 'eduexperience', custom: true },
|
|
|
+ { label: '状态', required: true, model: 'status', type: 'radio' },
|
|
|
+ ],
|
|
|
+ rules: {
|
|
|
+ // name: [{ required: true, message: '请输入姓名' }],
|
|
|
+ // department: [{ required: true, message: '请选择部门' }],
|
|
|
+ // gender: [{ required: true, message: '请选择性别' }],
|
|
|
+ // phone: [
|
|
|
+ // { required: true, message: '请输入电话' },
|
|
|
+ // { min: 11, max: 11, message: '请输入11位电话号码', trigger: 'blur' },
|
|
|
+ // ],
|
|
|
+ // birthday: [{ required: true, message: '请选择出生日期' }],
|
|
|
+ // age: [{ required: true, message: '请输入年龄' }],
|
|
|
+ // islyteacher: [{ required: true, message: '请选择是否是礼仪课教师' }],
|
|
|
+ },
|
|
|
+ // 部门
|
|
|
+ deptList: [],
|
|
|
+ // 民族
|
|
|
+ nationList: [],
|
|
|
+ // 政治面貌
|
|
|
+ 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: '学士学位' }],
|
|
|
+ }),
|
|
|
+ created() {
|
|
|
+ this.otherList();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ...mapActions(['fetch', 'create', 'update']),
|
|
|
+ ...mapDept({ dept: 'query' }),
|
|
|
+ ...nation({ nationQuery: 'query' }),
|
|
|
+ async search() {
|
|
|
+ const res = await this.fetch(this.id);
|
|
|
+ if (this.$checkRes(res)) this.$set(this, `info`, res.data);
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ async otherList() {
|
|
|
+ const res = await this.dept();
|
|
|
+ if (this.$checkRes(res)) this.$set(this, `deptList`, res.data);
|
|
|
+ const arr = await this.nationQuery();
|
|
|
+ if (this.$checkRes(arr)) this.$set(this, `nationList`, arr.data);
|
|
|
+ },
|
|
|
+ async handleSave({ isNew, data }) {
|
|
|
+ let res;
|
|
|
+ let msg;
|
|
|
+ if (isNew) {
|
|
|
+ data.openid = new Date().getTime();
|
|
|
+ res = await this.create(data);
|
|
|
+ msg = `${this.keyWord}添加成功`;
|
|
|
+ } else {
|
|
|
+ res = await this.update(data);
|
|
|
+ msg = `${this.keyWord}修改成功`;
|
|
|
+ }
|
|
|
+ if (this.$checkRes(res, msg)) this.$router.push({ path: '/director/index' });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ id() {
|
|
|
+ return this.$route.query.id;
|
|
|
+ },
|
|
|
+ isNew() {
|
|
|
+ return this.$route.query.id ? false : true;
|
|
|
+ },
|
|
|
+ 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;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ isNew: {
|
|
|
+ immediate: true,
|
|
|
+ handler(val) {
|
|
|
+ if (val) this.loading = false;
|
|
|
+ else this.search();
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped></style>
|