sunlupeng 1 ano atrás
pai
commit
8d66774059

+ 1 - 1
src/router/index.js

@@ -185,7 +185,7 @@ export const constantRoutes = [
     component: Layout,
     hidden: true,
     children: [{
-        path: 'type/data/:dictId(\\d+)',
+        path: 'historyData/:Id(\\d+)',
         component: (resolve) => require(['@/views/presonnel/employee/data'], resolve),
         name: 'EmployeeHistoryData',
         meta: {title: '员工信息修改记录', icon: '', activeMenu: '/presonnel/employee'}

+ 14 - 44
src/views/presonnel/employee/data.vue

@@ -1,55 +1,25 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="字典名称" prop="dictType">
-        <el-select v-model="queryParams.dictType">
-          <el-option v-for="item in typeOptions" :key="item.id" :label="item.name" :value="item.type"/>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="字典标签" prop="label">
-        <el-input v-model="queryParams.label" placeholder="请输入字典标签" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="数据状态" clearable>
-          <el-option v-for="dict in statusDictDatas" :key="dict.value" :label="dict.label" :value="dict.value"/>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-                   v-hasPermi="['system:dict:create']">新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                   v-hasPermi="['system:dict:export']">导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
     <el-table v-loading="loading" :data="dataList" >
-      <el-table-column label="字典编码" align="center" prop="id" />
-      <el-table-column label="字典标签" align="center" prop="label" />
-      <el-table-column label="字典键值" align="center" prop="value" />
-      <el-table-column label="字典排序" align="center" prop="sort" />
-      <el-table-column label="状态" align="center" prop="status">
+      <el-table-column label="员工ID" align="center" prop="id" />
+      <el-table-column label="姓名" align="center" :show-overflow-tooltip="true">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
+          <router-link :to="'/employee/historyData/' + scope.row.id" class="link-type">
+            <span>{{ scope.row.name }}</span>
+          </router-link>
         </template>
       </el-table-column>
-      <el-table-column label="颜色类型" align="center" prop="colorType" />
-      <el-table-column label="CSS Class" align="center" prop="cssClass" />
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column label="部门" align="center" prop="deptName" />
+      <el-table-column label="职位" align="center" prop="position" />
+      <el-table-column label="员工编号" align="center" prop="employeeNumber" />
+      <el-table-column label="入职时间" align="center" prop="entryDate" />
+      
+      <el-table-column label="员工状态" align="center" prop="employeeStatus">
         <template v-slot="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
+          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.employeeStatus"/>
         </template>
       </el-table-column>
+      <el-table-column label="当前可用年假" align="center" prop="remainingAnnualLeave"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template v-slot="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
@@ -183,7 +153,7 @@ export default {
     };
   },
   created() {
-    const dictId = this.$route.params && this.$route.params.dictId;
+    const dictId = this.$route.params && this.$route.params.Id;
     this.getType(dictId);
     this.getTypeList();
   },

+ 221 - 48
src/views/presonnel/employee/index.vue

@@ -1,21 +1,21 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="字典名称" prop="name">
+      <el-form-item label="员工名称" prop="name">
         <el-input v-model="queryParams.name" placeholder="请输入字典名称" clearable style="width: 240px" @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="字典类型" prop="type">
-        <el-input v-model="queryParams.type" placeholder="请输入字典类型" clearable style="width: 240px" @keyup.enter.native="handleQuery"/>
+      <el-form-item label="员工编号" prop="employeeNumber">
+        <el-input v-model="queryParams.employeeNumber" placeholder="请输入字典类型" clearable style="width: 240px" @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="字典状态" clearable style="width: 240px">
+      <el-form-item label="员工状态" prop="employeeStatus">
+        <el-select v-model="queryParams.employeeStatus" placeholder="员工状态" clearable style="width: 240px">
           <el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
         </el-select>
       </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
+      <!-- <el-form-item label="创建时间" prop="createTime">
         <el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
                         range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
         <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@@ -35,26 +35,25 @@
     </el-row>
 
     <el-table v-loading="loading" :data="typeList">
-      <el-table-column label="字典编号" align="center" prop="id" />
-      <el-table-column label="字典名称" align="center" prop="name" :show-overflow-tooltip="true" />
-      <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
+      <el-table-column label="员工ID" align="center" prop="id" />
+      <el-table-column label="姓名" align="center" :show-overflow-tooltip="true">
         <template v-slot="scope">
-          <router-link :to="'/dict/type/data/' + scope.row.id" class="link-type">
-            <span>{{ scope.row.type }}</span>
+          <router-link :to="'/employee/historyData/' + scope.row.id" class="link-type">
+            <span>{{ scope.row.name }}</span>
           </router-link>
         </template>
       </el-table-column>
-      <el-table-column label="状态" align="center" prop="status">
-        <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
-        </template>
-      </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+      <el-table-column label="部门" align="center" prop="deptName" />
+      <el-table-column label="职位" align="center" prop="position" />
+      <el-table-column label="员工编号" align="center" prop="employeeNumber" />
+      <el-table-column label="入职时间" align="center" prop="entryDate" />
+      
+      <el-table-column label="员工状态" align="center" prop="employeeStatus">
         <template v-slot="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
+          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.employeeStatus"/>
         </template>
       </el-table-column>
+      <el-table-column label="当前可用年假" align="center" prop="remainingAnnualLeave"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template v-slot="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
@@ -68,23 +67,135 @@
     <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                 @pagination="getList"/>
 
-    <!-- 添加或修改参数配置对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+     <!-- 添加或修改部门对话框 -->
+     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="字典名称" prop="name">
-          <el-input v-model="form.name" placeholder="请输入字典名称" />
-        </el-form-item>
-        <el-form-item label="字典类型" prop="type">
-          <el-input :disabled="typeof form.id !== 'undefined'" v-model="form.type" placeholder="请输入字典类型" />
-        </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-radio-group v-model="form.status">
-            <el-radio v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="parseInt(dict.value)">{{dict.label}}</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input>
-        </el-form-item>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="员工姓名" prop="name">
+              <el-input v-model="form.name" placeholder="请输入姓名" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="员工ID">
+              <el-input v-model="form.id" placeholder="请输入员工ID" />
+            </el-form-item>
+          </el-col>
+          
+          <el-col :span="24">
+            <el-form-item label="员工部门" prop="deptId">
+              <treeselect :default-expand-level="1" v-model="form.deptId" :options="deptOptions" :normalizer="normalizer" placeholder="选择部门" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="员工职位" prop="position">
+              <el-input v-model="form.position" placeholder="请选择职位" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="员工编号" prop="employeeNumber">
+              <el-input v-model="form.employeeNumber" placeholder="请输入员工编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="入职时间" prop="entryDate">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.entryDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="试用期期" prop="probationEndDate">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.probationEndDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+         
+          <el-col :span="12">
+            <el-form-item label="员工状态" prop="employeeStatus">
+              <el-select v-model="form.employeeStatus" placeholder="请选择员工状态" clearable  style="width: 100%;">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.PROMOTION_ACTIVITY_STATUS)"
+                       :key="dict.value" :label="dict.label" :value="dict.value"/>
+        </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="电子邮箱" prop="email">
+              <el-input v-model="form.email" placeholder="请输入电子邮箱" maxlength="50" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="身份证号" prop="idCardNumber">
+              <el-input v-model="form.idCardNumber" placeholder="请输身份证号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="性别" prop="gender">
+              <el-select v-model="form.gender" placeholder="性别" clearable  style="width: 100%;">
+                <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SYSTEM_USER_SEX)" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="最高学历" prop="educationLevel">
+              <el-input v-model="form.educationLevel" placeholder="最高学历" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="手机号" prop="phone">
+              <el-input v-model="form.phone" placeholder="请输入手机号" maxlength="11" />
+            </el-form-item>
+          </el-col>
+          
+        
+          <el-col :span="12">
+            <el-form-item label="毕业院校" prop="graduationSchool">
+              <el-input v-model="form.graduationSchool" placeholder="毕业院校" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="毕业时间" prop="graduationDate">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.graduationDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="银行卡号" prop="bankCardNumber">
+              <el-input v-model="form.bankCardNumber" placeholder="银行卡号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="银行卡" prop="bankCardName">
+              <el-input v-model="form.bankCardName" placeholder="银行卡名称" />
+            </el-form-item>
+          </el-col>
+         
+          <el-col :span="12">
+            <el-form-item label="年假基数" prop="baseAnnualLeave">
+              <el-input v-model="form.baseAnnualLeave" placeholder="年假基准天数" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="剩余年假" prop="remainingAnnualLeave">
+              <el-input v-model="form.remainingAnnualLeave" placeholder="剩余年假天数" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="离职时间" prop="departureDate">
+              <el-date-picker value-format="yyyy-MM-dd" v-model="form.departureDate" type="date" placeholder="选择日期"
+                style="width: 100%;">
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="离职原因" prop="resignationReason">
+              <el-input v-model="form.resignationReason" type="textarea" placeholder="请输入离职原因"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -96,14 +207,21 @@
 
 <script>
 import { listType, getType, delType, addType, updateType, exportType } from "@/api/system/dict/type";
-
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import { listDept } from "@/api/system/dept";
 import { CommonStatusEnum } from '@/utils/constants'
 import { getDictDatas, DICT_TYPE } from '@/utils/dict'
 
 export default {
   name: "SystemDictType",
+  components: {
+    Treeselect,
+  },
   data() {
     return {
+      // 部门列表
+      deptOptions: [], // 部门属性结构
       // 遮罩层
       loading: true,
       // 导出遮罩层
@@ -123,20 +241,37 @@ export default {
         pageNo: 1,
         pageSize: 10,
         name: undefined,
-        type: undefined,
-        status: undefined,
-        createTime: []
+        employeeNumber: undefined,
+        employeeStatus: undefined,
+        // createTime: []
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
         name: [
-          { required: true, message: "字典名称不能为空", trigger: "blur" }
+          { required: true, message: "员工姓名不能为空", trigger: "blur" }
+        ],
+        id: [
+          { required: true, message: "员工ID不能为空", trigger: "blur" }
+        ],
+        employeeStatus: [
+          { required: true, message: "员工状态不能为空", trigger: "blur" }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "'请输入正确的邮箱地址",
+            trigger: ["blur", "change"]
+          }
+        ],
+        phone: [
+          {
+            pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
-        type: [
-          { required: true, message: "字典类型不能为空", trigger: "blur" }
-        ]
       },
 
       // 枚举
@@ -147,8 +282,26 @@ export default {
   },
   created() {
     this.getList();
+    this.getListDept();
   },
   methods: {
+     /** 查询部门列表 */
+     getListDept() {
+      listDept().then(response => {
+        this.deptOptions = this.handleTree(response.data, "id");
+      });
+    },
+    /** 转换部门数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.id,
+        label: node.name,
+        children: node.children
+      };
+    },
     /** 查询字典类型列表 */
     getList() {
       this.loading = true;
@@ -167,11 +320,31 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        id: undefined,
         name: undefined,
-        type: undefined,
-        status: CommonStatusEnum.ENABLE,
-        remark: undefined
+        id: undefined,
+        deptId: undefined,
+        position:undefined,
+        employeeNumber: undefined,
+
+        entryDate: undefined,
+        probationEndDate: undefined,
+        employeeStatus: CommonStatusEnum.ENABLE,
+        email: undefined,
+        idCardNumber: undefined,
+
+        gender: CommonStatusEnum.ENABLE,
+        educationLevel: undefined,
+        phone: undefined,
+        graduationSchool: undefined,
+        graduationDate: undefined,
+
+        bankCardNumber: undefined,
+        bankCardName: undefined,
+        baseAnnualLeave: undefined,
+        remainingAnnualLeave: undefined,
+        departureDate: undefined,
+
+        resignationReason: undefined,
       };
       this.resetForm("form");
     },