LiGuang vor 3 Jahren
Ursprung
Commit
20b4a9e5f7

+ 2 - 2
src/views/system/DepartList.vue

@@ -155,9 +155,9 @@
             </a-empty>
           </a-card>
         </a-tab-pane>
-        <a-tab-pane tab="部门权限" key="2" forceRender>
+       <!-- <a-tab-pane tab="部门权限" key="2" forceRender>
           <depart-auth-modal ref="departAuth"/>
-        </a-tab-pane>
+        </a-tab-pane> -->
       </a-tabs>
 
     </a-col>

+ 2 - 2
src/views/system/DepartUserList.vue

@@ -38,9 +38,9 @@
           <a-tab-pane tab="用户信息" key="2">
             <Dept-User-Info ref="DeptUserInfo" @clearSelectedDepartKeys="clearSelectedDepartKeys"></Dept-User-Info>
           </a-tab-pane>
-          <a-tab-pane tab="部门角色" key="3" forceRender>
+         <!-- <a-tab-pane tab="部门角色" key="3" forceRender>
             <dept-role-info ref="DeptRoleInfo" @clearSelectedDepartKeys="clearSelectedDepartKeys"/>
-          </a-tab-pane>
+          </a-tab-pane> -->
         </a-tabs>
       </a-card>
     </a-col>

+ 50 - 22
src/views/system/UserList.vue

@@ -7,9 +7,9 @@
         <a-row :gutter="24">
 
           <a-col :md="6" :sm="12">
-            <a-form-item label="号">
-              <a-input placeholder="请输入账号查询" v-model="queryParam.username"></a-input>
-              <!-- <j-input placeholder="输入账号模糊查询" v-model="queryParam.username"></j-input> -->
+            <a-form-item label="号">
+              <a-input placeholder="请输入工号查询" v-model="queryParam.workNo"></a-input>
+            
             </a-form-item>
           </a-col>
 
@@ -38,11 +38,12 @@
             </a-col>
 
             <a-col :md="6" :sm="8">
-              <a-form-item label="用户状态">
-                <a-select v-model="queryParam.status" placeholder="请选择">
-                  <a-select-option value="">请选择</a-select-option>
-                  <a-select-option value="1">正常</a-select-option>
-                  <a-select-option value="2">冻结</a-select-option>
+              <a-form-item label="雇佣状态">
+                <a-select v-model="queryParam.employmentStatus" placeholder="请选择">
+                  <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>
@@ -66,7 +67,6 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator" style="border-top: 5px">
       <a-button @click="handleAdd()" type="primary" icon="plus" v-has="'user:add'" >添加用户</a-button>
-      <a-button @click="shiftAdd()" type="primary" icon="plus"  >排班</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('用户信息')" v-has='"user:export"'>导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel" v-has='"user:import"'>
         <a-button type="primary" icon="import">导入</a-button>
@@ -113,13 +113,26 @@
         :pagination="ipagination"
         :loading="loading"
         :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        @change="handleTableChange">
+        @change="handleTableChange" :scroll="{ y: 700,x:1100 }">
 
         <template slot="avatarslot" slot-scope="text, record, index">
           <div class="anty-img-wrap">
             <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
           </div>
         </template>
+        
+        <span slot="categorys" slot-scope="text, record, index">
+          <a-tag color="#87d068" v-if="record.category=='101'||record.category==101 ">正式工</a-tag>
+          <a-tag color="#87d068" v-else-if="record.category=='102'||record.category==102 ">合同工</a-tag>
+          <a-tag color="#87d068" v-else-if="record.category=='103'||record.category==103 ">实习生</a-tag>
+          <a-tag color="#87d068" v-else-if="record.category=='104'||record.category==104 ">劳务工</a-tag>
+        </span>
+        
+        <span slot="employmentStatuss" slot-scope="text, record, index">
+         <a-tag color="#87d068" v-if="record.employmentStatus=='10'||record.category==10 ">在职</a-tag>
+         <a-tag color="#cd201f" v-else-if="record.employmentStatus=='20'||record.category==20 ">离退</a-tag>
+         <a-tag color="#cd201f" v-else-if="record.employmentStatus=='30'||record.category==30 ">离职</a-tag>
+        </span>
 
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)" v-has='"user:edit"'>编辑</a>
@@ -165,7 +178,7 @@
     </div>
     <!-- table区域-end -->
 
-  <userShift-modal ref="userShiftModal" ></userShift-modal>
+  
     <user-modal ref="modalForm" @ok="modalFormOk"></user-modal>
 
     <password-modal ref="passwordmodal" @ok="passwordModalOk"></password-modal>
@@ -186,7 +199,7 @@
   import JInput from '@/components/jeecg/JInput'
   import UserRecycleBinModal from './modules/UserRecycleBinModal'
   import JSuperQuery from '@/components/jeecg/JSuperQuery'
-import UserShiftModal from './modules/UserShiftModal'
+
   export default {
     name: "UserList",
     mixins: [JeecgListMixin],
@@ -195,7 +208,7 @@ import UserShiftModal from './modules/UserShiftModal'
       PasswordModal,
       JInput,
       UserRecycleBinModal,
-      UserShiftModal,
+      
       JSuperQuery
     },
     data() {
@@ -216,22 +229,24 @@ import UserShiftModal from './modules/UserShiftModal'
             }
           },*/
           {
-            title: '用户账号',
+            title: '号',
             align: "center",
-            dataIndex: 'username',
-            width: 120,
-            sorter: true
+            dataIndex: 'workNo',
+            width: 100,
+            sorter: true,
+            fixed: 'left',
           },
           {
             title: '用户姓名',
             align: "center",
             width: 100,
             dataIndex: 'realname',
+            fixed: 'left',
           },
           {
             title: '头像',
             align: "center",
-            width: 120,
+            width: 100,
             dataIndex: 'avatar',
             scopedSlots: {customRender: "avatarslot"}
           },
@@ -273,6 +288,22 @@ import UserShiftModal from './modules/UserShiftModal'
             width: 120,
             dataIndex: 'entryDate'
           },
+          {
+            title: '人员类别',
+            align: "center",
+            width: 100,
+            dataIndex: 'category',
+            scopedSlots: {customRender: "categorys"},
+           
+          },
+          {
+            title: '雇佣状态',
+            align: "center",
+            width: 100,
+            dataIndex: 'employmentStatus',
+            scopedSlots: {customRender: "employmentStatuss"},
+            
+          },
           {
             title: '状态',
             align: "center",
@@ -310,10 +341,7 @@ import UserShiftModal from './modules/UserShiftModal'
       }
     },
     methods: {
-      shiftAdd(){
-        console.log(this.$refs.userShiftModal.queryUserShifts())
-        this.$refs.userShiftModal.visible=true;
-      },
+     
       getAvatarView: function (avatar) {
         return getFileAccessHttpUrl(avatar)
       },

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

@@ -45,10 +45,10 @@
           </a-input-search>
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班时间" v-if="type==1">
-          <a-time-picker showTime format='HH:mm' v-model="startDate" />
+          <a-time-picker showTime format='HH:mm:ss' v-model="startDate" />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*下班时间" v-if="type==1">
-          <a-time-picker showTime format='HH:mm' v-model="endDate" />
+          <a-time-picker showTime format='HH:mm:ss' v-model="endDate" />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*工作日"  v-if="type!=2">
           <a-checkbox-group

+ 2 - 2
src/views/system/modules/DeptUserInfo.vue

@@ -75,9 +75,9 @@
               更多 <a-icon type="down"/>
             </a>
             <a-menu slot="overlay">
-                <a-menu-item>
+               <!-- <a-menu-item>
                 <a href="javascript:;" @click="handleDeptRole(record)">分配部门角色</a>
-              </a-menu-item>
+              </a-menu-item> -->
 
               <a-menu-item>
                 <a href="javascript:;" @click="handleDetail(record)">用户详情</a>

+ 151 - 64
src/views/system/modules/UserModal.vue

@@ -22,7 +22,7 @@
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
 
-        <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <!-- <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入用户账号" v-decorator.trim="[ 'username', validatorRules.username]" />
         </a-form-item>
 
@@ -35,23 +35,23 @@
             <a-input type="password" @blur="handleConfirmBlur" placeholder="请重新输入登录密码" v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/>
           </a-form-item>
         </template>
-
-        <a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" >
-          <a-input placeholder="请输入用户姓名" v-decorator.trim="[ 'realname', validatorRules.realname]" />
+ -->
+        <a-form-item label="*用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入用户姓名" v-model="realname" />
         </a-form-item>
 
-        <a-form-item label="用户英文名" :labelCol="labelCol" :wrapperCol="wrapperCol" >
-          <a-input placeholder="请输入用户英文名" v-decorator="[ 'egName', validatorRules.egName]" />
+        <a-form-item label="*用户英文名" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入用户英文名" v-model="egName"/>
         </a-form-item>
-        <a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <!-- <a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入工号" v-decorator.trim="[ 'workNo', validatorRules.workNo]" />
-        </a-form-item>
+        </a-form-item> -->
 
         <a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>
         </a-form-item>
 
-        <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled" >
+        <!-- <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled" >
           <a-select
             mode="multiple"
             :disabled="departDisabled"
@@ -64,7 +64,7 @@
               {{ role.roleName }}
             </a-select-option>
           </a-select>
-        </a-form-item>
+        </a-form-item> -->
 
         <!--部门分配-->
         <a-form-item label="部门分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
@@ -119,7 +119,7 @@
         <!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
         
         <a-form-item label="人员类别" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-select v-decorator="[ 'category', {}]" placeholder="请选择人员类别" :getPopupContainer= "(target) => target.parentNode">
+          <a-select v-decorator="[ 'category', {initialValue:101}]" placeholder="请选择人员类别" :getPopupContainer= "(target) => target.parentNode">
             <a-select-option :value="101">正式工</a-select-option>
             <a-select-option :value="102">合同工</a-select-option>
             <a-select-option :value="103">实习生</a-select-option>
@@ -128,7 +128,7 @@
         </a-form-item>
         
         <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-select v-decorator="[ 'employmentStatus', {}]" placeholder="请选择雇佣状态" :getPopupContainer= "(target) => target.parentNode">
+          <a-select v-decorator="[ 'employmentStatus', {initialValue:10}]" 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>
@@ -136,19 +136,23 @@
         </a-form-item>
         
         
-        <a-form-item label="年假天数" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+        <!-- <a-form-item label="年假天数" :labelCol="labelCol" :wrapperCol="wrapperCol" >
           <a-input placeholder="请输入年假天数" v-decorator.trim="[ 'year', validatorRules.year]" />
         </a-form-item>
         
         
         <a-form-item label="年假剩余天数" :labelCol="labelCol" :wrapperCol="wrapperCol" >
           <a-input placeholder="请输入年假剩余天数" v-decorator.trim="[ 'yearCount',validatorRules.yearCount ]" />
-        </a-form-item>
+        </a-form-item> -->
         
         <a-form-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-image-upload class="avatar-uploader" text="上传" v-model="fileList" ></j-image-upload>
         </a-form-item>
-
+        
+        <a-form-item label="*身份证号码" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入身份证号码" v-model="sfzCode" @mouseleave="getBirth"/>
+        </a-form-item>
+        
         <a-form-item label="生日" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-date-picker
             style="width: 100%"
@@ -161,20 +165,20 @@
           <a-date-picker
             style="width: 100%"
             placeholder="请选择入职日期"
-            v-decorator="['entryDate', {initialValue:!model.entryDate?null:moment(model.entryDate,dateFormat)}]"
+            v-decorator="['entryDate', {initialValue:!model.entryDate?moment(new Date(),dateFormat):moment(model.entryDate,dateFormat)}]"
             :getCalendarContainer="node => node.parentNode"/>
         </a-form-item>
         
-        <a-form-item label="离职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
+       <!-- <a-form-item label="离职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-date-picker
             style="width: 100%"
             placeholder="请选择离职日期"
-            v-decorator="['termDate', {initialValue:!model.termDate?null:moment(model.termDate,dateFormat)}]"
+            v-decorator="['termDate', {initialValue:!model.termDate?moment(new Date(),dateFormat):moment(model.termDate,dateFormat)}]"
             :getCalendarContainer="node => node.parentNode"/>
-        </a-form-item>
+        </a-form-item> -->
 
         <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-select v-decorator="[ 'sex', {}]" placeholder="请选择性别" :getPopupContainer= "(target) => target.parentNode">
+          <a-select v-decorator="[ 'sex']" placeholder="请选择性别" :getPopupContainer= "(target) => target.parentNode">
             <a-select-option :value="1">男</a-select-option>
             <a-select-option :value="2">女</a-select-option>
           </a-select>
@@ -188,9 +192,9 @@
           <a-input placeholder="请输入手机号码" v-decorator="[ 'phone', validatorRules.phone]" />
         </a-form-item>
 
-        <a-form-item label="座机" :labelCol="labelCol" :wrapperCol="wrapperCol">
+       <!-- <a-form-item label="座机" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入座机" v-decorator="[ 'telephone', validatorRules.telephone]"/>
-        </a-form-item>
+        </a-form-item> -->
         
         <a-form-item label="紧急联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <a-input placeholder="请输入紧急联系人" v-decorator="[ 'urgentName', validatorRules.urgentName]" />
@@ -205,7 +209,7 @@
         </a-form-item> -->
         
         <a-form-item label="同步信息" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <j-dict-select-tag  v-decorator="['infoSy', {}]" placeholder="请选择同步" :type="'radio'" :triggerChange="true" dictCode="info_sy"/>
+          <j-dict-select-tag  v-decorator="['infoSy', {initialValue:3}]" placeholder="请选择同步" :type="'radio'" :triggerChange="true" dictCode="info_sy"/>
         </a-form-item>
         
 
@@ -235,7 +239,7 @@
   import { disabledAuthFilter } from "@/utils/authFilter"
   import {duplicateCheck } from '@/api/api'
   import JImageUpload from '../../../components/jeecg/JImageUpload'
-
+  import py from '../../../mixins/vue-py.js'
   export default {
     name: "UserModal",
     components: {
@@ -250,6 +254,7 @@
         modalWidth:800,
         drawerWidth:700,
         modaltoggleFlag:true,
+        sfzCode:"",
         confirmDirty: false,
         selectedDepartKeys:[], //保存用户选择部门id
         checkedDepartKeys:[],
@@ -261,30 +266,28 @@
         userDepartModel:{userId:'',departIdList:[]}, // 保存SysUserDepart的用户部门中间表数据需要的对象
         dateFormat:"YYYY-MM-DD",
         validatorRules:{
-          username:{
-            rules: [{
-              required: true, message: '请输入用户账号!'
-            },{
-              validator: this.validateUsername,
-            }]
-          },
-          password:{
-            rules: [{
-              required: true,
-              // pattern:/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
-              message: '请输入密码'//'密码由8位数字、大小写字母和特殊符号组成!'
-            }, {
-              validator: this.validateToNextPassword,
-            }],
-          },
-          confirmpassword:{
-            rules: [{
-              required: true, message: '请重新输入登录密码!',
-            }, {
-              validator: this.compareToFirstPassword,
-            }],
-          },
-          realname:{rules: [{ required: true, message: '请输入用户名称!' }]},
+          // username:{
+          //   rules: [{
+          //     required: true, message: '请输入用户账号!'
+          //   },{
+          //     validator: this.validateUsername,
+          //   }]
+          // },
+          // password:{
+          //   rules: [{
+          //     required: true,
+          //     message: '请输入密码'//'密码由8位数字、大小写字母和特殊符号组成!'
+          //   }, {
+          //     validator: this.validateToNextPassword,
+          //   }],
+          // },
+          // confirmpassword:{
+          //   rules: [{
+          //     required: true, message: '请重新输入登录密码!',
+          //   }, {
+          //     validator: this.compareToFirstPassword,
+          //   }],
+          // },
           phone:{rules: [{ required: true, message: '请输入手机号!' },{validator: this.validatePhone}]},
           email:{
             rules: [
@@ -295,17 +298,17 @@
           },
           roles:{},
           //  sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))}
-          workNo: {
-            rules: [
-              { required: true, message: '请输入工号' },
-              { validator: this.validateWorkNo }
-            ]
-          },
-          telephone: {
-            rules: [
-              { pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' },
-            ]
-          }
+          // workNo: {
+          //   rules: [
+          //     { required: true, message: '请输入工号' },
+          //     { validator: this.validateWorkNo }
+          //   ]
+          // },
+          // telephone: {
+          //   rules: [
+          //     { pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' },
+          //   ]
+          // }
         },
         departIdShow:false,
         departIds:[], //负责部门id
@@ -314,6 +317,8 @@
         model: {},
         roleList:[],
         selectedRole:[],
+        realname:"",
+        egName:"",
         labelCol: {
           xs: { span: 24 },
           sm: { span: 5 },
@@ -340,6 +345,35 @@
         currentTenant:[]
       }
     },
+    watch:{
+    	sfzCode:{
+    		handler(newVal, objVal) {
+    		 this.getBirth(newVal);
+      },
+    	},
+      realname:{
+      	handler(newVal, objVal) {
+      	 if(this.egName!=null &&this.egName!=""){
+           var emil="@gksports.com.cn";
+           var name=py.chineseToPinYin(newVal.substr(0, 1))  
+           this.form.setFieldsValue({
+              email: this.egName+"."+name+emil
+            })
+         }
+      },
+      },
+      egName:{
+    		handler(newVal, objVal) {
+    		if(this.realname!=null &&this.realname!=""){
+        var emil="@gksports.com.cn";
+        var name=py.chineseToPinYin(this.realname.substr(0, 1))  
+        this.form.setFieldsValue({
+           email: newVal+"."+name+emil
+         })
+         }
+      },
+    	}
+    },
     created () {
       const token = Vue.ls.get(ACCESS_TOKEN);
       this.headers = {"X-Access-Token":token}
@@ -352,9 +386,41 @@
       }
     },
     methods: {
+      
       isDisabledAuth(code){
         return disabledAuthFilter(code);
       },
+      getBirth(idCard) {
+            var birthday = "";
+            if(idCard != null && idCard != ""){
+              if(idCard.length == 15){
+                birthday = "19"+idCard.slice(6,12);
+              } else if(idCard.length == 18){
+                birthday = idCard.slice(6,14);
+              }   
+              //通过正则表达式来指定输出格式为:1990-01-01
+            }
+            
+            if(birthday!=""&&birthday!=null){
+              this.form.setFieldsValue({
+                 birthday: birthday.replace(/(.{4})(.{2})/,"$1-$2-")
+               })
+               
+               if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
+                 this.form.setFieldsValue({
+                    sex: 1
+                  })
+               }
+               else {
+                this.form.setFieldsValue({
+                   sex: 2
+                 })
+               }
+            }
+      
+            
+      
+          },
       initTenantList(){
         getAction(this.url.queryTenantList).then(res=>{
           if(res.success){
@@ -399,16 +465,20 @@
           this.departId=[];
           this.departIdShow=false;
           this.currentTenant = []
+          this.sfzCode="";
+          this.realname="";
+          this.egName="";
       },
       add () {
         this.picUrl = "";
         this.refresh();
+        
         this.edit({activitiSync:'1'});
       },
       edit (record) {
         this.resetScreenSize(); // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
         let that = this;
-        that.initialRoleList();
+        //that.initialRoleList();
         that.checkedDepartNameString = "";
         that.form.resetFields();
         if(record.hasOwnProperty("id")){
@@ -421,7 +491,7 @@
         that.visible = true;
         that.model = Object.assign({}, record);
         that.$nextTick(() => {
-          that.form.setFieldsValue(pick(this.model,'username','sex','realname','email','phone','activitiSync','workNo','telephone','post','egName','urgentName','urgentPhone','infoSy','category','employmentStatus','termDate','year','yearCount'))
+          that.form.setFieldsValue(pick(this.model,'sex','email','phone','post','urgentName','urgentPhone','infoSy','category','employmentStatus'))
         });
         //身份为上级显示负责部门,否则不显示
         if(this.model.userIdentity=="2"){
@@ -441,6 +511,10 @@
         }else{
           this.currentTenant = record.relTenantIds.split(',').map(Number);
         }
+        
+        this.realname=record.realname;
+        this.egName=record.egName;
+        this.sfzCode=record.sfzCode;
         //update-end-author:taoyan date:2020710 for:多租户配置
       },
       //
@@ -494,7 +568,16 @@
       },
       moment,
       handleSubmit () {
-
+        if(this.realname==""||this.realname==null){
+          this.$message.warning('请输入姓名');
+          return;
+        }else if(this.egName==""||this.egName==null){
+          this.$message.warning('请输入英文名');
+          return;
+        }else if(this.sfzCode==""||this.sfzCode==null){
+          this.$message.warning('请输入身份证号码');
+          return;
+        }
         const that = this;
         // 触发表单验证
         this.form.validateFields((err, values) => {
@@ -503,7 +586,7 @@
             if(!values.birthday){
               values.birthday = '';
             }else{
-              values.birthday = values.birthday.format(this.dateFormat);
+              values.birthday = values.birthday;
             }
             let formData = Object.assign(this.model, values);
             if(that.fileList != ''){
@@ -514,7 +597,8 @@
             //update-begin-author:taoyan date:2020710 for:多租户配置
             //formData.relTenantIds = this.currentTenant.length>0?this.currentTenant.join(','):''
             //update-end-author:taoyan date:2020710 for:多租户配置
-            formData.selectedroles = this.selectedRole.length>0?this.selectedRole.join(","):'';
+            formData.sfzCode=this.sfzCode;
+            //formData.selectedroles = this.selectedRole.length>0?this.selectedRole.join(","):'';
             formData.selecteddeparts = this.userDepartModel.departIdList.length>0?this.userDepartModel.departIdList.join(","):'';
             formData.userIdentity=this.identity; 
             //如果是上级择传入departIds,否则为空
@@ -523,6 +607,9 @@
             }else{
               formData.departIds="";
             }
+            
+            formData.realname=this.realname;
+            formData.egName=this.egName;
             // that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法
             let obj;
             if(!this.model.id){

+ 124 - 50
src/views/system/modules/UserShiftModal.vue

@@ -1,7 +1,7 @@
 <template>
   <j-modal title="排班" :width="1000" :visible="visible" switchFullscreen @cancel="handleCancel" :footer="true">
 
-    <a-spin :spinning="confirmLoading">
+    <a-spin :spinning="loading">
       <div class='month'>
         <ul>
           <!--点击会触发pickpre函数,重新刷新当前日期 @click(vue v-on:click缩写) -->
@@ -16,7 +16,7 @@
       </div>
       
       <div>
-        <a-table bordered :data-source="dataSource" :columns="columns" :scroll="{ y: 440,x:1100 }"
+        <a-table bordered :data-source="dataSource" :columns="columns" :scroll="{ x:900 }"
           :pagination="ipagination" @change="handleTableChange">
 
           <template v-for='(dayobject,i) in days' :slot="dayobject.day.getDate()" style="color: #ff6b81">
@@ -35,6 +35,27 @@
               </div>
             </div>
           </template>
+          
+          
+          <span v-for='(d,i) in tpdata' style="margin-left: -11px;" :slot="d" slot-scope="text, record, index">
+            <a-dropdown :trigger="['click']">
+              <a-tag color="blue" v-if="text=='休息'" @click="e => e.preventDefault()">{{text}}</a-tag>
+              <a-tag color="#87d068" v-else-if="text!='休息'&&text!=''&&text!=null" @click="e => e.preventDefault()">{{text}}</a-tag>
+              <a-tag color="#FFFFFF" v-else @click="e => e.preventDefault()">吴</a-tag>
+                <a-menu slot="overlay">
+                  <a-menu-item key="0">
+                    <a @click="shiftOks(0,d,record,index)">休息</a>
+                  </a-menu-item>
+                  <a-menu-item v-for="(item,index) in shiftlist" :key="item.id">
+                    <a @click="shiftOks(item,d,record,index)">{{item.name}}</a>
+                  </a-menu-item>
+                  
+                </a-menu>
+              </a-dropdown>
+            
+            
+          </span>
+         
         </a-table>
       </div>
 
@@ -82,6 +103,8 @@
     mixins: [JeecgListMixin],
     data() {
       return {
+        tts:false,
+        tpdata:[],
         dataSource: [],
         columns: [],
         queryParam: {
@@ -126,54 +149,102 @@
       this.queryShift()
     },
     methods: {
-      CustomCell(record, index) {
-        return {
-          on: {
-            mouseenter: (event) => {
-              record.setExecutorVisible = true;
-              console.log("悬浮" + record.setExecutorVisible);
-
-            },
-            mouseleave: (event) => {
-
-              record.setExecutorVisible = false;
-              console.log("离开");
-            },
-            click: (event) => {
-
-              this.visibles = true;
-              this.index = index;
-
+      shiftOks(a,b,c,d){
+        console.log(c)
+        console.log(d)
+        var date=this.currentYear + "-" + this.currentMonth + "-" + b + " 00:00:000"; 
+        var name=a.name;
+        if(a==0||a=="0"){
+          name="休息";
+        httpAction(this.url.add, {
+          userId: c.id,
+          shiftId:0,
+          shiftDate: date
+        }, "post").then((res) => {
+          if (res.success) {
+           
+          }
+        })
+        }else{
+          httpAction(this.url.add, {
+            userId: c.id,
+            shiftId:a.id,
+            shiftDate: date
+          }, "post").then((res) => {
+            if (res.success) {
+             
             }
-          },
-
+          })
         }
-      },
-      executePersonCustomCell(record, index) {
-        return {
-          on: {
-            mouseenter: (event) => {
-              record.setExecutorVisible = true;
-              console.log("悬浮" + record.setExecutorVisible);
-
-            },
-            mouseleave: (event) => {
-
-              record.setExecutorVisible = false;
-              console.log("离开");
-            },
-            click: (event) => {
-              this.key = event.target.cellIndex;
-              this.shiftDate = this.currentYear + "-" + this.currentMonth + "-" + this.key + " 00:00:000";
-              this.visibles = true;
-              this.index = index;
-            }
-          },
-
+        
+        
+        if (b==1) {
+          c.a1=name;
+        } else if (b == 2) {             
+          c.a2=name;
+        } else if (b == 3) {             
+         c.a3=name;
+        } else if (b == 4) {             
+         c.a4=name;
+        } else if (b == 5) {             
+         c.a5=name;
+        } else if (b == 6) {           
+         c.a6=name;
+        } else if (b == 7) {             
+         c.a7=name;
+        } else if (b== 8) {             
+          c.a8=name;
+        } else if (b== 9) {            
+          c.a9=name;
+        } else if (b== 10) {             
+          c.a10=name;
+        } else if (b == 11) {            
+          c.a11=name;
+        } else if (b == 12) {            
+         c.a12=name;
+        } else if (b == 13) {              
+          c.a13=name;
+        } else if (b == 14) {              
+         c.a14=name;
+        } else if (b == 15) {              
+          c.a15=name;
+        } else if (b == 16) {             
+          c.a16=name;
+        } else if (b== 17) {              
+          c.a17=name;
+        } else if (b== 18) {              
+          c.a18=name;
+        } else if (b == 19) {             
+          c.a19=name;
+        } else if (b == 20) {             
+         c.a20=name;
+        } else if (b == 21) {              
+          c.a21=name;
+        } else if (b == 22) {             
+          c.a22=name;
+        } else if (b == 23) {             
+          c.a23=name;
+        } else if (b == 24) {            
+         c.a24=name;
+        } else if (b== 25) {              
+          c.a25=name;
+        } else if (b == 26) {              
+          c.a26=name;
+        } else if (b == 27) {             
+          c.a27=name;
+        } else if (b == 28) {              
+          c.a28=name;
+        } else if (b == 29) {              
+          c.a29=name;
+        } else if (b == 30) {             
+         c.a30=name;
+        } else if (b == 31) {
+          c.a31=name;
         }
+       
+       
       },
-
-
+    
       pickPre: function(year, month) {
         var d = new Date(this.formatDate(year, month, 1))
         d.setDate(0)
@@ -196,9 +267,7 @@
           date = new Date(cur)
         } else {
           var now = new Date()
-          var d = new Date(this.formatDate(now.getFullYear(), now.getMonth(), 1))
-          d.setDate(35)
-          date = new Date(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1))
+          date = now;
         }
         this.currentDay = date.getDate()
         this.currentYear = date.getFullYear()
@@ -224,16 +293,19 @@
         })
         for (var i = 1; i <= moth.getDate(); i++) {
           var d = new Date(this.formatDate(this.currentYear, this.currentMonth, i))
+          this.tpdata.push(i)
           var dayobjectSelf = {
             width: '49px',
             slots: {
               title: d.getDate()
             },
             dataIndex: "a" + d.getDate(),
-            customCell: this.executePersonCustomCell
+            scopedSlots: {customRender:i},
+            
           } // 用一个对象包装Date对象  以便为以后预定功能添加属性
           var dat = {};
           dat.day = d;
+          
           this.days.push(dat)
           this.columns.push(dayobjectSelf) // 将日期放入data 中的days数组 供页面渲染使用
         }
@@ -273,6 +345,7 @@
      queryUserShifts(){
        this.queryParam.shiftDate=moment(new Date()).format('YYYY-MM-DD HH:mm:ss');
        this.$options.methods.searchQuery.call(this);
+       
      },
 
       shiftOk() {
@@ -473,6 +546,7 @@
         this.shiftname = "";
         this.id = null;
         this.$emit('close');
+        this.dataSource=[];
         this.visible = false;
       },
       queryShift() {

+ 0 - 1
src/views/system/schedulingInformation/BdWorkOverTimeList.vue

@@ -36,7 +36,6 @@
         ref="table"
         size="middle"
         bordered
-        rowKey="id"
         :columns="columns"
         :dataSource="dataSource"
         :pagination="ipagination"