|
@@ -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){
|