123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098 |
- <template>
- <a-modal
- :title="title"
- width="95%"
- :closable="true"
- @cancel="close"
- @ok="handleSubmit"
- :visible="visible"
- >
- <template slot="title">
- <div style="width: 100%;">
- <span>{{ title }}</span>
- <span style="display:inline-block;width:calc(100% - 51px);padding-right:10px;text-align: right">
- <a-button @click="toggleScreen" icon="appstore" style="height:20px;width:20px;border:0px"></a-button>
- </span>
- </div>
- </template>
- <a-spin :spinning="confirmLoading">
- <a-form :form="form" >
-
- <a-form-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol" >
- <a-input placeholder="请输入工号" v-decorator="['workNo', validatorRules.workNo]" @blur="changeWorkNo" />
- </a-form-item>
- <a-form-item label="用户姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入用户姓名" v-decorator="['realname', validatorRules.realname]" />
- </a-form-item>
- <a-form-item label="英文名" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入英文名" v-decorator="['nenName',validatorRules.nenName]" />
- </a-form-item>
- <a-form-item label="性别" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-select v-decorator="['sex', validatorRules.sex]" placeholder="请选择性别">
- <a-select-option :value="1">男</a-select-option>
- <a-select-option :value="2">女</a-select-option>
- </a-select>
- </a-form-item>
- <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),rules: [{ required: true, message: '请选择生日日期' }] }]"
- />
- </a-form-item>
- <a-form-item label="婚否" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-select v-decorator="['nmarriage', validatorRules.nmarriage]" placeholder="请选择性别">
- <a-select-option value="1">是</a-select-option>
- <a-select-option value="0">否</a-select-option>
- </a-select>
- </a-form-item>
- <a-form-item label="户口" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['nregistered',validatorRules.nregistered]"
- placeholder="请选择户口"
- :triggerChange="true"
- dictCode="registered-residence"
- />
- </a-form-item>
- <a-form-item label="户口所在地" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入" v-decorator="['nregisteredAddr', validatorRules.nregisteredAddr]" />
- <!-- <a-input placeholder="请输入户口所在地" v-decorator="['nregisteredAddr', validatorRules.nregisteredAddr]" /> -->
- </a-form-item>
- <a-form-item label="政治面貌" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['noutlook', validatorRules.noutlook]"
- placeholder="请选择政治面貌"
- :triggerChange="true"
- dictCode="political-outlook"
- />
- </a-form-item>
- <a-form-item label="所学专业" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入所学专业" v-decorator="['nmajor', validatorRules.nmajor]" />
- </a-form-item>
- <a-form-item label="学历" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['neducation',validatorRules.neducation]"
- placeholder="请选择学历"
- :triggerChange="true"
- dictCode="education"
- />
- </a-form-item>
- <a-form-item label="毕业时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择毕业时间"
- v-decorator="['nGraduationTime', { initialValue: !model.nGraduationTime ? null : moment(model.nGraduationTime, dateFormat),rules: [{ required: true, message: '请选择毕业时间' }] }]"
- />
- </a-form-item>
- <!--部门分配-->
- <a-form-item label="公司部门分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
- <a-input-search
- placeholder="点击右侧按钮选择公司和部门"
- v-model="checkedDepartNameString"
- disabled
- @search="onSearch"
- >
- <a-button slot="enterButton" icon="search">选择</a-button>
- </a-input-search>
- </a-form-item>
- <a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', validatorRules.post]" />
- </a-form-item>
-
- <a-form-item label="入司日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择入司日期"
- v-decorator="['nInductionTime', { initialValue: !model.nInductionTime ? null : moment(model.nInductionTime, dateFormat) ,rules: [{ required: true, message: '请选择入司日期' }] }]"
- />
- </a-form-item>
- <a-form-item label="离职日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择离职日期"
- v-decorator="['syResignationTime', { initialValue: !model.syResignationTime ? null : moment(model.syResignationTime, dateFormat)}]"
- />
- </a-form-item>
- <a-form-item label="家庭电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入家庭电话" v-decorator="['telephone', validatorRules.telephone]" />
- </a-form-item>
- <a-form-item label="公司座机" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入公司座机" v-decorator="['ncompanyPhone', {}]" />
- </a-form-item>
- <a-form-item label="公司内线" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入公司内线" v-decorator="['ncompanyLine', {}]" />
- </a-form-item>
- <a-form-item label="邮箱" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入邮箱" v-decorator="['email', validatorRules.email]" />
- </a-form-item>
- <a-form-item label="工资卡号" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入工资卡号" v-decorator="['ncardNo', validatorRules.ncardNo]" />
- </a-form-item>
- <a-form-item label="虚拟网号" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入虚拟网号" v-decorator="['nvirtualNo', {}]" />
- </a-form-item>
-
- <a-form-item label="转正日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择转正日期"
- disabled='true'
- v-decorator="['nBecomeTime', { initialValue: !model.nBecomeTime ? null : moment(model.nBecomeTime, dateFormat)}]"
- />
- </a-form-item>
- <a-form-item label="社保申报日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择社保申报日期"
- v-decorator="['nsocialTime', { initialValue: !model.nsocialTime ? null : moment(model.nsocialTime, dateFormat) }]"
- />
- </a-form-item>
- <a-form-item label="社保断缴日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="社保断缴日期"
- v-decorator="['sySecurityOutTime', { initialValue: !model.sySecurityOutTime ? null : moment(model.sySecurityOutTime, dateFormat) }]"
- />
- </a-form-item>
- <a-form-item label="公积金申报日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="请选择公积金申报日期"
- v-decorator="['nfundTime', { initialValue: !model.nfundTime ? null : moment(model.nfundTime, dateFormat) }]"
- />
- </a-form-item>
- <a-form-item label="公积金断缴日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-date-picker
- style="width: 100%"
- placeholder="公积金断缴日期"
- v-decorator="['syFundOutTime', { initialValue: !model.syFundOutTime ? null : moment(model.syFundOutTime, dateFormat) }]"
- />
- </a-form-item>
- <a-form-item label="公积金基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入公积金基数" v-decorator="['nfundBase', {}]" />
- </a-form-item>
- <a-form-item label="社保基数" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入社保基数" v-decorator="['nsocialBase',{}]" />
- </a-form-item>
- <a-form-item label="年假" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入年假" v-decorator="['nannualNum', {}]" />
- </a-form-item>
- <a-form-item label="已请年假" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入输入已请年假" v-decorator="['nannualOldNum', {}]" />
- </a-form-item>
- <a-form-item label="剩余年假" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入剩余年假" v-decorator="['nannualNowNum', {}]" />
- </a-form-item>
-
- <a-form-item label="民族" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['nnation', validatorRules.nnation]"
- placeholder="请选择民族"
- :triggerChange="true"
- dictCode="nation"
- />
- </a-form-item>
- <a-form-item label="籍贯" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入籍贯" v-decorator="['nnativePlace', validatorRules.nnativePlace]" />
- </a-form-item>
- <a-form-item label="身份证号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入身份证号码" v-decorator="['nidNo', validatorRules.nidNo]" />
- </a-form-item>
- <a-form-item label="家庭住址" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入家庭住址" v-decorator="['nhomeAddress', {}]" />
- </a-form-item>
- <a-form-item label="手机号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input
- placeholder="请输入手机号码"
- :disabled="isDisabledAuth('user:form:phone')"
- v-decorator="['phone', validatorRules.phone]"
- />
- </a-form-item>
-
- <!-- <a-form-item label="对本企业要求" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入" v-decorator="['nrequirement', {}]" />
- </a-form-item> -->
-
- <!-- <a-form-item label="希望待遇" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入希望待遇" v-decorator="['nhopeFor',{}]" />
- </a-form-item>
-
- <a-form-item label="与原单位关系" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入" v-decorator="['nrelationshipFor', {}]" />
- </a-form-item> -->
- <a-form-item label="人员类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['npersonnelType',validatorRules.npersonnelType]"
- placeholder="请选择人员类型"
- :triggerChange="true"
- dictCode="personnel-status"
- />
- </a-form-item>
- <a-form-item label="雇佣状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['syHireType',{rules: [{ required: true, message: '请选择雇佣状态' }] }]"
- placeholder="请选择雇佣状态"
- :triggerChange="true"
- dictCode="employment-status"
- />
- </a-form-item>
- <a-form-item label="所属公司" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['belongingCompany', validatorRules.belongingCompany]"
- placeholder="请选择所属公司"
- :triggerChange="true"
- dictCode="affiliated-company"
- />
- </a-form-item>
- <a-form-item label="车牌号" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input placeholder="请输入" v-decorator="['licenseCar', {}]" />
- </a-form-item>
- <!-- update--begin--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
- <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>
- <a-form-item label="负责部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow == true">
- <a-select
- mode="multiple"
- style="width: 100%"
- placeholder="请选择负责部门"
- v-model="departIds"
- optionFilterProp="children"
- :getPopupContainer="target => target.parentNode"
- :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
- >
- <a-select-option v-for="item in resultDepartOptions" :key="item.key" :value="item.key">{{
- item.title
- }}</a-select-option>
- </a-select>
- </a-form-item>
- <a-form-item label="是否OA用户" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-radio-group v-model="ifOa" @change="changeOa">
- <a-radio value="1">是</a-radio>
- <a-radio value="0">否</a-radio>
- </a-radio-group>
- </a-form-item>
- <!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
-
- <a-form-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <j-dict-select-tag
- v-decorator="['activitiSync', {}]"
- placeholder="请选择是否同步工作流引擎"
- :type="'radio'"
- :triggerChange="true"
- dictCode="activiti_sync"
- />
- </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" class="nresume">
- <a-input type="textarea" placeholder="请输入" v-decorator="['nresume', {}]" />
- </a-form-item>
- <a-form-item label="家庭成员" :labelCol="labelCol" :wrapperCol="wrapperCol" class="nresume">
- <a-input type="textarea" placeholder="请输入" v-decorator="['nmemberOfFamily', {}]" />
- </a-form-item>
- <a-form-item label="备注信息" :labelCol="labelCol" :wrapperCol="wrapperCol" class="nresume">
- <a-input type="textarea" placeholder="请输入" v-decorator="['nremarks', {}]" />
- </a-form-item>
- <a-divider>IT维护</a-divider>
- <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol" :validateOnRuleChange="true">
- <a-input
- placeholder="请输入用户账号"
- v-decorator="['username', validatorRules.username]"
- :readOnly="!!model.username"
- autocomplete="off"
- />
- </a-form-item>
- <template v-if="!model.id">
- <a-form-item label="登陆密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input type="password" placeholder="请输入登陆密码" v-decorator="['password', validatorRules.password]" autocomplete="new-password" @blur="changePssword"/>
- </a-form-item>
- <a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
- <a-input
- type="password"
- @blur="handleConfirmBlur"
- placeholder="请重新输入登陆密码"
- v-decorator="['confirmpassword', validatorRules.confirmpassword]"
- />
- </a-form-item>
- </template>
-
- <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">
- <a-select
- mode="multiple"
- style="width: 100%"
- placeholder="请选择用户角色"
- optionFilterProp="children"
- v-model="selectedRole"
- >
- <a-select-option v-for="(role, roleindex) in roleList" :key="roleindex.toString()" :value="role.id">
- {{ role.roleName }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-form>
- </a-spin>
- <depart-window ref="departWindow" @ok="modalFormOk"></depart-window>
- <!-- <div class="drawer-bootom-button" v-show="!disableSubmit">
- <a-button style="margin-right: .8rem" @click="handleCancel">取消</a-button>
- <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">提交</a-button>
- </div> -->
- </a-modal>
- </template>
- <script>
- import pick from 'lodash.pick'
- import moment from 'moment'
- import Vue from 'vue'
- // 引入搜索部门弹出框的组件
- import departWindow from './DepartWindow'
- import JSelectPosition from '@/components/jeecgbiz/JSelectPosition'
- import { ACCESS_TOKEN } from '@/store/mutation-types'
- import { getAction } from '@/api/manage'
- import { addUser, editUser, queryUserRole, queryall, duplicateCheck } from '@/api/api'
- import { disabledAuthFilter } from '@/utils/authFilter'
- import JImageUpload from '../../../components/jeecg/JImageUpload'
- export default {
- name: 'UserModal',
- components: {
- JImageUpload,
- departWindow,
- JSelectPosition
- },
- data () {
- return {
- departDisabled: false, // 是否是我的部门调用该页面
- roleDisabled: false, // 是否是角色维护调用该页面
- modalWidth: 800,
- drawerWidth: 700,
- modaltoggleFlag: true,
- confirmDirty: false,
- selectedDepartKeys: [], // 保存用户选择部门id
- checkedDepartKeys: [],
- checkedDepartNames: [], // 保存部门的名称 =>title
- checkedDepartNameString: '', // 保存部门的名称 =>title
- resultDepartOptions: [],
- userId: '', // 保存用户id
- disableSubmit: false,
- userDepartModel: { userId: '', departIdList: [] }, // 保存SysUserDepart的用户部门中间表数据需要的对象
- dateFormat: 'YYYY-MM-DD',
- validatorRules: {
- username: {
- rules: [
- {
- required: true,
- message: '请输入用户账号!'
- },
- {
- validator: this.validateUsername
- }
- ]
- },
- password: {
- rules: [
- {
- required: false,
- message: '请输入密码!'
- // pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
- // message: '密码由8位数字、大小写字母和特殊符号组成!'
- },
- {
- validator: this.validateToNextPassword
- }
- ],
- initialValue:'123456'
- },
- confirmpassword: {
- rules: [
- {
- required: false,
- message: '请重新输入登陆密码!'
- },
- {
- validator: this.compareToFirstPassword
- }
- ]
- },
- realname: { rules: [{ required: true, message: '请输入用户名称!' }] },
- belongingCompany: { rules: [{ required: true, message: '请选择所属公司!' }] },
- phone: { rules: [{ validator: this.validatePhone },{ required: true, message: '请输入手机号码!' }] },
- email: {
- rules: [
- {
- // validator: this.validateEmail
- }
- ]
- },
- roles: {},
- // sex:{initialValue:((!this.model.sex)?"": (this.model.sex+""))}
- workNo: {
- rules: [{ required: true, message: '请输入工号' }, { validator: this.validateWorkNo }]
- },
- telephone: {
- // rules: [{ required: true, message: '请输入座机' },{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }]
- rules: [{ required: true, message: '请输入家庭电话' }]
- },
- nenName:{
- rules: [{ required: true, message: '请输入英文名' }]
- },
- sex:{
- rules: [{ required: true, message: '请选择性别' }]
- },
- nidNo:{
- rules: [{ required: true, message: '输入身份证号码' }]
- },
- nmarriage:{
- rules: [{ required: true, message: '请选择婚否' }]
- },
- nregisteredAddr:{
- rules: [{ required: true, message: '请输入户口所在地' }]
- },
- nmajor:{
- rules: [{ required: true, message: '请输入所学专业' }]
- },
- noutlook:{
- rules: [{ required: true, message: '请选择政治面貌' }]
- },
- neducation:{
- rules: [{ required: true, message: '请选择政学历' }]
- },
- nregistered:{
- rules: [{ required: true, message: '请选择户口' }]
- },
- post:{
- rules: [{ required: true, message: '请选择职位' }]
- },
- ncardNo:{
- rules: [{ required: true, message: '请输入工资卡号' }]
- },
- nnation:{
- rules: [{ required: true, message: '请选择民族' }]
- },
- nnativePlace:{
- rules: [{ required: true, message: '请输入籍贯' }]
- },
- npersonnelType:{
- rules: [{ required: true, message: '请选择人员类型' }]
- },
- checkedDepartNameString:{
- rules: [{ required: true, message: '请选择部门!' }]
- }
- },
- departIdShow: false,
- departIds: [], // 负责部门id
- title: '操作',
- visible: false,
- model: {},
- roleList: [],
- selectedRole: [],
- labelCol: {
- xs: { span: 24 },
- sm: { span: 5 }
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 16 }
- },
- uploadLoading: false,
- confirmLoading: false,
- headers: {},
- form: this.$form.createForm(this),
- picUrl: '',
- url: {
- fileUpload: window._CONFIG['domianURL'] + '/sys/common/upload',
- imgerver: window._CONFIG['staticDomainURL'],
- userWithDepart: '/sys/user/userDepartList', // 引入为指定用户查看部门信息需要的url
- userId: '/sys/user/generateUserId', // 引入生成添加用户情况下的url
- syncUserByUserName: '/process/extActProcess/doSyncUserByUserName' // 同步用户到工作流
- },
- identity: '1',
- ifOa:'0',
- fileList: [],
- orgObject: {
- pkOrg: '', // 选中的公司id
- pkOrgName: '' // 选中的公司名称
- },
- userObject: {} // 用户信息
- }
- },
- created () {
- const token = Vue.ls.get(ACCESS_TOKEN)
- this.headers = { 'X-Access-Token': token }
- },
- computed: {
- uploadAction: function () {
- return this.url.fileUpload
- }
- },
- methods: {
- isDisabledAuth (code) {
- return disabledAuthFilter(code)
- },
- // 窗口最大化切换
- toggleScreen () {
- if (this.modaltoggleFlag) {
- this.modalWidth = window.innerWidth
- } else {
- this.modalWidth = 800
- }
- this.modaltoggleFlag = !this.modaltoggleFlag
- },
- initialRoleList () {
- queryall().then(res => {
- if (res.success) {
- this.roleList = res.result
- } else {
- console.log(res.message)
- }
- })
- },
- loadUserRoles (userid) {
- queryUserRole({ userid: userid }).then(res => {
- if (res.success) {
- this.selectedRole = res.result
- } else {
- console.log(res.message)
- }
- })
- },
- refresh () {
- this.selectedDepartKeys = []
- this.checkedDepartKeys = []
- this.checkedDepartNames = []
- this.checkedDepartNameString = ''
- this.userId = ''
- this.resultDepartOptions = []
- this.departId = []
- this.departIdShow = false
- },
- add () {
- this.picUrl = ''
- this.refresh()
- this.edit({ activitiSync: '1' })
- },
- edit (record) {
- this.resetScreenSize() // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
- let that = this
- that.initialRoleList()
- that.checkedDepartNameString = ''
- that.form.resetFields()
- if (record.hasOwnProperty('id')) {
- that.loadUserRoles(record.id)
- setTimeout(() => {
- this.fileList = record.avatar
- this.ifOa = record.ifOa
- }, 5)
- }
- that.userId = record.id
- // 修改赋值公司id
- this.orgObject.pkOrg = record.pkOrg
- this.orgObject.pkOrgName = record.pkOrgName
- this.userObject = record
- 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',
- 'nenName',
- 'nmarriage',
- 'nregistered',
- 'noutlook',
- 'nmajor',
- 'neducation',
- 'ngraduationTime',
- 'ninductionTime',
- 'ncompanyPhone',
- 'ncompanyLine',
- 'ncardNo',
- 'nvirtualNo',
- 'nBecomeTime',
- 'nsocialTime',
- 'nfundTime',
- 'nfundBase',
- 'nsocialBase',
- 'nannualNum',
- 'nannualOldNum',
- 'nannualNowNum',
- 'nnation',
- 'nnativePlace',
- 'nidNo',
- 'nhomeAddress',
- 'nrequirement',
- 'nhopeFor',
- 'nregisteredAddr',
- 'nrelationshipFor',
- 'npersonnelType',
- 'nregisteredAddr',
- 'ifOa','belongingCompany',
- 'syHireType',
- 'syResignationTime',
- 'syFundOutTime',
- 'sySecurityOutTime'
- )
- )
- })
- // 身份为上级显示负责部门,否则不显示
- if (this.model.identity == '2') {
- this.identity = '2'
- this.departIdShow = true
- } else {
- this.identity = '1'
- this.departIdShow = false
- }
- // 调用查询用户对应的部门信息的方法
- that.checkedDepartKeys = []
- that.loadCheckedDeparts()
- },
- //
- loadCheckedDeparts () {
- let that = this
- if (!that.userId) {
- return
- }
- getAction(that.url.userWithDepart, { userId: that.userId }).then(res => {
- that.checkedDepartNames = []
- if (res.success) {
- var depart = []
- var departId = []
- for (let i = 0; i < res.result.length; i++) {
- that.checkedDepartNames.push(res.result[i].title)
- this.checkedDepartNameString = this.checkedDepartNames.join(',')
- that.checkedDepartKeys.push(res.result[i].key)
- // 新增负责部门选择下拉框
- depart.push({
- key: res.result[i].key,
- title: res.result[i].title
- })
- departId.push(res.result[i].key)
- }
- that.resultDepartOptions = depart
- // 判断部门id是否存在,不存在择直接默认当前所在部门
- if (this.model.departIds) {
- this.departIds = this.model.departIds.split(',')
- } else {
- this.departIds = departId
- }
- that.userDepartModel.departIdList = that.checkedDepartKeys
- } else {
- console.log(res.message)
- }
- })
- },
- close () {
- console.log('?????')
- this.$emit('close')
- this.visible = false
- this.ifOa ='0'
- this.disableSubmit = false
- this.selectedRole = []
- this.userDepartModel = { userId: '', departIdList: [] }
- this.checkedDepartNames = []
- this.checkedDepartNameString = ''
- this.checkedDepartKeys = []
- this.selectedDepartKeys = []
- this.resultDepartOptions = []
- this.departIds = []
- this.departIdShow = false
- this.identity = '1'
- this.fileList = []
- this.orgObject = []
- this.userObject = {}
- this.validatorRules.username.rules[0].required = false
- this.validatorRules.confirmpassword.rules[0].required = false
- },
- moment,
- handleSubmit () {
- if(!this.orgObject.pkOrg){
- this.$message.warning("请选择公司");
- return
- }
- const that = this
- // 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
- that.confirmLoading = true
- if (!values.birthday) {
- values.birthday = ''
- } else {
- values.birthday = values.birthday.format(this.dateFormat)
- }
- let formData = Object.assign(this.model, values)
- // 获取公司信息
- formData.pkOrg = this.orgObject.pkOrg
- formData.pkOrgName = this.orgObject.pkOrgName
- formData.avatar = that.fileList
- formData.ifOa = this.ifOa
- formData.selectedroles = this.selectedRole.length > 0 ? this.selectedRole.join(',') : ''
- formData.selecteddeparts =
- this.userDepartModel.departIdList.length > 0 ? this.userDepartModel.departIdList.join(',') : ''
- formData.identity = this.identity
- // 如果是上级择传入departIds,否则为空
- if (this.identity === '2') {
- formData.departIds = this.departIds.join(',')
- } else {
- formData.departIds = ''
- }
- // that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法
- let obj
- if (!this.model.id) {
- formData.id = this.userId
- obj = addUser(formData)
- } else {
- obj = editUser(formData)
- }
- obj
- .then(res => {
- if (res.success) {
- that.$message.success(res.message)
- that.$emit('ok')
- } else {
- that.$message.warning(res.message)
- }
- })
- .finally(() => {
- that.confirmLoading = false
- that.checkedDepartNames = []
- that.userDepartModel.departIdList = { userId: '', departIdList: [] }
- that.close()
- })
- }
- })
- },
- handleCancel () {
- this.close()
- },
- validateToNextPassword (rule, value, callback) {
- const form = this.form
- const confirmpassword = form.getFieldValue('confirmpassword')
- if (value && confirmpassword && value !== confirmpassword) {
- callback('两次输入的密码不一样!')
- }
- if (value && this.confirmDirty) {
- form.validateFields(['confirm'], { force: true })
- }
- callback()
- },
- compareToFirstPassword (rule, value, callback) {
- const form = this.form
- if (value && value !== form.getFieldValue('password')) {
- callback('两次输入的密码不一样!')
- } else {
- callback()
- }
- },
- validatePhone (rule, value, callback) {
- if (!value) {
- callback()
- } else {
- // update-begin--Author:kangxiaolin Date:20190826 for:[05] 手机号不支持199号码段--------------------
- if (new RegExp(/^1[3|4|5|7|8|9][0-9]\d{8}$/).test(value)) {
- // update-end--Author:kangxiaolin Date:20190826 for:[05] 手机号不支持199号码段--------------------
- var params = {
- tableName: 'sys_user',
- fieldName: 'phone',
- fieldVal: value,
- dataId: this.userId
- }
- duplicateCheck(params).then(res => {
- if (res.success) {
- callback()
- } else {
- callback('手机号已存在!')
- }
- })
- } else {
- callback('请输入正确格式的手机号码!')
- }
- }
- },
- validateEmail (rule, value, callback) {
- if (!value) {
- callback()
- } else {
- if (
- new RegExp(
- /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
- ).test(value)
- ) {
- var params = {
- tableName: 'sys_user',
- fieldName: 'email',
- fieldVal: value,
- dataId: this.userId
- }
- duplicateCheck(params).then(res => {
- console.log(res)
- if (res.success) {
- callback()
- } else {
- callback('邮箱已存在!')
- }
- })
- } else {
- callback('请输入正确格式的邮箱!')
- }
- }
- },
- validateUsername (rule, value, callback) {
- var params = {
- tableName: 'sys_user',
- fieldName: 'username',
- fieldVal: value,
- dataId: this.userId
- }
- duplicateCheck(params).then(res => {
- if (res.success) {
- callback()
- } else {
- callback('用户名已存在!')
- }
- })
- },
- validateWorkNo (rule, value, callback) {
- var params = {
- tableName: 'sys_user',
- fieldName: 'work_no',
- fieldVal: value,
- dataId: this.userId
- }
- duplicateCheck(params).then(res => {
- if (res.success) {
- callback()
- } else {
- callback('工号已存在!')
- }
- })
- },
- handleConfirmBlur (e) {
- const value = e.target.value
- this.confirmDirty = this.confirmDirty || !!value
- },
- normFile (e) {
- console.log('Upload event:', e)
- if (Array.isArray(e)) {
- return e
- }
- return e && e.fileList
- },
- beforeUpload: function (file) {
- var fileType = file.type
- if (fileType.indexOf('image') < 0) {
- this.$message.warning('请上传图片')
- return false
- }
- // TODO 验证文件大小
- },
- handleChange (info) {
- this.picUrl = ''
- if (info.file.status === 'uploading') {
- this.uploadLoading = true
- return
- }
- if (info.file.status === 'done') {
- var response = info.file.response
- this.uploadLoading = false
- console.log(response)
- if (response.success) {
- this.model.avatar = response.message
- this.picUrl = 'Has no pic url yet'
- } else {
- this.$message.warning(response.message)
- }
- }
- },
- // 搜索用户对应的部门API
- onSearch () {
- this.$refs.departWindow.add(this.checkedDepartKeys, this.userId, this.userObject)
- },
- // 获取用户对应部门弹出框提交给返回的数据
- modalFormOk (formData) {
- this.orgObject = formData.orgObject // 公司信息
- // 没有选择则直接退出
- if (!formData.departIdList || formData.departIdList.length == 0) {
- return
- }
- this.checkedDepartNames = []
- this.selectedDepartKeys = []
- this.checkedDepartNameString = ''
- this.userId = formData.userId
- this.userDepartModel.userId = formData.userId
- this.departIds = []
- this.resultDepartOptions = []
- var depart = []
- 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(',')
- // 新增部门选择,如果上面部门选择后不为空直接付给负责部门
- depart.push({
- key: formData.departIdList[i].key,
- title: formData.departIdList[i].title
- })
- this.departIds.push(formData.departIdList[i].key)
- }
- this.resultDepartOptions = depart
- this.userDepartModel.departIdList = this.selectedDepartKeys
- this.checkedDepartKeys = this.selectedDepartKeys // 更新当前的选择keys
- },
- // 根据屏幕变化,设置抽屉尺寸
- resetScreenSize () {
- let screenWidth = document.body.clientWidth
- if (screenWidth < 500) {
- this.drawerWidth = screenWidth
- } else {
- this.drawerWidth = 700
- }
- },
- identityChange (e) {
- if (e.target.value === '1') {
- this.departIdShow = false
- } else {
- this.departIdShow = true
- }
- },
- changeOa(e){
- if(e.target.value !== '1'){
- var text =this.form.getFieldValue('workNo')
- var text1 =this.form.getFieldValue('username')
- if(text1==''||!text1){
- this.form.setFieldsValue({username:text})
- }
- }
- },
- changeWorkNo(e){
- var that = this
- setTimeout(function(){
- var text1 =that.form.getFieldValue('workNo')
- var text =that.form.getFieldValue('username')
- if((text==''||!text)&& that.ifOa =='0'){
- that.form.setFieldsValue({username:''})
- that.form.setFieldsValue({username:text1})
- }
- },0)
-
-
- },
- changePssword(){
- this.validatorRules.confirmpassword.rules[0].required = true
- }
- }
- }
- </script>
- <style scoped lang="less">
- .avatar-uploader > .ant-upload {
- width: 104px;
- height: 104px;
- }
- .ant-upload-select-picture-card i {
- font-size: 49px;
- color: #999;
- }
- .ant-upload-select-picture-card .ant-upload-text {
- margin-top: 8px;
- color: #666;
- }
- .ant-table-tbody .ant-table-row td {
- padding-top: 10px;
- padding-bottom: 10px;
- }
- .drawer-bootom-button {
- position: absolute;
- bottom: 0;
- width: 100%;
- border-top: 1px solid #e8e8e8;
- padding: 10px 16px;
- text-align: right;
- left: 0;
- background: #fff;
- border-radius: 0 0 2px 2px;
- }
- /deep/.ant-form-item{
- width: 31%;
- }
- /deep/.ant-form{
- display: flex;
- width: 100%;
- flex-wrap: wrap;
- }
- .nresume{
- width: 100% !important;
- }
- /deep/ .nresume .ant-form-item-label{
- width: 8% !important;
- }
- /deep/ .nresume .ant-form-item-control-wrapper{
- width: 84% !important;
- }
- /deep/ .nresume .ant-input{
- height: 100px !important;
- }
- /deep/ .ant-col-sm-5{
- width: 27%;
- }
- </style>
|