sunlupeng 1 年之前
父節點
當前提交
519fd3210d

+ 6 - 20
src/api/personnel/relations/entry/index.js

@@ -3,21 +3,7 @@ import request from '@/utils/request'
 // 查询列表
 export function listEntry(query) {
   return request({
-    url: '/personnel/attendance/info/page',
-    method: 'get',
-    params: query
-  })
-}
-export function dailyPage(query) {
-  return request({
-    url: '/personnel/attendance/info/dailyPage',
-    method: 'get',
-    params: query
-  })
-}
-export function monthlyPage(query) {
-  return request({
-    url: '/personnel/attendance/info/monthlyPage',
+    url: '/personnel/relations/entry/page',
     method: 'get',
     params: query
   })
@@ -26,7 +12,7 @@ export function monthlyPage(query) {
 // 查询详细
 export function getEntry(dictId) {
   return request({
-    url: '/personnel/attendance/info/get?id=' + dictId,
+    url: '/personnel/relations/entry/get?id=' + dictId,
     method: 'get'
   })
 }
@@ -34,7 +20,7 @@ export function getEntry(dictId) {
 // 新增
 export function addEntry(data) {
   return request({
-    url: '/personnel/attendance/info/create',
+    url: '/personnel/relations/entry/create',
     method: 'post',
     data: data
   })
@@ -43,7 +29,7 @@ export function addEntry(data) {
 // 修改
 export function updateEntry(data) {
   return request({
-    url: '/personnel/attendance/info/update',
+    url: '/personnel/relations/entry/update',
     method: 'put',
     data: data
   })
@@ -52,7 +38,7 @@ export function updateEntry(data) {
 // 删除
 export function delEntry(dictId) {
   return request({
-    url: '/personnel/attendance/info/delete?id=' + dictId,
+    url: '/personnel/relations/entry/delete?id=' + dictId,
     method: 'delete'
   })
 }
@@ -60,7 +46,7 @@ export function delEntry(dictId) {
 // 导出
 export function exportEntry(query) {
   return request({
-    url: '/personnel/attendance/info/export-excel',
+    url: '/personnel/relations/entry/export-excel',
     method: 'get',
     params: query,
     responseType: 'blob'

+ 3 - 0
src/utils/dict.js

@@ -13,6 +13,9 @@ export const DICT_TYPE = {
   TURNOVER_REASON: 'turnover_reason',
   //员工状态字典
   EMPLOYEE_STATUS: 'employee_status',
+  
+  //员工合同状态字典
+  EMPLOYEE_CONTRACT_STATUS: 'employee_contract_status',
 
   // ========== SYSTEM 模块 ==========
   SYSTEM_USER_TYPE: 'system_user_type',

+ 2 - 2
src/views/personnel/employee/index.vue

@@ -585,7 +585,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除员工编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除数据项?').then(function() {
           return delEmployee(ids);
         }).then(() => {
           this.getList();
@@ -603,7 +603,7 @@ export default {
         this.exportLoading = true;
         return exportEmployee(params);
       }).then(response => {
-        this.$download.excel(response, '.xls');
+        this.$download.excel(response, '员工信息.xls');
         this.exportLoading = false;
       }).catch(() => {});
     }

+ 30 - 14
src/views/personnel/relations/contract/index.vue

@@ -2,16 +2,16 @@
   <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="employeeName">
-        <el-input v-model="queryParams.employeeName" placeholder="续签人" clearable style="width: 250px"
+        <el-input v-model="queryParams.employeeName" placeholder="员工姓名" clearable style="width: 250px"
           @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="部门" prop="deptId">
         <treeselect style="width: 250px" :default-expand-level="1" v-model="queryParams.deptId" :options="deptOptions"
           :normalizer="normalizer" placeholder="选择部门" />
       </el-form-item>
-      <el-form-item label="职位" prop="postId">
-        <el-select v-model="queryParams.postId" placeholder="请选择" style="width: 250px">
-          <el-option v-for="item in postOptions" :key="item.value" :label="item.label" :value="item.value">
+      <el-form-item label="职位" prop="position">
+        <el-select v-model="queryParams.position" placeholder="请选择" style="width: 250px">
+          <el-option v-for="item in postOptions" :key="item.name" :label="item.name" :value="item.name">
           </el-option>
         </el-select>
       </el-form-item>
@@ -30,8 +30,8 @@
           :default-time="['00:00:00', '23:59:59']" />
       </el-form-item>
       <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="审批状态" clearable style="width: 250px">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_TASK_AUDIT_STATUS)" :key="parseInt(dict.value)"
+        <el-select v-model="queryParams.status" placeholder="审批" clearable style="width: 250px">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.EMPLOYEE_CONTRACT_STATUS)" :key="parseInt(dict.value)"
             :label="dict.label" :value="parseInt(dict.value)" />
         </el-select>
       </el-form-item>
@@ -54,7 +54,7 @@
     </el-row>
 
     <el-table v-loading="loading" :data="typeList">
-      <el-table-column label="员工姓名" align="center" prop="name" min-width="80" />
+      <el-table-column label="员工姓名" align="center" prop="employeeName" min-width="80" />
       <el-table-column label="部门" align="center" prop="deptName" min-width="100" />
       <el-table-column label="职位" align="center" prop="position" min-width="100" />
       <el-table-column label="员工手机号" align="center" prop="employeePhone" min-width="100" />
@@ -68,10 +68,10 @@
       </el-table-column>
       <el-table-column label="状态" align="center" prop="status" min-width="100">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.BPM_TASK_AUDIT_STATUS" :value="scope.row.status" />
+          <dict-tag :type="DICT_TYPE.EMPLOYEE_CONTRACT_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="120">
         <template v-slot="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
             v-hasPermi="['relations:contract:update']">修改</el-button>
@@ -132,7 +132,7 @@
 
           <el-col :span="12">
             <el-form-item label="合同期限" prop="contractDeadline">
-              <el-input v-model="form.contractDeadline" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder='续签合同期限'></el-input>
+              <el-input v-model="form.contractDeadline" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" placeholder='续签合同期限(月)'></el-input>
             </el-form-item>
           </el-col>
          
@@ -252,6 +252,8 @@
 </template>
 
 <script>
+import { listSimplePosts } from "@/api/system/post";
+import { getEmployeeInfo } from "@/api/system/user";
 import { listContract, getContract, delContract, addContract, updateContract, exportContract } from "@/api/personnel/relations/contract/index";
 import PeopleSelect from "@/components/PeopleSelect/index.vue";
 import Treeselect from "@riophae/vue-treeselect";
@@ -297,7 +299,7 @@ export default {
         pageSize: 10,
         employeeName: undefined,
         deptId: undefined,
-        postId: undefined,
+        position: undefined,
         employeePhone: undefined,
         creator: undefined,
         createTime: [],
@@ -317,7 +319,7 @@ export default {
           { required: true, message: '请选择日期', trigger: 'change' }
         ],
         contractDeadline: [
-          { required: true, message: "请输入合同期限", trigger: "blur" }
+          { required: true, message: "请输入合同期限", trigger: "change" }
         ],
       },
     };
@@ -327,6 +329,14 @@ export default {
     this.getListDept();
   },
   methods: {
+    getEmployee() {
+      getEmployeeInfo(this.form.employeeId).then(response => {
+        let employeeInfo = response.data;
+        this.form.deptName = employeeInfo.deptName;
+        this.form.position = employeeInfo.position;
+        this.form.employeePhone = employeeInfo.phone;
+      });
+    },
     //打开选人弹窗
     openSingle() {
       this.singlePeopleOpen = true;
@@ -335,6 +345,7 @@ export default {
       console.log(userNamelist);
       this.form.employeeName = nikeNamelist.join();
       this.form.employeeId = userIdList.join();
+      this.getEmployee();
       this.singlePeopleOpen = false;
     },
     handleRemove(file, fileList) {
@@ -379,6 +390,11 @@ export default {
       listDept().then(response => {
         this.deptOptions = this.handleTree(response.data, "id");
       });
+      listSimplePosts().then(response => {
+        // 处理 postOptions 参数
+        this.postOptions = [];
+        this.postOptions.push(...response.data);
+      });
     },
     /** 转换部门数据结构 */
     normalizer(node) {
@@ -498,7 +514,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除字典编号为"' + ids + '"的数据项?').then(function () {
+      this.$modal.confirm('是否确认删除数据项?').then(function () {
         return delContract(ids);
       }).then(() => {
         this.getList();
@@ -516,7 +532,7 @@ export default {
         this.exportLoading = true;
         return exportContract(params);
       }).then(response => {
-        this.$download.excel(response, '.xls');
+        this.$download.excel(response, '员工合同信息.xls');
         this.exportLoading = false;
       }).catch(() => { });
     }

+ 48 - 32
src/views/personnel/relations/entry/index.vue

@@ -11,7 +11,7 @@
       </el-form-item>
       <el-form-item label="职位" prop="position">
         <el-select v-model="queryParams.position" placeholder="请选择" style="width: 250px">
-          <el-option v-for="item in postOptions" :key="item.value" :label="item.label" :value="item.value">
+          <el-option v-for="item in postOptions" :key="item.name" :label="item.name" :value="item.name">
           </el-option>
         </el-select>
       </el-form-item>
@@ -48,7 +48,7 @@
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="审批状态" clearable style="width: 250px">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_TASK_AUDIT_STATUS)" :key="parseInt(dict.value)"
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="parseInt(dict.value)"
             :label="dict.label" :value="parseInt(dict.value)" />
         </el-select>
       </el-form-item>
@@ -71,9 +71,9 @@
     </el-row>
 
     <el-table v-loading="loading" :data="typeList">
-      <el-table-column label="入职人" align="center" prop="entryName" min-width="120" />
-      <el-table-column label="部门" align="center" prop="deptName" min-width="150" />
-      <el-table-column label="职位" align="center" prop="position" min-width="150" />
+      <el-table-column label="入职人" align="center" prop="entryName" min-width="100" />
+      <el-table-column label="部门" align="center" prop="deptName" min-width="100" />
+      <el-table-column label="职位" align="center" prop="position" min-width="100" />
       <el-table-column label="员工类型" align="center" prop="employeeType" min-width="100">
         <template v-slot="scope">
           <dict-tag :type="DICT_TYPE.SYSTEM_USER_TYPE" :value="scope.row.employeeType" />
@@ -84,8 +84,8 @@
           <dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.gender" />
         </template>
       </el-table-column>
-      <el-table-column label="联系电话" align="center" prop="contactNumber" min-width="150" />
-      <el-table-column label="入职日期" align="center" prop="entryDate" min-width="150" />
+      <el-table-column label="联系电话" align="center" prop="contactNumber" min-width="100" />
+      <el-table-column label="入职日期" align="center" prop="entryDate" min-width="100" />
       <el-table-column label="创建人" align="center" prop="creator" min-width="80" />
       <el-table-column label="创建时间" align="center" prop="createTime" min-width="150">
         <template v-slot="scope">
@@ -94,10 +94,10 @@
       </el-table-column>
       <el-table-column label="状态" align="center" prop="status" min-width="100">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.BPM_TASK_AUDIT_STATUS" :value="scope.row.status" />
+          <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="150">
         <template v-slot="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
             v-hasPermi="['relations:entry:update']">修改</el-button>
@@ -120,18 +120,21 @@
               <el-input v-model="form.entryName" placeholder='请输入入职人'></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12" style="display: none;">
+          <el-col :span="12">
             <el-form-item label="部门">
               <treeselect :default-expand-level="1" v-model="form.deptId" :options="deptOptions"
                 :normalizer="normalizer" placeholder="请选选择部门" />
             </el-form-item>
           </el-col>
 
-          <el-col :span="24">
+          <el-col :span="12">
             <el-form-item label="职位">
-              <el-select v-model="form.position" filterable allow-create default-first-option placeholder="请选择"
-                style="width: 100%;">
-                <el-option v-for="item in postOptions" :key="item.value" :label="item.label" :value="item.value">
+              <!-- <el-select v-model="form.position" filterable allow-create default-first-option placeholder="请选择" style="width: 100%;">
+                <el-option v-for="item in postOptions" :key="item.id" :label="item.name" :value="item.id">
+                </el-option>
+              </el-select> -->
+              <el-select v-model="form.position" placeholder="请选择" style="width: 100%;">
+                <el-option v-for="item in postOptions" :key="item.name" :label="item.name" :value="item.name">
                 </el-option>
               </el-select>
             </el-form-item>
@@ -173,20 +176,27 @@
             </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="24">
             <el-form-item label="教育背景">
               <el-input maxlength="50" show-word-limit type="textarea" v-model="form.education"
                 placeholder='请输入'></el-input>
             </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-col :span="24">
+            <el-form-item label="工作经验">
+              <el-input maxlength="200" rows="4" show-word-limit type="textarea" v-model="form.workExperience"
+                placeholder='请输入'></el-input>
             </el-form-item>
           </el-col>
+
+          
           <el-col :span="24">
             <el-form-item label="附件">
               <el-upload :action="fileUrl" :headers="headers" :file-list="files" :on-success="handleFileSuccessCite"
@@ -288,39 +298,39 @@
           <span :title="form.email">{{ form.email }}</span>
         </div>
       </div>
-
-
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">教育背景</div>
+          <span class="field-required">*</span>
+          <div class="field-name">入职日期</div>
         </div>
         <div class="field-component">
-          <span :title="form.education">{{ form.education }}</span>
+          <span :title="form.entryDate">{{ form.entryDate }}</span>
         </div>
       </div>
 
-
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <div class="field-name">工作经验</div>
+          <div class="field-name">教育背景</div>
         </div>
         <div class="field-component">
-          <span :title="form.workExperience">{{ form.workExperience }}</span>
+          <span :title="form.education">{{ form.education }}</span>
         </div>
       </div>
 
 
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
-          <span class="field-required">*</span>
-          <div class="field-name">入职日期</div>
+          <div class="field-name">工作经验</div>
         </div>
         <div class="field-component">
-          <span :title="form.entryDate">{{ form.entryDate }}</span>
+          <span :title="form.workExperience">{{ form.workExperience }}</span>
         </div>
       </div>
 
 
+      
+
+
       <div class="fx-field x-grid-col-12">
         <div class="field-label">
           <div class="field-name">附件</div>
@@ -347,6 +357,7 @@
 </template>
 
 <script>
+import { listSimplePosts } from "@/api/system/post";
 import { listEntry, getEntry, delEntry, addEntry, updateEntry, exportEntry } from "@/api/personnel/relations/entry/index";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -488,6 +499,11 @@ export default {
       listDept().then(response => {
         this.deptOptions = this.handleTree(response.data, "id");
       });
+      listSimplePosts().then(response => {
+        // 处理 postOptions 参数
+        this.postOptions = [];
+        this.postOptions.push(...response.data);
+      });
     },
     /** 转换部门数据结构 */
     normalizer(node) {
@@ -609,7 +625,7 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除字典编号为"' + ids + '"的数据项?').then(function () {
+      this.$modal.confirm('是否确认删除数据项?').then(function () {
         return delEntry(ids);
       }).then(() => {
         this.getList();
@@ -627,7 +643,7 @@ export default {
         this.exportLoading = true;
         return exportEntry(params);
       }).then(response => {
-        this.$download.excel(response, '.xls');
+        this.$download.excel(response, '入职信息.xls');
         this.exportLoading = false;
       }).catch(() => { });
     }