LiGuang 3 лет назад
Родитель
Сommit
a8733a709d

+ 9 - 7
src/views/system/AttendanceRuleList.vue

@@ -13,7 +13,10 @@
           </a-col>
           <a-col :xl="6" :lg="6" :md="6" :sm="6">
             <a-form-item label="部门名称">
-              <a-input placeholder="请输入部门名称" v-model="queryParam.dept"></a-input>
+              <j-tree-select style="width: 200px" v-model="queryParam.dept" dict="sys_depart,depart_name,id"
+                pid-field="parent_id" placeholder="请选择部门">
+              </j-tree-select>
+              
             </a-form-item>
           </a-col>
           <a-col :xl="6" :lg="6" :md="6" :sm="6">
@@ -38,7 +41,7 @@
       <a-button @click="handleAddts()" type="primary" icon="plus" v-has="'UserShift:add'">调整</a-button>
       <a-tabs default-active-key="2" @change="callback">
         <a-tab-pane key="2" tab="按班次上下班">
-          <a-table bordered rowKey="id" :loading="loading" :data-source="dataSource" :columns="columns" :scroll="{ x:300 }"
+          <a-table bordered rowKey="id" :loading="loading" :data-source="dataSource" :columns="columns" :scroll="{ x:300,y:600}"
             :pagination="ipagination" @change="handleTableChange"
             :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}">
             <template v-for='(dayobject,i) in days' :slot="dayobject.day.getDate()" style="color: #ff6b81">
@@ -59,7 +62,6 @@
             </template>
 
             <span v-for='(d,i) in tpdata' style="margin-left: -6px;" :slot="d" slot-scope="text, record, index">
-
               <span style="margin-left: -7px;">
                 <a-tag color="blue" v-if="text=='休息'">{{text}}</a-tag>
                 <a-tag color="#87d068" v-else-if="text!=''&&text!=null">{{text}}</a-tag>
@@ -109,7 +111,7 @@
 
           </a-table>
         </a-tab-pane>
-        <a-tab-pane key="3" tab="自由时间上下班">
+        <!-- <a-tab-pane key="3" tab="自由时间上下班">
           <a-table bordered rowKey="id"  :loading="loading" :data-source="dataSource" :columns="columns" :scroll="{ x:300 }"
             :pagination="ipagination" @change="handleTableChange"
             :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}">
@@ -131,8 +133,8 @@
             </template>
 
           </a-table>
-        </a-tab-pane>
-        <a-tab-pane key="4" tab="未排班" force-render>
+        </a-tab-pane> -->
+        <!-- <a-tab-pane key="4" tab="未排班" force-render>
           <a-table bordered :data-source="dataSource" :loading="loading" rowKey="id" :columns="columns" :scroll="{ x:300 }"
             :pagination="ipagination" @change="handleTableChange"
             :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChanges}">
@@ -154,7 +156,7 @@
             </template>
 
           </a-table>
-        </a-tab-pane>
+        </a-tab-pane> -->
 
       </a-tabs>
 

+ 20 - 5
src/views/system/MakeUpCardList.vue

@@ -14,7 +14,12 @@
           
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <a-form-item label="部门">
-              <a-input placeholder="请输入部门" v-model="queryParam.dept"></a-input>
+              <j-tree-select
+                      style="width: 200px"
+                      v-model="queryParam.dept"
+                      dict="sys_depart,depart_name,id"
+                      pid-field="parent_id">
+                    </j-tree-select>
             </a-form-item>
           </a-col>
           
@@ -34,7 +39,7 @@
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
               <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
-
+            <a-button type="primary" icon="download" @click="handleExportXls('补卡信息')" style="margin-left: 8px">导出</a-button>
             </span>
           </a-col>
 
@@ -66,7 +71,7 @@
         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
       </div>
 
-      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+      <a-table ref="table"  size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
         :pagination="ipagination" :loading="loading" class="j-table-force-nowrap" @change="handleTableChange">
 
         <span slot="action" slot-scope="text, record">
@@ -125,9 +130,19 @@
             dataIndex: 'userId'
           },
           {
-            title: '部门',
+            title: '一级部门',
+            align: "center",
+            dataIndex: 'deptName'
+          },
+          {
+            title: '二级部门',
+            align: "center",
+            dataIndex: 'deptName2'
+          },
+          {
+            title: '三级部门',
             align: "center",
-            dataIndex: 'dept'
+            dataIndex: 'deptName3'
           },
           {
             title: '补卡时间',

+ 16 - 14
src/views/system/RoleUserList.vue

@@ -99,11 +99,12 @@
           <a-form layout="inline">
             <a-row :gutter="24">
 
-              <a-col :md="12" :sm="12">
+              <a-col :md="8" :sm="8">
                 <a-form-item label="工号">
                   <a-input placeholder="" v-model="queryParam2.workNo"></a-input>
                 </a-form-item>
               </a-col>
+             
               <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
             <a-col :md="9" :sm="24">
              <a-button type="primary" @click="searchQuery2" icon="search" style="margin-left: 21px">查询</a-button>
@@ -116,11 +117,11 @@
         </div>
         <!-- 操作按钮区域 -->
         <div class="table-operator" :md="24" :sm="24">
-          <a-button @click="handleAdd2" type="primary" icon="plus" style="margin-top: 16px">新增员工</a-button>
+          <!-- <a-button @click="handleAdd2" type="primary" icon="plus" style="margin-top: 16px">新增员工</a-button> -->
           <!--<a-button @click="handleEdit2" type="primary" icon="edit" style="margin-top: 16px">用户编辑</a-button>-->
           <a-button @click="handleAddUserRole" type="primary" icon="plus" style="margin-top: 16px">已有员工</a-button>
 
-          <a-dropdown v-if="selectedRowKeys2.length > 0">
+          <!-- <a-dropdown v-if="selectedRowKeys2.length > 0">
             <a-menu slot="overlay">
               <a-menu-item key="1" @click="batchDel2">
                 <a-icon type="delete"/>
@@ -130,15 +131,15 @@
             <a-button style="margin-left: 8px"> 批量操作
               <a-icon type="down"/>
             </a-button>
-          </a-dropdown>
+          </a-dropdown> -->
         </div>
         <!-- table区域-begin -->
         <div>
-          <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+          <!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
             <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{
             selectedRowKeys2.length }}</a>项
             <a style="margin-left: 24px" @click="onClearSelected2">清空</a>
-          </div>
+          </div> -->
           <a-table
             style="height:500px"
             ref="table2"
@@ -149,7 +150,7 @@
             :dataSource="dataSource2"
             :pagination="ipagination2"
             :loading="loading2"
-            :rowSelection="{selectedRowKeys: selectedRowKeys2, onChange: onSelectChange2}"
+            
             @change="handleTableChange2">
            <span slot="action" slot-scope="text, record">
            <a @click="handleEdit2(record)">编辑</a>
@@ -293,13 +294,14 @@
           //   dataIndex: 'status_dictText'
           // },
 
-          {
-            title: '操作',
-            dataIndex: 'action',
-            scopedSlots: { customRender: 'action' },
-            align: 'center',
-            width: 120
-          }],
+          // {
+          //   title: '操作',
+          //   dataIndex: 'action',
+          //   scopedSlots: { customRender: 'action' },
+          //   align: 'center',
+          //   width: 120
+          // }
+          ],
 
         // 高级查询参数
         superQueryParams2: '',

+ 32 - 15
src/views/system/SysPositionList.vue

@@ -7,13 +7,13 @@
         <a-row :gutter="24">
 
           <a-col :md="6" :sm="8">
-            <a-form-item label="职编码">
-              <a-input placeholder="请输入职编码" v-model="queryParam.code"></a-input>
+            <a-form-item label="职编码">
+              <a-input placeholder="请输入职编码" v-model="queryParam.code"></a-input>
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8">
-            <a-form-item label="职名称">
-              <a-input placeholder="请输入职名称" v-model="queryParam.name"></a-input>
+            <a-form-item label="职名称">
+              <a-input placeholder="请输入职名称" v-model="queryParam.name"></a-input>
             </a-form-item>
           </a-col>
           <template v-if="toggleSearchStatus">
@@ -23,9 +23,15 @@
               </a-form-item>
             </a-col> -->
             <a-col :md="6" :sm="8">
-            <a-form-item label="部门名称">
-              <a-input placeholder="请输入部门名称" v-model="queryParam.deptName"></a-input>
-            </a-form-item>
+              <a-form-item label="部门名称">
+                <j-tree-select
+                        style="width: 200px"
+                        v-model="queryParam.deptId"
+                        dict="sys_depart,depart_name,id"
+                        pid-field="parent_id">
+                      </j-tree-select>
+              </a-form-item>
+            
           </a-col>
           </template>
           <a-col :md="6" :sm="8">
@@ -46,7 +52,7 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('职务表')">导出</a-button>
+      <a-button type="primary" icon="download" @click="handleExportXls('职位信息')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
       </a-upload>
@@ -111,17 +117,18 @@
   import SysPositionModal from './modules/SysPositionModal'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import JDictSelectTag from '@/components/dict/JDictSelectTag'
-
+import JTreeSelect from '@/components/jeecg/JTreeSelect'
   export default {
     name: 'SysPositionList',
     mixins: [JeecgListMixin],
     components: {
       SysPositionModal,
-      JDictSelectTag
+      JDictSelectTag,
+      JTreeSelect
     },
     data() {
       return {
-        description: '职表管理页面',
+        description: '职表管理页面',
         // 表头
         columns: [
           {
@@ -135,12 +142,12 @@
             }
           },
           {
-            title: '职编码',
+            title: '职编码',
             align: 'center',
             dataIndex: 'code'
           },
           {
-            title: '职名称',
+            title: '职名称',
             align: 'center',
             dataIndex: 'name'
           },
@@ -150,9 +157,19 @@
           //   dataIndex: 'postRank_dictText'
           // },
           {
-            title: '部门',
+            title: '一级部门',
+            align: 'center',
+            dataIndex: 'deptName1'
+          },
+          {
+            title: '二级部门',
+            align: 'center',
+            dataIndex: 'deptName2'
+          },
+          {
+            title: '三级部门',
             align: 'center',
-            dataIndex: 'deptName'
+            dataIndex: 'deptName3'
           },
           // {
           //   title: '公司id',

+ 12 - 6
src/views/system/UserList.vue

@@ -94,8 +94,8 @@
      
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay" @click="handleMenuClick">
-          <a-menu-item key="1">
-            <a-icon type="delete" @click="batchDel"/>
+          <a-menu-item key="1" v-if="selectionRows[0].employmentStatus==40" >
+            <a-icon type="delete" @click="batchDel" />
             删除
           </a-menu-item>
           <a-menu-item key="4" v-if="selectionRows[0].employmentStatus==40" >
@@ -161,9 +161,9 @@
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)" v-has='"user:edit"'>编辑</a>
 
-          <a-divider type="vertical"/>
-
-          <a-dropdown v-has='"user:more"'>
+         <!-- <a-divider type="vertical"/>
+ -->
+          <!-- <a-dropdown v-has='"user:more"'>
             <a class="ant-dropdown-link">
               更多 <a-icon type="down"/>
             </a>
@@ -180,7 +180,7 @@
               </a-menu-item>
 
             </a-menu>
-          </a-dropdown>
+          </a-dropdown> -->
         </span>
 
 
@@ -320,6 +320,12 @@ import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
             width: 120,
             dataIndex: 'del4'
           },
+          {
+            title: '职位',
+            align: "center",
+            width: 120,
+            dataIndex: 'post_dictText'
+          },
           {
             title: '入职时间',
             align: "center",

+ 93 - 82
src/views/system/UserPrizeList.vue

@@ -13,29 +13,30 @@
           </a-col>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <a-form-item label="部门名称">
-              <a-input placeholder="请输入部门名称" v-model="queryParam.deptId"></a-input>
-            </a-form-item>
-          </a-col>
-        <template v-if="toggleSearchStatus">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="类型">
-             <a-select v-model="queryParam.type" placeholder="请选择类型"
-               :getPopupContainer="(target) => target.parentNode">
-               <a-select-option value="0">奖</a-select-option>
-               <a-select-option value="1">惩</a-select-option>
-             </a-select>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="备注">
-              <a-input placeholder="请输入备注" v-model="queryParam.demo"></a-input>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="日期">
-             <a-date-picker valueFormat="YYYY-MM-DD HH:mm:ss" showTime format='YYYY-MM-DD' v-model="queryParam.date"/>
+              <j-tree-select style="width: 200px" v-model="queryParam.deptId" dict="sys_depart,depart_name,id"
+                pid-field="parent_id" placeholder="请选择部门">
+              </j-tree-select>
             </a-form-item>
           </a-col>
+          <template v-if="toggleSearchStatus">
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="类型">
+                <j-dict-select-tag v-model="queryParam.type"  placeholder="请选择类型"
+                  dictCode="work_type" />
+
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="备注">
+                <a-input placeholder="请输入备注" v-model="queryParam.demo"></a-input>
+              </a-form-item>
+            </a-col>
+            <a-col :xl="6" :lg="7" :md="8" :sm="24">
+              <a-form-item label="日期">
+                <a-date-picker valueFormat="YYYY-MM-DD HH:mm:ss" showTime format='YYYY-MM-DD'
+                  v-model="queryParam.date" />
+              </a-form-item>
+            </a-col>
           </template>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
@@ -43,7 +44,7 @@
               <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
               <a @click="handleToggleSearch" style="margin-left: 8px">
                 {{ toggleSearchStatus ? '收起' : '展开' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
               </a>
             </span>
           </a-col>
@@ -55,44 +56,42 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-     <!-- <a-button type="primary" icon="download" @click="handleExportXls('员工奖惩')">导出</a-button>
+      <!-- <a-button type="primary" icon="download" @click="handleExportXls('员工奖惩')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
       </a-upload> -->
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+          <a-menu-item key="1" @click="batchDel">
+            <a-icon type="delete" />删除
+          </a-menu-item>
         </a-menu>
-        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+        <a-button style="margin-left: 8px"> 批量操作
+          <a-icon type="down" />
+        </a-button>
       </a-dropdown>
     </div>
 
     <!-- table区域-begin -->
     <div>
       <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a
+          style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
       </div>
 
-      <a-table
-        ref="table"
-        size="middle"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        class="j-table-force-nowrap"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        @change="handleTableChange">
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+        :pagination="ipagination" :loading="loading" class="j-table-force-nowrap"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange">
 
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
-            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a class="ant-dropdown-link">更多
+              <a-icon type="down" />
+            </a>
             <a-menu slot="overlay">
               <a-menu-item>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
@@ -115,15 +114,17 @@
 <script>
   import '@/assets/less/TableExpand.less'
   import UserPrizeModal from './modules/UserPrizeModal'
-  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import moment from "moment"
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
+  import moment from "moment"
   export default {
     name: "UserPrizeList",
-    mixins:[JeecgListMixin],
+    mixins: [JeecgListMixin],
     components: {
       UserPrizeModal
     },
-    data () {
+    data() {
       return {
         description: '员工奖惩管理页面',
         // 表头
@@ -138,67 +139,77 @@ import moment from "moment"
           //     return parseInt(index)+1;
           //   }
           //  },
-		   {
+          {
             title: '员工姓名',
-            align:"center",
+            align: "center",
             dataIndex: 'realname'
-           },
-		   {
-            title: '部门',
-            align:"center",
-            dataIndex: 'deptname'
-           },
-		   {
+          },
+          {
+            title: '一级部门',
+            align: "center",
+            dataIndex: 'deptName'
+          },
+          {
+            title: '二级部门',
+            align: "center",
+            dataIndex: 'deptName1'
+          },
+          {
+            title: '三级部门',
+            align: "center",
+            dataIndex: 'deptName2'
+          },
+          {
             title: '类型',
-            align:"center",
-            dataIndex: 'type',
-            customRender:function(t,r,index){
-              var name="奖";
-              if(t=="1"||t==1){
-                name="惩";
-              }
-              return name;
-            }
-           },
-		   {
+            align: "center",
+            dataIndex: 'type_dictText',
+          },
+          {
             title: '备注',
-            align:"center",
+            align: "center",
             dataIndex: 'demo'
-           },
-		   {
+          },
+          {
             title: '日期',
-            align:"center",
+            align: "center",
             dataIndex: 'date',
-            customRender:function(t,r,index){
+            customRender: function(t, r, index) {
               return moment(t).format('YYYY-MM-DD');
             }
-           },
+          },
+          {
+            title: '操作员',
+            align: "center",
+            dataIndex: 'createBy'
+          },
           {
             title: '操作',
             dataIndex: 'action',
-            align:"center",
-            scopedSlots: { customRender: 'action' },
+            align: "center",
+            scopedSlots: {
+              customRender: 'action'
+            },
           }
         ],
-		url: {
+        url: {
           list: "/userPrize/userPrize/list",
           delete: "/userPrize/userPrize/delete",
           deleteBatch: "/userPrize/userPrize/deleteBatch",
           exportXlsUrl: "userPrize/userPrize/exportXls",
           importExcelUrl: "userPrize/userPrize/importExcel",
-       },
-    }
-  },
-  computed: {
-    importExcelUrl: function(){
-      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
-    }
-  },
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function() {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      }
+    },
     methods: {
-     
+
     }
   }
 </script>
 <style scoped>
   @import '~@assets/less/common.less';
-</style>
+</style>

+ 6 - 6
src/views/system/modules/AttendanceRuleModal.vue

@@ -2,9 +2,9 @@
   <j-modal title="排班" :width="1000" :visible="visible" @ok="save()" switchFullscreen @cancel="handleCancel">
 
     <a-spin :spinning="confirmLoading">
-      <a-form :form="form">
+      <!-- <a-form :form="form">
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班类型">
-          <a-radio-group v-model="types">
+         <a-radio-group v-model="types">
             <a-radio value="1">固定时间上下班</a-radio>
             <a-radio value="2">按班次上下班</a-radio>
             <a-radio value="3">自由上下班</a-radio>
@@ -44,12 +44,12 @@
             </div>
           </a-time-picker>
         </a-form-item>
-      </a-form>
-      <a-form-item v-if="types!=2" label="*打卡人员" :labelCol="labelCol" :wrapperCol="wrapperCol">
+      </a-form> -->
+      <!-- <a-form-item v-if="types!=2" label="*打卡人员" :labelCol="labelCol" :wrapperCol="wrapperCol">
         <a-tag v-for='(user,i) in selectUsers' :key="user.id" closable @close="tagBtnCloseFunc(user)">{{user.realname}}
         </a-tag>
 
-      </a-form-item>
+      </a-form-item> -->
 
       <div v-if="types=='2'">
         <div class='month'>
@@ -66,7 +66,7 @@
         </div>
 
         <div>
-          <a-table bordered :data-source="dataSource" :loading="loading" :columns="columns" :scroll="{ x:300 }" :pagination="ipagination"
+          <a-table bordered :data-source="dataSource" :loading="loading" :columns="columns" :scroll="{ x:300,y:500 }" :pagination="ipagination"
             @change="handleTableChange">
             <template v-for='(dayobject,i) in days' :slot="dayobject.day.getDate()" style="color: #ff6b81">
               <div style="height: 35px;">

+ 6 - 10
src/views/system/modules/DepartWindow.vue

@@ -12,19 +12,16 @@
     <!--部门树-->
     <template>
       <a-form :form="form">
-      <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级部门">
+      <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="部门">
       <a-directory-tree
         multiple
-        treeCheckable="tree"
+        v-if="departTree.length>0"
+        :defaultExpandAll="true"
         @expand="onExpand"
-        :expandedKeys="expandedKeysss"
-        :checkedKeys="checkedKeys"
-        allowClear="true"
-        :checkStrictly="true"
         @select="onCheck"
         :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
         :treeData="departTree"
-        placeholder="请选择上级部门"
+        placeholder="请选择部门"
         >
       </a-directory-tree>
       </a-form-item>
@@ -75,6 +72,7 @@
     methods: {
       add (checkedDepartKeys,userId) {
         this.checkedKeys = checkedDepartKeys;
+        //this.expandedKeysss=checkedDepartKeys;
         this.userId = userId;
         this.edit({});
       },
@@ -106,7 +104,6 @@
                 if(res.success){
                   let formData = {userId:res.result,
                   departIdList:this.departList}
-                  console.log(formData)
                   that.$emit('ok', formData);
                 }
               }).finally(() => {
@@ -117,7 +114,6 @@
             }else {
               let formData = {userId:this.userId,
                 departIdList:this.departList}
-              console.log(formData)
               that.departList = [];
               that.$emit('ok', formData);
               that.confirmLoading = false;
@@ -132,6 +128,7 @@
 
       // 选择部门时作用的API
       onCheck(checkedKeys, info){
+        console.log(checkedKeys)
         this.departList = [];
         this.checkedKeys = checkedKeys.checked;
         let selectedNodes = info.selectedNodes;
@@ -143,7 +140,6 @@
           depart.title = de.title;
           this.departList.push(depart);
         }
-        console.log('onCheck', checkedKeys, info);
       },
       queryDepartTree(){
         queryIdTree().then((res)=>{

+ 6 - 1
src/views/system/modules/SelectUserModal.vue

@@ -15,11 +15,16 @@
         <a-form layout="inline"  @keyup.enter.native="searchQuery">
           <a-row :gutter="24">
 
-            <a-col :span="10">
+            <a-col :span="8">
               <a-form-item label="工号">
                 <a-input placeholder="请输入工号" v-model="queryParam.workNo"></a-input>
               </a-form-item>
             </a-col>
+            <a-col :md="8" :sm="8">
+              <a-form-item label="姓名">
+                <a-input placeholder="" v-model="queryParam.realname"></a-input>
+              </a-form-item>
+            </a-col>
             <a-col :span="8">
                     <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
                       <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>

+ 3 - 0
src/views/system/modules/StatutoryLeaveModal.vue

@@ -145,6 +145,9 @@
             formData.startDate = formData.startDate?formData.startDate.format('YYYY-MM-DD HH:mm:ss'):null;
             formData.endDate = formData.endDate?formData.endDate.format('YYYY-MM-DD HH:mm:ss'):null;
             formData.type=this.type;
+            if(this.type=="2"){
+              formData.sum="";
+            }
             console.log(formData)
             httpAction(httpurl,formData,method).then((res)=>{
               if(res.success){

+ 45 - 55
src/views/system/modules/SysPositionModal.vue

@@ -16,46 +16,26 @@
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="职务编码">
-          <a-input placeholder="请输入职编码" v-decorator="['code', validatorRules.code]" :read-only="readOnly"/>
+          <a-input placeholder="请输入职编码" v-decorator="['code', validatorRules.code]" :read-only="readOnly"/>
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="职务名称">
-          <a-input placeholder="请输入职名称" v-decorator="['name', validatorRules.name]"/>
+          <a-input placeholder="请输入职名称" v-decorator="['name', validatorRules.name]"/>
         </a-form-item>
-        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol"  label="*部门" hasFeedback>
-        <a-tree-select
-          style="width:100%"
-          :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
-          :treeData="departTree"
-          v-model="model.deptId"
-          placeholder="请选择部门"
-          >
-        </a-tree-select>
+      
+        <a-form-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input-search placeholder="点击选择部门" v-decorator="['deptName',validatorRules.deptname]"  @search="onSearch">
+            <a-button slot="enterButton" icon="search">选择</a-button>
+          </a-input-search>
         </a-form-item>
-        <!-- <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="职级"
-        >
-          <j-dict-select-tag
-            placeholder="请选择职级"
-            :triggerChange="true"
-            dictCode="position_rank"
-            v-decorator="['postRank',{}]"
-          />
-        </a-form-item> -->
-        <!--<a-form-item-->
-        <!--  :labelCol="labelCol"-->
-        <!--  :wrapperCol="wrapperCol"-->
-        <!--  label="公司id">-->
-        <!--  <a-input placeholder="请输入公司id" v-decorator="['companyId', {}]"/>-->
-        <!--</a-form-item>-->
-
+        
       </a-form>
+      <depart-window ref="departWindow" @ok="modalFormOk"></depart-window>
     </a-spin>
   </a-modal>
+  
 </template>
 
 <script>
@@ -63,17 +43,25 @@
   import { httpAction } from '@/api/manage'
   import { duplicateCheck } from '@/api/api'
   import JDictSelectTag from '@/components/dict/JDictSelectTag'
+  import departWindow from './DepartWindow'
 import { queryIdTree } from '@/api/api'
   let validatorCodeTimer = null
 
   export default {
     name: 'SysPositionModal',
-    components: { JDictSelectTag },
+    components: { 
+    JDictSelectTag,
+    departWindow
+    },
     data() {
       return {
         departTree:[],
+        checkedDepartKeys:[],
+        visibles:false,
         title: '操作',
         visible: false,
+        deptname:"",
+        deptid:"",
         model: {},
         labelCol: {
           xs: { span: 24 },
@@ -88,7 +76,7 @@ import { queryIdTree } from '@/api/api'
         validatorRules: {
           code: {
             rules: [
-              { required: true, message: '请输入职编码' },
+              { required: true, message: '请输入职编码' },
               {
                 validator: (rule, value, callback) => {
                   // 函数消抖的简单实现,防止一段时间内发送多次请求
@@ -114,8 +102,8 @@ import { queryIdTree } from '@/api/api'
               }
             ]
           },
-          name: { rules: [{ required: true, message: '请输入职名称' }] },
-          
+          name: { rules: [{ required: true, message: '请输入职名称' }] },
+          deptname: { rules: [{ required: true, message: '请选择部门' }] },
         },
         url: {
           add: '/sys/position/add',
@@ -125,27 +113,15 @@ import { queryIdTree } from '@/api/api'
       }
     },
     created() {
-      this.loadTreeData()
+      
     },
     methods: {
-      loadTreeData(){
-        var that = this;
-        queryIdTree().then((res)=>{
-          if(res.success){
-            that.departTree = [];
-            for (let i = 0; i < res.result.length; i++) {
-              let temp = res.result[i];
-              that.departTree.push(temp);
-            }
-          }
-
-        })
-      },
       add() {
         this.edit({})
       },
       edit(record) {
         this.form.resetFields()
+        console.log(record)
         this.model = Object.assign({}, record)
         this.visible = true
         if(record.id){
@@ -153,12 +129,13 @@ import { queryIdTree } from '@/api/api'
         }else{
           this.readOnly=false
         }
+        this.deptid=record.deptId;
         this.$nextTick(() => {
           this.form.setFieldsValue(pick(this.model,
             'code',
             'name',
             'postRank',
-            'deptId'
+            'deptName'
           ))
         })
       },
@@ -169,10 +146,10 @@ import { queryIdTree } from '@/api/api'
       handleOk() {
         const that = this
         // 触发表单验证
-        if(this.model.deptId==null||this.model.deptId==""){
-          that.$message.warning("请选择部门!");
-          return;
-        }
+        // if(this.model.deptId==null||this.model.deptId==""){
+        //   that.$message.warning("请选择部门!");
+        //   return;
+        // }
         this.form.validateFields((err, values) => {
           if (!err) {
             that.confirmLoading = true
@@ -187,6 +164,7 @@ import { queryIdTree } from '@/api/api'
             }
 
             let formData = Object.assign(this.model, values)
+            formData.deptId=this.deptid;
             httpAction(httpurl, formData, method).then((res) => {
               if (res.success) {
                 that.$message.success(res.message)
@@ -204,8 +182,20 @@ import { queryIdTree } from '@/api/api'
       handleCancel() {
         this.close()
       },
-
-
+// 搜索用户对应的部门API
+      onSearch() {
+        this.$refs.departWindow.add(this.checkedDepartKeys, "");
+      },
+ // 获取用户对应部门弹出框提交给返回的数据
+      modalFormOk(formData) {
+        this.form.setFieldsValue({
+          deptName:formData.departIdList[0].title
+        })
+       this.deptid=formData.departIdList[0].value;
+        
+        console.log(formData.departIdList[0].value)
+        //this.deptid=formData.departIdList[0].value;
+      },
     }
   }
 </script>

+ 327 - 230
src/views/system/modules/UserDetailModal.vue

@@ -1,5 +1,6 @@
 <template>
-  <a-modal footer="" :width="1000" :dialogStyle="dialogStyle" title="员工信息详情" :visible="visible"  @cancel="handleCancel" cancelText="关闭">
+  <a-modal footer="" :width="1000" :dialogStyle="dialogStyle" title="员工信息详情" :visible="visible" @cancel="handleCancel"
+    cancelText="关闭">
 
     <template slot="title">
       <div style="width: 100%;">
@@ -15,27 +16,27 @@
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-model-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
-               <j-image-upload disabled  class="avatar-uploader" text="上传" v-model="model.avatar" ></j-image-upload>
-             </a-form-model-item>
+              <j-image-upload disabled class="avatar-uploader" text="上传" v-model="model.avatar"></j-image-upload>
+            </a-form-model-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="10"  v-decorator="[ 'realname']" />
+              <a-input disabled maxLength="10" v-decorator="[ 'realname']" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="英文名" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="10"  v-decorator="[ 'egName']" />
+              <a-input disabled maxLength="10" v-decorator="[ 'egName']" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="30"  v-decorator="[ 'email']" />
+              <a-input disabled maxLength="30" v-decorator="[ 'email']" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="人员类别" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-select disabled v-decorator="[ 'category', {initialValue:101}]" 
+              <a-select disabled v-decorator="[ 'category', {initialValue:101}]"
                 :getPopupContainer="(target) => target.parentNode" @change="handleChangeStatus">
                 <a-select-option :value="101">正式工</a-select-option>
                 <a-select-option :value="103">实习生</a-select-option>
@@ -48,7 +49,7 @@
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="证件类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-select disabled v-model="sfzType" >
+              <a-select disabled v-model="sfzType">
                 <a-select-option value="0">中国身份证</a-select-option>
                 <a-select-option value="1">其他</a-select-option>
               </a-select>
@@ -56,172 +57,241 @@
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="身份证" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="20"  v-decorator="[ 'sfzCode']" />
+              <a-input disabled maxLength="20" v-decorator="[ 'sfzCode']" />
             </a-form-item>
-            </a-col>
-            <a-col :md="6" :sm="8" :lg="8">
-              <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                <a-select disabled v-decorator="[ 'sex']" 
-                  :getPopupContainer="(target) => target.parentNode">
-                  <a-select-option :value="1">男</a-select-option>
-                  <a-select-option :value="2">女</a-select-option>
-                </a-select>
-              </a-form-item>
-            </a-col>
-            <a-col :md="6" :sm="8" :lg="8">
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select disabled v-decorator="[ 'sex']" :getPopupContainer="(target) => target.parentNode">
+                <a-select-option :value="1">男</a-select-option>
+                <a-select-option :value="2">女</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="生日" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-date-picker disabled style="width: 100%" 
+              <a-date-picker disabled style="width: 100%"
                 v-decorator="['birthday', {initialValue:!model.birthday?null:moment(model.birthday,dateFormat)}]"
                 :getCalendarContainer="node => node.parentNode" />
             </a-form-item>
-            </a-col>
-            <a-col :md="6" :sm="8" :lg="8">
-                <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                  <a-input disabled maxLength="20"  v-decorator="[ 'phone']" />
-                </a-form-item>
-            </a-col>
-            
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="年龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input-number disabled min="0" max="999999" style="width: 210px;" v-decorator="['age', {}]" />
+            </a-form-item>
+          </a-col>
         </a-row>
-      
         <a-row>
-          
-            <a-col :md="6" :sm="8" :lg="8">
-              <a-form-item label="公积金" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                  <a-input disabled maxLength="20"   v-decorator="['syFund']" />
-                </a-form-item>
-              </a-col>
-            
-              <a-col :md="6" :sm="8" :lg="8">
-                <a-form-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
-                  <a-input-search disabled  v-model="checkedDepartNameString" readOnly @search="onSearch">
-                  </a-input-search>
-                </a-form-item>
-              </a-col>
-              <a-col :md="6" :sm="8" :lg="8">
-                <a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                  <a-input-search disabled  v-model="zwName" readOnly @search="zw()">
-                  </a-input-search>
-                </a-form-item>
-              </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="学历" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['education', {}]" :triggerChange="true" disabled dictCode="education" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="毕业学校" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input disabled v-decorator="['school']" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="国籍" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['nationality']" :triggerChange="true" disabled dictCode="nationality" />
+            </a-form-item>
+            </a-form-item>
+          </a-col>
         </a-row>
-
         <a-row>
+
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="银行卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="20"   v-decorator="['bankCard']" />
+              <a-input disabled maxLength="20" v-decorator="['bankCard']" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="开户行" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="30"  v-decorator="['bankAddr', {}]" />
+              <a-input disabled maxLength="30" v-decorator="['bankAddr', {}]" />
             </a-form-item>
           </a-col>
+
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="入职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-date-picker disabled style="width: 100%" 
-                v-decorator="['entryDate', {initialValue:!model.entryDate?moment(new Date(),dateFormat):moment(model.entryDate,dateFormat)}]"
-                :getCalendarContainer="node => node.parentNode" />
+            <a-form-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
+              <a-input-search disabled v-model="checkedDepartNameString" readOnly @search="onSearch">
+              </a-input-search>
             </a-form-item>
           </a-col>
+
+
+        </a-row>
+
+        <a-row>
+
+
         </a-row>
 
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="工资一" :labelCol="labelCol" :wrapperCol="wrapperCol" >
-              <a-input-number disabled min="0" max="999999" id="inputNumber"  style="width: 210px;" v-decorator="['wagesOne']" />
+            <a-form-item label="工资" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input-number disabled min="0" max="999999" id="inputNumber" style="width: 210px;"
+                v-decorator="['wagesOne']" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="工资二" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input-number disabled min="0" max="999999"  style="width: 210px;" v-decorator="['wagesTwo', {}]" />
+            <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input disabled maxLength="20" v-decorator="[ 'phone']" />
             </a-form-item>
           </a-col>
-         
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="缴交基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input-number  min="0" max="10" disabled controls="false" style="width: 210px;"  v-decorator="['wagesBase', {}]" />
+            <a-form-item label="职位" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input-search disabled v-model="zwName" readOnly @search="zw()">
+              </a-input-search>
             </a-form-item>
           </a-col>
+
         </a-row>
 
         <a-row>
-          
-          
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="公积金" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input disabled maxLength="20" v-decorator="['syFund']" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="缴交基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input-number min="0" max="10" disabled controls="false" style="width: 210px;"
+                v-decorator="['wagesBase', {}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="入职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker disabled style="width: 100%" disabled v-decorator="['entryDate']"
+                :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
         </a-row>
         <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="试用期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input suffix="月" disabled v-decorator="['trialMoth']" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="结束日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" v-decorator="['trialEndDate']" disabled
+                :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="工龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input suffix="月" v-decorator="['workMoth']" disabled />
+            </a-form-item>
+          </a-col>
+
+        </a-row>
+
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="司龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input suffix="月" v-model="moth" disabled />
+            </a-form-item>
+          </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="10"  v-decorator="[ 'urgentName',{}]" />
+              <a-input v-decorator="[ 'urgentName',{}]" disabled />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="20"  v-decorator="[ 'urgentPhone', {}]" />
+              <a-input v-decorator="[ 'urgentPhone', {}]" disabled />
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="户口地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input v-decorator="[ 'homeAddr', {}]" disabled />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input v-decorator="[ 'addr', {}]" disabled />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="身份类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-radio-group disabled v-model="identity" @change="identityChange">
-                <a-radio value="1">普通员工</a-radio>
-                <a-radio value="2">上级</a-radio>
-              </a-radio-group>
+            <a-form-item label="分摊部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input v-decorator="['shareDept', {}]" disabled />
             </a-form-item>
           </a-col>
+
         </a-row>
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input disabled maxLength="50"  v-decorator="[ 'addr', {}]" />
+            <a-form-item label="合同一" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" disabled v-decorator="['contractDate']"
+                :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="合同二" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" disabled v-decorator="['contractDate2']"
+                :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="合同三" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" disabled v-decorator="['contractDate3']"
+                :getCalendarContainer="node => node.parentNode" />
             </a-form-item>
           </a-col>
-         <a-col :md="6" :sm="8" :lg="8">
-           <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
-             <a-select disabled v-decorator="[ 'employmentStatus', {initialValue:10}]" 
-               :getPopupContainer="(target) => target.parentNode" >
-               <a-select-option :value="10">在职</a-select-option>
-               <a-select-option :value="20">离退</a-select-option>
-               <a-select-option :value="30">离职</a-select-option>
-             </a-select>
-           </a-form-item>
-         </a-col>
-            <a-col :md="6" :sm="8" :lg="8">
+
+        </a-row>
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="是否打卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-select disabled v-decorator="[ 'isAttendance', {initialValue:'0'}]" >
+              <a-select v-decorator="[ 'isAttendance']" disabled :getPopupContainer="(target) => target.parentNode">
                 <a-select-option value="0">是</a-select-option>
                 <a-select-option value="1">否</a-select-option>
               </a-select>
             </a-form-item>
-            
+
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="上班类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['type']" disabled :triggerChange="true" dictCode="type" />
+            </a-form-item>
+
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select v-decorator="[ 'employmentStatus']" disabled :getPopupContainer="(target) => target.parentNode">
+                <a-select-option :value="10">在职</a-select-option>
+                <a-select-option :value="20">离退</a-select-option>
+                <a-select-option :value="30">离职</a-select-option>
+                <a-select-option :value="40">待入职</a-select-option>
+              </a-select>
+            </a-form-item>
           </a-col>
-          
         </a-row>
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-textarea disabled maxLength="255"  v-decorator="[ 'remarks', {}]" />
+              <a-textarea v-decorator="[ 'remarks', {}]" disabled />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="附件上传" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-button icon="search" @click="uploads()" style="width: 210px;">查看</a-button>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="8">
+            <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['infoSy']" :type="'radio'" disabled :triggerChange="true"
+                dictCode="info_sy" />
             </a-form-item>
           </a-col>
-         <a-col :md="6" :sm="8" :lg="8">
-          <a-form-item label="附件上传" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-button icon="search" @click="uploads()" style="width: 210px;">查看</a-button>
-          </a-form-item>
-         </a-col>
-        <a-col :lg="8">
-          <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <j-dict-select-tag disabled v-decorator="['infoSy', {initialValue:3}]"  :type="'radio'"
-              :triggerChange="true" dictCode="info_sy" />
-          </a-form-item>
-        </a-col>
         </a-row>
-           
-      
         <a-row>
-         
-          
-            <a-table rowKey="id" bordered :data-source="dataSources" :columns="columnst"  :pagination="ipaginations" @change="handleTableChanges">
-              
-            </a-table>
-         
+          <a-table rowKey="id" bordered :data-source="dataSources" :columns="columnst" :pagination="ipaginations"
+            @change="handleTableChanges">
+          </a-table>
         </a-row>
 
       </a-form>
@@ -229,21 +299,19 @@
     <depart-window ref="departWindow" @ok="modalFormOk"></depart-window>
 
     <a-modal title="附件" :visible="visiblet" @ok="saveUpload()" @cancel="handleCancelts()" footer="">
-      <a-upload disabled action="http://58.34.141.138:8085/jeecg-boot/sys/common/upload" list-type="picture" :file-list="fileLists"
-        @change="t" method="post" @download="handleDownload" :showUploadList="{
+      <a-upload disabled action="http://58.34.141.138:8085/jeecg-boot/sys/common/upload" list-type="picture"
+        :file-list="fileLists" @change="t" method="post" @download="handleDownload" :showUploadList="{
               showRemoveIcon: false,
               showDownloadIcon: true
-            }"
-            :remove="handleRemove"
-            >
-            
-        
+            }" :remove="handleRemove">
+
+
       </a-upload>
     </a-modal>
-    
+
   </a-modal>
-  
-  
+
+
 </template>
 
 <script>
@@ -284,16 +352,16 @@
     },
     data() {
       return {
-        selectedRowKeys:[],
-        selectionRows:[],
+        selectedRowKeys: [],
+        selectionRows: [],
         departDisabled: false, //是否是我的部门调用该页面
         roleDisabled: false, //是否是角色维护调用该页面
         modalWidth: 800,
         drawerWidth: 700,
         titles: "新增员工",
-        visibles:false,
-        personType:false,
-        dataSources:[],
+        visibles: false,
+        personType: false,
+        dataSources: [],
         modaltoggleFlag: true,
         sfzCode: "",
         bankCard: "",
@@ -304,10 +372,14 @@
         isSalary: "0",
         email: "",
         isAttendance: "0",
-        zwName:"",
-        zwCode:"",
+        zwName: "",
+        zwCode: "",
         sfzType: "0",
-        ipaginations:{
+        wkDate: new Date,
+        wkMoth: 6,
+        wkEndDate: null,
+        moth: 0,
+        ipaginations: {
           current: 1,
           pageSize: 10,
           pageSizeOptions: ['10', '20', '30'],
@@ -382,61 +454,60 @@
           },
           bankCard: {
             rules: [{
-              required: true,
-              message: '请输入银行账号'
-            },
-            {validator: this.validatebankCard}
+                required: true,
+                message: '请输入银行账号'
+              },
+              {
+                validator: this.validatebankCard
+              }
             ]
           },
           syFund: {
             rules: [{
-              required: true,
-              message: '请输入公积金账号'
-            },
-            {validator: this.validatesyFund}
+                required: true,
+                message: '请输入公积金账号'
+              },
+              {
+                validator: this.validatesyFund
+              }
             ]
           },
           wagesOne: {
             rules: [{
-              required: true,
-              message: '请输入基本工资'
-            }
-           
+                required: true,
+                message: '请输入基本工资'
+              }
+
             ]
           }
         },
-        columnst:[{
-          title: '员工姓名',
-          dataIndex: 'realname',
-        },{
-          title: '类型',
-          dataIndex: 'type',
-          customRender:function(t,r,index){
-            var name="奖";
-            if(t=="1"||t==1){
-              name="惩";
+        columnst: [{
+            title: '类型',
+            dataIndex: 'type_dictText',
+           
+          }, {
+            title: '备注',
+            dataIndex: 'demo',
+          },
+          {
+            title: '日期',
+            align: "center",
+            dataIndex: 'date',
+            customRender: function(t, r, index) {
+              return moment(t).format('YYYY-MM-DD');
             }
-            return name;
-          }
-        },{
-          title: '备注',
-          dataIndex: 'demo',
-        },
-        {
-             title: '日期',
-             align:"center",
-             dataIndex: 'date',
-             customRender:function(t,r,index){
-               return moment(t).format('YYYY-MM-DD');
-             }
+          },
+          {
+              title: '操作员',
+              dataIndex: 'createBy',
             },
         ],
         departIdShow: false,
         departIds: [], //负责部门id
         title: "操作",
         visible: false,
-        dialogStyle:{
-          top:"15px"
+        dialogStyle: {
+          top: "15px"
         },
         model: {},
         roleList: [],
@@ -472,9 +543,9 @@
           queryTenantList: '/sys/tenant/queryList',
           xzupload: '/sys/common/static',
           sysFile: '/sysFile/sysFile/queryByUserId',
-          delSysFile:'/sysFile/sysFile/deleteById',
-          post:'/sys/position/listByDept',
-          Prize:'/userPrize/userPrize/list'
+          delSysFile: '/sysFile/sysFile/deleteById',
+          post: '/sys/position/listByDept',
+          Prize: '/userPrize/userPrize/list'
         },
         identity: "1",
         fileList: [],
@@ -497,58 +568,57 @@
       }
     },
     methods: {
-      zwOk(){
-        if(this.selectionRows!=null&&this.selectionRows.length>0){
-        this.zwName=this.selectionRows[0].name;
-        this.zwCode=this.selectionRows[0].code;
+      zwOk() {
+        if (this.selectionRows != null && this.selectionRows.length > 0) {
+          this.zwName = this.selectionRows[0].name;
+          this.zwCode = this.selectionRows[0].code;
         }
-        this.visibles=false;
+        this.visibles = false;
       },
       onSelectChanges(selectedRowKeys, selectionRows) {
         this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows=selectionRows;
+        this.selectionRows = selectionRows;
+      },
+      handleTableChanges(pagination, filters, sorter) {
+        //分页、排序、筛选变化时触发
+        //TODO 筛选
+        if (Object.keys(sorter).length > 0) {
+          this.isorter.column = sorter.field;
+          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
+        }
+        this.ipaginations = pagination;
+        this.queryzw();
       },
-     handleTableChanges(pagination, filters, sorter) {
-       //分页、排序、筛选变化时触发
-       //TODO 筛选
-       if (Object.keys(sorter).length > 0) {
-         this.isorter.column = sorter.field;
-         this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
-       }
-       this.ipaginations = pagination;
-       this.queryzw();
-     },
-      
-      queryPrize(){
+
+      queryPrize() {
         getAction(this.url.Prize, {
-          pageNo:this.ipaginations.current,
+          pageNo: this.ipaginations.current,
           pageSize: this.ipaginations.pageSize,
-          userId:this.userId
+          userId: this.userId
         }).then((res) => {
           if (res.success) {
-           this.dataSources = res.result.records||res.result;
-           if(res.result.total)
-           {
-             this.ipaginations.total = res.result.total;
-           }else{
-             this.ipaginationstotal = 0;
-           }
-          } 
-        }).finally(() => {
-        });
+            this.dataSources = res.result.records || res.result;
+            if (res.result.total) {
+              this.ipaginations.total = res.result.total;
+            } else {
+              this.ipaginationstotal = 0;
+            }
+          }
+        }).finally(() => {});
       },
-    
-      handleRemove(file){
-        if(this.userId!=null&&this.userId!=""){
-        deleteAction(this.url.delSysFile, {userid:this.userId,name:file.name}).then((res) => {
-          if (res.success) {
-          } 
-        }).finally(() => {
-        });
+
+      handleRemove(file) {
+        if (this.userId != null && this.userId != "") {
+          deleteAction(this.url.delSysFile, {
+            userid: this.userId,
+            name: file.name
+          }).then((res) => {
+            if (res.success) {}
+          }).finally(() => {});
         }
       },
       handleCancelts() {
-       // this.fileList = [];
+        // this.fileList = [];
         this.visiblet = false;
       },
       // 文件下载
@@ -610,11 +680,11 @@
 
 
       },
-      handleChangeStatus(e){
-        if(e==101){
-          this.personType=false;
-        }else{
-          this.personType=true;
+      handleChangeStatus(e) {
+        if (e == 101) {
+          this.personType = false;
+        } else {
+          this.personType = true;
           this.form.setFieldsValue({
             wagesBase: null
           })
@@ -700,10 +770,10 @@
         this.bankCard = "";
         this.phone = "";
         this.email = "";
-        this.zwCode="";
-        this.zwName="";
-        this.selectedRowKeys=[];
-        this.selectionRows=[];
+        this.zwCode = "";
+        this.zwName = "";
+        this.selectedRowKeys = [];
+        this.selectionRows = [];
       },
       add() {
         this.picUrl = "";
@@ -712,6 +782,10 @@
         this.edit({
           activitiSync: '1'
         });
+        var date = new Date();
+        date.setMonth(date.getMonth() + 6)
+        this.wkEndDate = date;
+        this.wkMoth = 6;
       },
       edit(record) {
         this.realname = record.realname;
@@ -731,14 +805,22 @@
         if (record.sfzType != null && record.sfzType != "") {
           this.sfzType = record.sfzType;
         }
+        if (record.entryDate != null) {
+          this.moth = this.countMoth(record.entryDate)
+        }
         that.visible = true;
         that.model = Object.assign({}, record);
-        this.zwCode=record.post;
-        this.zwName=record.post_dictText;
+        this.zwCode = record.post;
+        this.zwName = record.post_dictText;
+        this.wkDate = record.entryDate;
+        this.wkMoth = record.trialMoth - 0;
         that.$nextTick(() => {
           that.form.setFieldsValue(pick(this.model, 'sex', 'email', 'phone', 'urgentName', 'urgentPhone',
-            'bankAddr', 'bankCard', 'realname', 'egName', 'sfzCode','isAttendance','remarks','addr',
-            'infoSy', 'syFund', 'category', 'employmentStatus', 'wagesOne', 'wagesTwo', 'security','wagesBase'))
+            'bankAddr', 'bankCard', 'realname', 'egName', 'age', 'sfzCode', 'isAttendance', 'remarks', 'addr',
+            'nationality', 'trialMoth', 'trialEndDate', 'workMoth', 'divisionMoth',
+            'infoSy', 'syFund', 'category', 'employmentStatus', 'wagesOne', 'wagesTwo', 'security', 'wagesBase',
+            'homeAddr', 'education', 'school', 'contractDate', 'contractDate2', 'type', 'contractDate3',
+            'shareDept'))
         });
         //身份为上级显示负责部门,否则不显示
         if (this.model.userIdentity == "2") {
@@ -748,7 +830,7 @@
           this.identity = "1";
           this.departIdShow = false;
         }
-       
+
         //update-begin-author:taoyan date:2020710 for:多租户配置
         if (!record.relTenantIds || record.relTenantIds.length == 0) {
           this.currentTenant = []
@@ -760,7 +842,7 @@
           this.userId = record.id;
           this.queryFiles(record.id)
         }
-        
+
         // 调用查询用户对应的部门信息的方法
         that.checkedDepartKeys = [];
         that.loadCheckedDeparts();
@@ -769,9 +851,23 @@
           this.queryPrize();
         }
       },
+      countMoth(e) {
+        var date = new Date(e)
+        var newDate = new Date();
+        var seconds = Math.floor((newDate.getTime() - date.getTime()) / 1000);
+        var minutes = Math.floor(seconds / 60);
+        var hours = Math.floor(minutes / 60);
+        var days = Math.floor(hours / 24);
+        var months = Math.floor(days / 30);
+        var diffValue = 0;
+        if (months > 0) {
+          diffValue = months;
+        }
+        return diffValue;
+      },
       //
       loadCheckedDeparts() {
-        var id= this.userId
+        var id = this.userId
         let that = this;
         if (!that.userId) {
           return
@@ -823,7 +919,7 @@
         this.resultDepartOptions = [];
         this.departIds = [];
         this.departIdShow = false;
-        this.fileLists=[];
+        this.fileLists = [];
         this.identity = "1";
         this.bankAddr = "";
         this.bankCard = "";
@@ -861,7 +957,7 @@
               }
               formData.txt = txt.join(",");
             }
-            formData.post=this.zwCode;
+            formData.post = this.zwCode;
             //formData.selectedroles = this.selectedRole.length>0?this.selectedRole.join(","):'';
             formData.selecteddeparts = this.userDepartModel.departIdList.length > 0 ? this.userDepartModel
               .departIdList.join(",") : '';
@@ -927,14 +1023,15 @@
           callback()
         } else {
           if (this.sfzType == "0") {
-            if (value.length==15&&RegExp(/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/).test(value)) {
+            if (value.length == 15 && RegExp(/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/).test(value)) {
               this.getBirth(value)
-            }else if(value.length==18&&RegExp(/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/).test(value)){
+            } else if (value.length == 18 && RegExp(
+                /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/).test(value)) {
               this.getBirth(value)
-            }else{
+            } else {
               callback("请输入正确格式的身份证号码!");
             }
-            
+
           }
           callback()
         }
@@ -958,8 +1055,8 @@
         if (!value) {
           callback()
         } else {
-          if(value.length!=9&&value.length!=12){
-           callback('请输入正确格式的公积金账号');
+          if (value.length != 9 && value.length != 12) {
+            callback('请输入正确格式的公积金账号');
           }
           callback()
         }
@@ -993,8 +1090,8 @@
         if (!value) {
           callback()
         } else {
-          if(value.length!=19&&value.length!=17&&value.length!=16){
-           callback('请输入正确格式的银行卡账号');
+          if (value.length != 19 && value.length != 17 && value.length != 16) {
+            callback('请输入正确格式的银行卡账号');
           }
           callback()
         }

+ 406 - 202
src/views/system/modules/UserModal.vue

@@ -1,5 +1,6 @@
 <template>
-  <a-modal :width="1000" :dialogStyle="dialogStyle" title="员工信息" :visible="visible" @ok="handleSubmit()" @cancel="handleCancel" cancelText="关闭">
+  <a-modal :width="1150" :dialogStyle="dialogStyle" title="员工信息" :visible="visible" @ok="handleSubmit()"
+    @cancel="handleCancel" cancelText="关闭">
 
     <template slot="title">
       <div style="width: 100%;">
@@ -15,8 +16,8 @@
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-model-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
-               <j-image-upload  class="avatar-uploader" text="上传" v-model="model.avatar" ></j-image-upload>
-             </a-form-model-item>
+              <j-image-upload class="avatar-uploader" text="上传" v-model="model.avatar"></j-image-upload>
+            </a-form-model-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -28,7 +29,7 @@
               <a-input :maxLength="20" placeholder="请输入英文名" v-decorator="[ 'egName', validatorRules.egName]" />
             </a-form-item>
           </a-col>
-          
+
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input :maxLength="30" placeholder="请输入邮箱" v-decorator="[ 'email', validatorRules.email]" />
@@ -59,38 +60,59 @@
             <a-form-item label="身份证" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input :maxLength="20" placeholder="请输入身份证号码" v-decorator="[ 'sfzCode', validatorRules.sfzCode]" />
             </a-form-item>
-            </a-col>
+          </a-col>
         </a-row>
 
         <a-row>
-            <a-col :md="6" :sm="8" :lg="8">
-              <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                <a-select v-decorator="[ 'sex',validatorRules.sex]" placeholder="请选择性别"
-                  :getPopupContainer="(target) => target.parentNode">
-                  <a-select-option :value="1">男</a-select-option>
-                  <a-select-option :value="2">女</a-select-option>
-                </a-select>
-              </a-form-item>
-            </a-col>
-            
-            <a-col :md="6" :sm="8" :lg="8">
-             <a-form-item label="生日" :labelCol="labelCol" :wrapperCol="wrapperCol">
-               <a-date-picker style="width: 100%" placeholder="请选择生日"
-                 v-decorator="['birthday', {initialValue:!model.birthday?null:moment(model.birthday,dateFormat)}]"
-                 :getCalendarContainer="node => node.parentNode" />
-             </a-form-item>
-            </a-col>
-           <a-col :md="6" :sm="8" :lg="8">
-               <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                 <a-input :maxLength="20" placeholder="请输入手机号码" v-decorator="[ 'phone', validatorRules.phone]" />
-               </a-form-item>
-           </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select v-decorator="[ 'sex',validatorRules.sex]" placeholder="请选择性别"
+                :getPopupContainer="(target) => target.parentNode">
+                <a-select-option :value="1">男</a-select-option>
+                <a-select-option :value="2">女</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="生日" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" placeholder="请选择生日"
+                v-decorator="['birthday', {initialValue:!model.birthday?null:moment(model.birthday,dateFormat)}]"
+                :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="年龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="3" placeholder="请输入年龄" v-decorator="['age', {}]" />
+            </a-form-item>
+          </a-col>
+        </a-row>
+
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="学历" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['education', {}]" :triggerChange="true" placeholder="请选择学历"
+                dictCode="education" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="毕业学校" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="30" placeholder="请输入毕业学校" v-decorator="['school']" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="国籍" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['nationality', {initialValue:101}]" :triggerChange="true"
+                placeholder="请选择国籍" dictCode="nationality" />
+            </a-form-item>
+            </a-form-item>
+          </a-col>
         </a-row>
 
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="银行卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input :maxLength="20" placeholder="请输入银行卡号"  v-decorator="['bankCard', validatorRules.bankCard]" />
+              <a-input :maxLength="20" placeholder="请输入银行卡号" v-decorator="['bankCard', validatorRules.bankCard]" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
@@ -99,8 +121,9 @@
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="*部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
-              <a-input-search placeholder="点击选择部门" v-model="checkedDepartNameString" readOnly @search="onSearch">
+            <a-form-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
+              <a-input-search placeholder="点击选择部门" v-decorator="['checkedDepartNameString', validatorRules.deptName]"
+                readOnly @search="onSearch">
                 <a-button slot="enterButton" icon="search">选择</a-button>
               </a-input-search>
             </a-form-item>
@@ -109,23 +132,27 @@
 
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="工资" :labelCol="labelCol" :wrapperCol="wrapperCol" >
-              <a-input :maxLength="6"   placeholder="请输入基本工资" style="width: 210px;" v-decorator="['wagesOne',validatorRules.wagesOne]" />
+            <a-form-item label="工资" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="6" placeholder="请输入基本工资" v-decorator="['wagesOne',validatorRules.wagesOne]" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="工资二" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input :maxLength="6" placeholder="请输入基本工资" style="width: 210px;" v-decorator="['wagesTwo', {}]" />
+            <a-form-item label="手机号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="20" placeholder="请输入手机号码" v-decorator="[ 'phone', validatorRules.phone]" />
             </a-form-item>
           </a-col>
+
           <!-- <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="社保基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input-number placeholder="请输入社保基数" style="width: 210px;" v-decorator="['security', {}]" />
             </a-form-item>
           </a-col> -->
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
-             <j-select-position placeholder="请选择职务" :multiple="false" v-model="model.post"/>
+            <a-form-item label="职位" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input-search placeholder="点击选择职位" v-model="zwName" readOnly @search="onSearchs">
+                <a-button slot="enterButton" icon="search">选择</a-button>
+              </a-input-search>
+              <!-- <j-select-position placeholder="请选择职位" :multiple="false" v-model="model.post"/> -->
             </a-form-item>
           </a-col>
         </a-row>
@@ -133,24 +160,50 @@
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="公积金" :labelCol="labelCol" :wrapperCol="wrapperCol">
-                <a-input :maxLength="20" placeholder="请输入公积金账号"  v-decorator="['syFund',validatorRules.syFund]" />
-              </a-form-item>
-            </a-col>
+              <a-input :maxLength="20" placeholder="请输入公积金账号" v-decorator="['syFund',validatorRules.syFund]" />
+            </a-form-item>
+          </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="缴交基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input :maxLength="2" :disabled="personType"  style="width: 210px;" placeholder="请输入缴交基数" v-decorator="['wagesBase', {}]" />
+              <a-input :maxLength="2" :disabled="personType" placeholder="请输入缴交基数" v-decorator="['wagesBase', {}]" />
             </a-form-item>
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="入职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-date-picker style="width: 100%" placeholder="请选择入职日期"
-                v-decorator="['entryDate', {initialValue:!model.entryDate?moment(new Date(),dateFormat):moment(model.entryDate,dateFormat)}]"
+              <a-date-picker style="width: 100%" placeholder="请选择入职日期" v-decorator="['entryDate',{initialValue:!model.entryDate?moment(new Date(),dateFormat):moment(model.entryDate,dateFormat),rules: [{ required: true, message: '请选择入职时间'},{validator: this.validateentryDate}]}]" :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+
+        </a-row>
+
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="试用期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="5" placeholder="请输入试用期" suffix="月"
+                v-decorator="['trialMoth',{initialValue:6,rules: [{ required: true, message: '请输入试用期'},{validator: this.validatetrialMoth}]}]" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="结束日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" placeholder="请选择试用结束日期"
+                v-decorator="['trialEndDate',{initialValue:moment(wkEndDate,dateFormat)}]"
                 :getCalendarContainer="node => node.parentNode" />
             </a-form-item>
           </a-col>
-          
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="工龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="5" placeholder="请输入工龄" suffix="月" v-decorator="['workMoth']" />
+            </a-form-item>
+          </a-col>
+
         </a-row>
+
         <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="司龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="5" placeholder="请输入司龄" suffix="月" v-model="moth" />
+            </a-form-item>
+          </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input :maxLength="20" placeholder="请输入紧急联系人" v-decorator="[ 'urgentName',{}]" />
@@ -161,33 +214,45 @@
               <a-input :maxLength="20" placeholder="请输入紧急联系人电话" v-decorator="[ 'urgentPhone', {}]" />
             </a-form-item>
           </a-col>
+        </a-row>
+        <a-row>
           <a-col :md="6" :sm="8" :lg="8">
-            <a-form-item label="身份类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-radio-group v-model="identity" @change="identityChange">
-                <a-radio value="1">普通员工</a-radio>
-                <a-radio value="2">上级</a-radio>
-              </a-radio-group>
+            <a-form-item label="户口地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="200" placeholder="请输入户口地址" v-decorator="[ 'homeAddr', {}]" />
             </a-form-item>
           </a-col>
-        </a-row>
-        <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-input :maxLength="50" placeholder="请输入家庭住址" v-decorator="[ 'addr', {}]" />
             </a-form-item>
           </a-col>
-         <a-col :md="6" :sm="8" :lg="8">
-           <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
-             <a-select v-decorator="[ 'employmentStatus', {initialValue:40}]" placeholder="请选择雇佣状态"
-               :getPopupContainer="(target) => target.parentNode" >
-               <a-select-option :value="10">在职</a-select-option>
-               <a-select-option :value="20">离退</a-select-option>
-               <a-select-option :value="30">离职</a-select-option>
-               <a-select-option :value="40">待入职</a-select-option>
-             </a-select>
-           </a-form-item>
-         </a-col>
-            <a-col :md="6" :sm="8" :lg="8">
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="分摊部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-input :maxLength="20" placeholder="请输入分摊部门" v-decorator="['shareDept', {}]" />
+            </a-form-item>
+          </a-col>
+
+        </a-row>
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="合同一" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" placeholder="请选择合同日期" v-decorator="['contractDate']" :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="合同二" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" placeholder="请选择合同日期" v-decorator="['contractDate2']" :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="合同三" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-date-picker style="width: 100%" placeholder="请选择合同日期" v-decorator="['contractDate3']" :getCalendarContainer="node => node.parentNode" />
+            </a-form-item>
+          </a-col>
+
+        </a-row>
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="是否打卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
               <a-select v-decorator="[ 'isAttendance', {initialValue:'0'}]" placeholder="请选择"
                 :getPopupContainer="(target) => target.parentNode">
@@ -195,9 +260,26 @@
                 <a-select-option value="1">否</a-select-option>
               </a-select>
             </a-form-item>
-            
+
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="上班类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['type', {initialValue:2}]" :triggerChange="true" placeholder="请选择上班类型"
+                dictCode="type" />
+            </a-form-item>
+
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select v-decorator="[ 'employmentStatus', {initialValue:40}]" placeholder="请选择雇佣状态"
+                :getPopupContainer="(target) => target.parentNode">
+                <a-select-option :value="10">在职</a-select-option>
+                <a-select-option :value="20">离退</a-select-option>
+                <a-select-option :value="30">离职</a-select-option>
+                <a-select-option :value="40">待入职</a-select-option>
+              </a-select>
+            </a-form-item>
           </a-col>
-          
         </a-row>
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
@@ -205,19 +287,19 @@
               <a-textarea :maxLength="255" placeholder="请输备注" v-decorator="[ 'remarks', {}]" />
             </a-form-item>
           </a-col>
-         <a-col :md="6" :sm="8" :lg="8">
-          <a-form-item label="附件上传" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <a-button icon="search" @click="uploads()" style="width: 210px;">选择</a-button>
-          </a-form-item>
-         </a-col>
-        <a-col :lg="8">
-          <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
-            <j-dict-select-tag v-decorator="['infoSy', {initialValue:3}]" placeholder="请选择同步" :type="'radio'"
-              :triggerChange="true" dictCode="info_sy" />
-          </a-form-item>
-        </a-col>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="附件上传" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-button icon="search" @click="uploads()" style="width: 210px;">选择</a-button>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="8">
+            <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <j-dict-select-tag v-decorator="['infoSy', {initialValue:3}]" placeholder="请选择同步" :type="'radio'"
+                :triggerChange="true" dictCode="info_sy" />
+            </a-form-item>
+          </a-col>
         </a-row>
-           
+
         <!-- <a-row>
           <a-col :lg="8">
             <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -227,36 +309,34 @@
           </a-col>
           
         </a-row> -->
-      
+
 
       </a-form>
     </a-spin>
     <depart-window ref="departWindow" @ok="modalFormOk"></depart-window>
 
     <a-modal title="附件" :visible="visiblet" @ok="saveUpload()" @cancel="handleCancelts()" footer="">
-      <a-upload action="http://58.34.141.138:8085/jeecg-boot/sys/common/upload" list-type="picture" :file-list="fileLists"
-        @change="t" method="post" @download="handleDownload" :showUploadList="{
+      <a-upload action="http://58.34.141.138:8085/jeecg-boot/sys/common/upload" list-type="picture"
+        :file-list="fileLists" @change="t" method="post" @download="handleDownload" :showUploadList="{
               showRemoveIcon: true,
               showDownloadIcon: true
-            }"
-            :remove="handleRemove"
-            >
-            
+            }" :remove="handleRemove">
+
         <a-button>
           <a-icon type="upload" />上传
         </a-button>
       </a-upload>
     </a-modal>
-    <a-modal v-model="visibles" title="职" @ok="zwOk()">
-     <a-table rowKey="id" bordered :data-source="dataSources" :columns="columnst"  :pagination="ipaginations" @change="handleTableChanges"
-     :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChanges,type: 'radio'}"
-     >
-       
-     </a-table>
+    <a-modal v-model="visibles" title="职" @ok="zwOk()">
+      <a-table rowKey="code" bordered :data-source="dataSources" :columns="columnst" :pagination="ipaginations"
+        @change="handleTableChanges"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChanges,type: 'radio'}">
+
+      </a-table>
     </a-modal>
   </a-modal>
-  
-  
+
+
 </template>
 
 <script>
@@ -297,17 +377,18 @@
     },
     data() {
       return {
-        selectedRowKeys:[],
-        selectionRows:[],
+        selectedRowKeys: [],
+        selectionRows: [],
         departDisabled: false, //是否是我的部门调用该页面
         roleDisabled: false, //是否是角色维护调用该页面
         modalWidth: 800,
         drawerWidth: 700,
         titles: "新增员工",
-        visibles:false,
-        personType:false,
-        dataSources:[],
+        visibles: false,
+        personType: false,
+        dataSources: [],
         modaltoggleFlag: true,
+        moth:0,
         sfzCode: "",
         bankCard: "",
         bankAddr: "",
@@ -317,10 +398,10 @@
         isSalary: "0",
         email: "",
         isAttendance: "0",
-        zwName:"",
-        zwCode:"",
+        zwName: "",
+        zwCode: "",
         sfzType: "0",
-        ipaginations:{
+        ipaginations: {
           current: 1,
           pageSize: 10,
           pageSizeOptions: ['10', '20', '30'],
@@ -339,6 +420,9 @@
         checkedDepartNames: [], // 保存部门的名称 =>title
         checkedDepartNameString: "", // 保存部门的名称 =>title
         resultDepartOptions: [],
+        wkDate: new Date,
+        wkMoth: 6,
+        wkEndDate: null,
         userId: "", //保存用户id
         disableSubmit: false,
         userDepartModel: {
@@ -363,6 +447,12 @@
               validator: this.validateEmail
             }]
           },
+          deptName: {
+            rules: [{
+              required: true,
+              message: '请选择部门'
+            }]
+          },
           realname: {
             rules: [{
               required: true,
@@ -395,46 +485,50 @@
           },
           bankCard: {
             rules: [{
-              required: true,
-              message: '请输入银行账号'
-            },
-            {validator: this.validatebankCard}
+                required: true,
+                message: '请输入银行账号'
+              },
+              {
+                validator: this.validatebankCard
+              }
             ]
           },
           syFund: {
             rules: [{
-              required: true,
-              message: '请输入公积金账号'
-            },
-            {validator: this.validatesyFund}
+                required: true,
+                message: '请输入公积金账号'
+              },
+              {
+                validator: this.validatesyFund
+              }
             ]
           },
           wagesOne: {
             rules: [{
-              required: true,
-              message: '请输入基本工资'
-            }
-           
+                required: true,
+                message: '请输入基本工资'
+              },
+              {
+                validator: this.validatewages
+             }
+ 
             ]
-          }
+          },
+
         },
-        columnst:[{
+        columnst: [{
           title: '职位编码',
           dataIndex: 'code',
-        },{
+        }, {
           title: '职位名称',
           dataIndex: 'name',
-        },{
-          title: '部门',
-          dataIndex: 'deptName',
-        },
-        ],
+        }],
         departIdShow: false,
         departIds: [], //负责部门id
         title: "操作",
         visible: false,
-        dialogStyle:{
-          top:"15px"
+        dialogStyle: {
+          top: "15px"
         },
         model: {},
         roleList: [],
@@ -470,8 +564,8 @@
           queryTenantList: '/sys/tenant/queryList',
           xzupload: '/sys/common/static',
           sysFile: '/sysFile/sysFile/queryByUserId',
-          delSysFile:'/sysFile/sysFile/deleteById',
-          post:'/sys/position/listByDept'
+          delSysFile: '/sysFile/sysFile/deleteById',
+          post: '/sys/position/listByDept'
         },
         identity: "1",
         fileList: [],
@@ -494,64 +588,72 @@
       }
     },
     methods: {
-      zwOk(){
-        if(this.selectionRows!=null&&this.selectionRows.length>0){
-        this.zwName=this.selectionRows[0].name;
-        this.zwCode=this.selectionRows[0].code;
+      zwOk() {
+        console.log(this.selectedRowKeys)
+        if (this.selectionRows != null && this.selectionRows.length > 0) {
+          this.zwName = this.selectionRows[0].name;
+          this.zwCode = this.selectionRows[0].code;
+        } else {
+          this.zwCode = "";
+          this.zwName = "";
         }
-        this.visibles=false;
+        this.visibles = false;
       },
       onSelectChanges(selectedRowKeys, selectionRows) {
         this.selectedRowKeys = selectedRowKeys;
-        this.selectionRows=selectionRows;
+        this.selectionRows = selectionRows;
       },
-     handleTableChanges(pagination, filters, sorter) {
-       //分页、排序、筛选变化时触发
-       //TODO 筛选
-       if (Object.keys(sorter).length > 0) {
-         this.isorter.column = sorter.field;
-         this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
-       }
-       this.ipaginations = pagination;
-       this.queryzw();
-     },
-      zw(){
-        if(this.userDepartModel.departIdList==null||this.userDepartModel.departIdList.length<1){
+      handleTableChanges(pagination, filters, sorter) {
+        //分页、排序、筛选变化时触发
+        //TODO 筛选
+        if (Object.keys(sorter).length > 0) {
+          this.isorter.column = sorter.field;
+          this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
+        }
+        this.ipaginations = pagination;
+        this.queryzw();
+      },
+      onSearchs() {
+        if (this.userDepartModel.departIdList == null || this.userDepartModel.departIdList.length < 1) {
           this.$message.warning('请先选择部门!');
           return;
         }
-        this.visibles=true;
-       this.queryzw();
+        this.selectedRowKeys.push(this.zwCode);
+        this.visibles = true;
+        this.queryzw();
+        console.log(this.selectedRowKeys)
+
       },
-      queryzw(){
+      queryzw() {
         getAction(this.url.post, {
-          pageNo:this.ipaginations.current,
+          pageNo: this.ipaginations.current,
           pageSize: this.ipaginations.pageSize,
-          deptId:this.userDepartModel.departIdList.join(",")
+          deptId: this.userDepartModel.departIdList.join(",")
         }).then((res) => {
           if (res.success) {
-           this.dataSources = res.result.records||res.result;
-           if(res.result.total)
-           {
-             this.ipaginations.total = res.result.total;
-           }else{
-             this.ipaginationstotal = 0;
-           }
-          } 
-        }).finally(() => {
-        });
+            this.dataSources = res.result.records || res.result;
+            if (res.result.total) {
+              this.ipaginations.total = res.result.total;
+            } else {
+              this.ipaginations.total = 0;
+              this.selectionRows = [];
+              this.selectedRowKeys = [];
+            }
+          }
+        }).finally(() => {});
       },
-      handleRemove(file){
-        if(this.userId!=null&&this.userId!=""){
-        deleteAction(this.url.delSysFile, {userid:this.userId,name:file.name}).then((res) => {
-          if (res.success) {
-          } 
-        }).finally(() => {
-        });
+      handleRemove(file) {
+        if (this.userId != null && this.userId != "") {
+          deleteAction(this.url.delSysFile, {
+            userid: this.userId,
+            name: file.name
+          }).then((res) => {
+            if (res.success) {}
+          }).finally(() => {});
         }
       },
       handleCancelts() {
-       // this.fileList = [];
+        // this.fileList = [];
         this.visiblet = false;
       },
       // 文件下载
@@ -595,6 +697,14 @@
         }
 
         if (birthday != "" && birthday != null) {
+          let birthdays = new Date(birthday.replace(/(.{4})(.{2})/, "$1-$2-"));
+          let d = new Date();
+          let age = d.getFullYear() - birthdays.getFullYear() - (d.getMonth() < birthdays.getMonth() || (d.getMonth() ==
+            birthdays.getMonth() && d.getDate() < birthdays.getDate()) ? 1 : 0);
+
+          this.form.setFieldsValue({
+            age: age
+          })
           this.form.setFieldsValue({
             birthday: birthday.replace(/(.{4})(.{2})/, "$1-$2-")
           })
@@ -613,11 +723,11 @@
 
 
       },
-      handleChangeStatus(e){
-        if(e==101){
-          this.personType=false;
-        }else{
-          this.personType=true;
+      handleChangeStatus(e) {
+        if (e == 101) {
+          this.personType = false;
+        } else {
+          this.personType = true;
           this.form.setFieldsValue({
             wagesBase: null
           })
@@ -703,10 +813,10 @@
         this.bankCard = "";
         this.phone = "";
         this.email = "";
-        this.zwCode="";
-        this.zwName="";
-        this.selectedRowKeys=[];
-        this.selectionRows=[];
+        this.zwCode = "";
+        this.zwName = "";
+        this.selectedRowKeys = [];
+        this.selectionRows = [];
       },
       add() {
         this.picUrl = "";
@@ -715,6 +825,10 @@
         this.edit({
           activitiSync: '1'
         });
+        var date = new Date();
+        date.setMonth(date.getMonth() + 6)
+        this.wkEndDate = date;
+        this.wkMoth=6;
       },
       edit(record) {
         this.realname = record.realname;
@@ -733,15 +847,21 @@
         }
         if (record.sfzType != null && record.sfzType != "") {
           this.sfzType = record.sfzType;
+        }if(record.entryDate!=null){
+            this.moth=this.countMoth(record.entryDate)
         }
         that.visible = true;
         that.model = Object.assign({}, record);
-        this.zwCode=record.post;
-        this.zwName=record.post_dictText;
+        this.zwCode = record.post;
+        this.zwName = record.post_dictText;
+        this.wkDate = record.entryDate;
+        this.wkMoth = record.trialMoth - 0;
         that.$nextTick(() => {
           that.form.setFieldsValue(pick(this.model, 'sex', 'email', 'phone', 'urgentName', 'urgentPhone',
-            'bankAddr', 'bankCard', 'realname', 'egName', 'sfzCode','isAttendance','remarks','addr','post',
-            'infoSy', 'syFund', 'category', 'employmentStatus', 'wagesOne', 'wagesTwo', 'security','wagesBase'))
+            'bankAddr', 'bankCard', 'realname', 'egName', 'age', 'sfzCode', 'isAttendance', 'remarks', 'addr',
+            'nationality', 'trialMoth', 'trialEndDate', 'workMoth', 'divisionMoth',
+            'infoSy', 'syFund', 'category', 'employmentStatus', 'wagesOne', 'wagesTwo', 'security', 'wagesBase',
+            'homeAddr', 'education', 'school','contractDate','contractDate2','type','contractDate3','shareDept'))
         });
         //身份为上级显示负责部门,否则不显示
         if (this.model.userIdentity == "2") {
@@ -751,7 +871,7 @@
           this.identity = "1";
           this.departIdShow = false;
         }
-       
+
         //update-begin-author:taoyan date:2020710 for:多租户配置
         if (!record.relTenantIds || record.relTenantIds.length == 0) {
           this.currentTenant = []
@@ -763,7 +883,7 @@
           this.userId = record.id;
           this.queryFiles(record.id)
         }
-        
+
         // 调用查询用户对应的部门信息的方法
         that.checkedDepartKeys = [];
         that.loadCheckedDeparts();
@@ -773,7 +893,7 @@
       },
       //
       loadCheckedDeparts() {
-        var id= this.userId
+        var id = this.userId
         let that = this;
         if (!that.userId) {
           return
@@ -787,7 +907,10 @@
             var departId = [];
             for (let i = 0; i < res.result.length; i++) {
               that.checkedDepartNames.push(res.result[i].title);
-              this.checkedDepartNameString = this.checkedDepartNames.join(",");
+              this.form.setFieldsValue({
+                checkedDepartNameString: this.checkedDepartNames.join(",")
+              })
+              //this.checkedDepartNameString = this.checkedDepartNames.join(",");
               that.checkedDepartKeys.push(res.result[i].key);
               //新增负责部门选择下拉框
               depart.push({
@@ -825,18 +948,22 @@
         this.resultDepartOptions = [];
         this.departIds = [];
         this.departIdShow = false;
-        this.fileLists=[];
+        this.fileLists = [];
         this.identity = "1";
         this.bankAddr = "";
         this.bankCard = "";
         this.syFund = "";
+        this.zwCode = "";
+        this.zwName = "";
+        this.selectedRowKeys = [];
+        this.selectionRows = [];
       },
       moment,
       handleSubmit() {
-        if (this.userDepartModel.departIdList.join(",") == "" || this.userDepartModel.departIdList.join(",") == null) {
-          this.$message.warning('请选择部门!');
-          return;
-        }
+        // if (this.userDepartModel.departIdList.join(",") == "" || this.userDepartModel.departIdList.join(",") == null) {
+        //   this.$message.warning('请选择部门!');
+        //   return;
+        // }
         const that = this;
         // 触发表单验证
         this.form.validateFields((err, values) => {
@@ -863,18 +990,22 @@
               }
               formData.txt = txt.join(",");
             }
-            //formData.post=this.zwCode;
+            if (formData.trialEndDate != null) {
+              formData.trialEndDate = moment(formData.trialEndDate).format('YYYY-MM-DD');
+            }
+            formData.post = this.zwCode;
             //formData.selectedroles = this.selectedRole.length>0?this.selectedRole.join(","):'';
             formData.selecteddeparts = this.userDepartModel.departIdList.length > 0 ? this.userDepartModel
               .departIdList.join(",") : '';
             formData.userIdentity = this.identity;
             formData.departIds = this.userDepartModel.departIdList.join(",");
+
             //如果是上级择传入departIds,否则为空
-            if (this.identity === "2") {
-              formData.departIds = this.departIds.join(",");
-            } else {
-              formData.departIds = "";
-            }
+            // if (this.identity === "2") {
+            //   formData.departIds = this.departIds.join(",");
+            // } else {
+            //   formData.departIds = "";
+            // }
 
             // that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法
             let obj;
@@ -924,19 +1055,84 @@
           callback()
         }
       },
+      validatetrialMoth(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if (!RegExp(/^[0-9]*$/).test(value)) {
+            callback("请输入数字!");
+          } else {
+            this.wkMoth = value - 0;
+            if (this.wkDate != null && this.wkDate != "") {
+              var date = new Date(this.wkDate)
+              var num = value - 0;
+              date.setMonth(date.getMonth() + num)
+              var d = moment(date).format('YYYY-MM-DD');
+              this.form.setFieldsValue({
+                trialEndDate: d
+              })
+            }
+          }
+
+          callback()
+        }
+      },
+      countMoth(e){
+        var date = new Date(e)
+        var newDate = new Date();
+        var seconds = Math.floor((newDate.getTime() - date.getTime()) / 1000);
+        var minutes = Math.floor(seconds / 60);
+        var hours = Math.floor(minutes / 60);
+        var days = Math.floor(hours / 24);
+        var months = Math.floor(days / 30);
+        var diffValue = 0;
+        if (months > 0) {
+          diffValue = months;
+        }
+        return diffValue;
+      },
+      validateentryDate(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          var date=new Date(value);
+          this.wkDate = value;
+          this.moth=this.countMoth(value);
+          console.log(this.wkMoth)
+          if (this.wkMoth != null && this.wkMoth != "") {
+            date.setMonth(date.getMonth() + this.wkMoth)
+            var d = moment(date).format('YYYY-MM-DD');
+            this.form.setFieldsValue({
+              trialEndDate: d
+            })
+          }
+          callback()
+        }
+      },
       validateSfzCode(rule, value, callback) {
         if (!value) {
           callback()
         } else {
           if (this.sfzType == "0") {
-            if (value.length==15&&RegExp(/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/).test(value)) {
+            if (value.length == 15 && RegExp(/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/).test(value)) {
               this.getBirth(value)
-            }else if(value.length==18&&RegExp(/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/).test(value)){
+            } else if (value.length == 18 && RegExp(
+                /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/).test(value)) {
               this.getBirth(value)
-            }else{
+            } else {
               callback("请输入正确格式的身份证号码!");
             }
-            
+
+          }
+          callback()
+        }
+      },
+      validatewages(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if (!RegExp(/^[0-9]*$/).test(value)) {
+            callback("请输入数字!");
           }
           callback()
         }
@@ -945,7 +1141,7 @@
         if (!value) {
           callback()
         } else {
-          this.egName =value.substr(0,1).toLowerCase()+value.substr(1,value.length);
+          this.egName = value.substr(0, 1).toLowerCase() + value.substr(1, value.length);
           if (this.realname != null && this.realname != "") {
             var emil = "@gksports.com.cn";
             var name = py.chineseToPinYin(this.realname.substr(0, 1))
@@ -960,8 +1156,8 @@
         if (!value) {
           callback()
         } else {
-          if(value.length!=9&&value.length!=12){
-           callback('请输入正确格式的公积金账号');
+          if (value.length != 9 && value.length != 12) {
+            callback('请输入正确格式的公积金账号');
           }
           callback()
         }
@@ -995,8 +1191,8 @@
         if (!value) {
           callback()
         } else {
-          if(value.length!=19&&value.length!=17&&value.length!=16){
-           callback('请输入正确格式的银行卡账号');
+          if (value.length != 19 && value.length != 17 && value.length != 16) {
+            callback('请输入正确格式的银行卡账号');
           }
           callback()
         }
@@ -1069,6 +1265,7 @@
       onSearch() {
         console.log(this.$refs.departWindow)
         this.$refs.departWindow.add(this.checkedDepartKeys, this.userId);
+
       },
 
       // 获取用户对应部门弹出框提交给返回的数据
@@ -1084,7 +1281,10 @@
         for (let i = 0; i < formData.departIdList.length; i++) {
           this.selectedDepartKeys.push(formData.departIdList[i].key);
           this.checkedDepartNames.push(formData.departIdList[i].title);
-          this.checkedDepartNameString = this.checkedDepartNames.join(",");
+          this.form.setFieldsValue({
+            checkedDepartNameString: this.checkedDepartNames.join(",")
+          })
+          //this.checkedDepartNameString = this.checkedDepartNames.join(",");
           //新增部门选择,如果上面部门选择后不为空直接付给负责部门
           depart.push({
             key: formData.departIdList[i].key,
@@ -1095,6 +1295,10 @@
         this.resultDepartOptions = depart;
         this.userDepartModel.departIdList = this.selectedDepartKeys;
         this.checkedDepartKeys = this.selectedDepartKeys //更新当前的选择keys
+        this.zwCode = "";
+        this.zwName = "";
+        this.selectionRows = [];
+        this.selectedRowKeys = [];
       },
       // 根据屏幕变化,设置抽屉尺寸
       resetScreenSize() {

+ 10 - 11
src/views/system/modules/UserPrizeModal.vue

@@ -22,23 +22,21 @@
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="部门名称">
-          <a-input placeholder="请输入部门名称" v-decorator="['deptname', validatorRules.deptname ]" />
+          <a-input placeholder="请输入部门名称" v-decorator="['deptNames', validatorRules.deptname ]" />
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="类型">
-          <a-select v-decorator="[ 'type',{initialValue:'0'}]" placeholder="请选择类型"
-            :getPopupContainer="(target) => target.parentNode">
-            <a-select-option value="0">奖</a-select-option>
-            <a-select-option value="1">惩</a-select-option>
-          </a-select>
+          <j-dict-select-tag v-decorator="['type', validatorRules.type]" :triggerChange="true" placeholder="请选择类型"
+            dictCode="work_type" />
+    
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="日期">
-          <a-date-picker showTime format='YYYY-MM-DD' v-decorator="[ 'date', {}]" />
+          <a-date-picker showTime format='YYYY-MM-DD' v-decorator="[ 'date', validatorRules.date]" />
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
@@ -82,7 +80,8 @@
               validator: this.validateRealname
             }]},
         deptname:{rules: [{ required: true, message: '请输入部门名称!' }]},
-        type:{rules: [{ required: true, message: '请输入类型(0奖励,1惩罚)!' }]},
+        type:{rules: [{ required: true, message: '请选择类型' }]},
+        date:{rules: [{ required: true, message: '请选择日期' }]},
         },
         url: {
           add: "/userPrize/userPrize/add",
@@ -101,10 +100,10 @@
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
-        this.deptid=record.deptid;
-        this.userid=record.userid;
+        this.deptid=record.deptId;
+        this.userid=record.userId;
         this.$nextTick(() => {
-          this.form.setFieldsValue(pick(this.model,'realname','deptname','type','demo'))
+          this.form.setFieldsValue(pick(this.model,'realname','deptNames','type','demo'))
 		  //时间格式化
           this.form.setFieldsValue({date:this.model.date?moment(this.model.date):null})
         });

+ 18 - 4
src/views/system/schedulingInformation/BdWorkOverTimeList.vue

@@ -37,6 +37,7 @@
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
               <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+           <a-button type="primary" icon="download" @click="handleExportXls('加班信息')" style="margin-left: 8px">导出</a-button>
             </span>
           </a-col>
 
@@ -56,7 +57,9 @@
         :dataSource="dataSource"
         :pagination="ipagination"
         :loading="loading"
-        @change="handleTableChange">
+        @change="handleTableChange"
+        :scroll="{y:500 }"
+        >
 
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
@@ -114,9 +117,19 @@
             dataIndex: 'person'
           },
           {
-            title: '申请人部门',
+            title: '一级部门',
             align: 'center',
-            dataIndex: 'dept'
+            dataIndex: 'deptName'
+          },
+          {
+            title: '二级部门',
+            align: 'center',
+            dataIndex: 'deptName2'
+          },
+          {
+            title: '三级部门',
+            align: 'center',
+            dataIndex: 'deptName3'
           },
           {
             title: '加班事由',
@@ -152,7 +165,8 @@
           
         ],
         url: {
-          list: '/workOvertime/workOvertime/lists'
+          list: '/workOvertime/workOvertime/lists',
+          exportXlsUrl: "/workOvertime/workOvertime/exportXls",
         },
       }
     },