LiGuang 3 tahun lalu
induk
melakukan
2b389c56ab
2 mengubah file dengan 1170 tambahan dan 18 penghapusan
  1. 19 18
      package.json
  2. 1151 0
      src/views/system/modules/UserDetailModal.vue

+ 19 - 18
package.json

@@ -10,40 +10,41 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "@antv/data-set": "^0.11.4",
     "@jeecg/antd-online-mini": "2.4.22-beta",
+    "@tinymce/tinymce-vue": "^2.1.0",
+    "@toast-ui/editor": "^2.1.2",
     "ant-design-vue": "^1.7.2",
-    "@antv/data-set": "^0.11.4",
-    "viser-vue": "^2.4.8",
+    "area-data": "^5.0.6",
     "axios": "^0.18.0",
+    "clipboard": "^2.0.4",
+    "codemirror": "^5.46.0",
     "dayjs": "^1.8.0",
+    "dom-align": "1.12.0",
     "enquire.js": "^2.1.6",
     "js-cookie": "^2.2.0",
     "lodash.get": "^4.4.2",
     "lodash.pick": "^4.4.0",
     "md5": "^2.2.1",
     "nprogress": "^0.2.0",
+    "tinymce": "^5.3.2",
+    "viser-vue": "^2.4.8",
     "vue": "^2.6.10",
+    "vue-area-linkage": "^5.1.0",
     "vue-cropper": "^0.5.4",
     "vue-i18n": "^8.7.0",
     "vue-loader": "^15.7.0",
     "vue-ls": "^3.2.0",
-    "vue-router": "^3.0.1",
-    "vuex": "^3.1.0",
-    "vue-print-nb-jeecg": "^1.0.9",
-    "clipboard": "^2.0.4",
     "vue-photo-preview": "^1.1.3",
+    "vue-print-nb-jeecg": "^1.0.9",
+    "vue-router": "^3.0.1",
     "vue-splitpane": "^1.0.4",
     "vuedraggable": "^2.20.0",
-    "codemirror": "^5.46.0",
-    "@tinymce/tinymce-vue": "^2.1.0",
-    "tinymce": "^5.3.2",
-    "@toast-ui/editor": "^2.1.2",
-    "vue-area-linkage": "^5.1.0",
-    "area-data": "^5.0.6",
-    "dom-align": "1.12.0",
-    "xe-utils": "2.4.8",
+    "vuex": "^3.1.0",
     "vxe-table": "2.9.13",
-    "vxe-table-plugin-antd": "1.8.10"
+    "vxe-table-plugin-antd": "1.8.10",
+    "weixin-js-sdk": "^1.2.0",
+    "xe-utils": "2.4.8"
   },
   "devDependencies": {
     "@babel/polyfill": "^7.2.5",
@@ -52,13 +53,13 @@
     "@vue/cli-service": "^3.3.0",
     "@vue/eslint-config-standard": "^4.0.0",
     "babel-eslint": "7.2.3",
+    "compression-webpack-plugin": "^3.1.0",
     "eslint": "^5.16.0",
     "eslint-plugin-vue": "^5.1.0",
+    "html-webpack-plugin": "^4.2.0",
     "less": "^3.9.0",
     "less-loader": "^4.1.0",
-    "vue-template-compiler": "^2.6.10",
-    "html-webpack-plugin": "^4.2.0",
-    "compression-webpack-plugin": "^3.1.0"
+    "vue-template-compiler": "^2.6.10"
   },
   "eslintConfig": {
     "root": true,

+ 1151 - 0
src/views/system/modules/UserDetailModal.vue

@@ -0,0 +1,1151 @@
+<template>
+  <a-modal footer="" :width="1000" :dialogStyle="dialogStyle" title="员工信息详情" :visible="visible"  @cancel="handleCancel" cancelText="关闭">
+
+    <template slot="title">
+      <div style="width: 100%;">
+        <span>员工信息详情</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" style="overflow-y: auto;height: 650px;">
+        <a-row>
+          <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-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-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-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 disabled v-model="sfzType" >
+                <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">
+              <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-row>
+
+        <a-row>
+          <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="['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 :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-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-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-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-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>
+          </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>
+          </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-row>
+
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="8">
+            <a-form-item label="人员类别" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <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>
+                <a-select-option :value="104">劳务工</a-select-option>
+                <a-select-option :value="105">劳务外包5+2</a-select-option>
+                <a-select-option :value="106">劳务外包6+1</a-select-option>
+                <a-select-option :value="102">顾问</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-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%" 
+                v-decorator="['entryDate', {initialValue:!model.entryDate?moment(new Date(),dateFormat):moment(model.entryDate,dateFormat)}]"
+                :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 disabled maxLength="10"  v-decorator="[ 'urgentName',{}]" />
+            </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-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>
+          </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>
+          </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-form-item label="是否打卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-select disabled v-decorator="[ 'isAttendance', {initialValue:'0'}]" >
+                <a-select-option value="0">是</a-select-option>
+                <a-select-option value="1">否</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-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-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>
+          </a-col>
+          <a-col :md="6" :sm="8" :lg="16">
+            <a-table rowKey="id" bordered :data-source="dataSources" :columns="columnst"  :pagination="ipaginations" @change="handleTableChanges"
+           
+            >
+              
+            </a-table>
+          </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 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"
+            >
+            
+        
+      </a-upload>
+    </a-modal>
+    
+  </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,
+    httpAction,
+    deleteAction
+  } from '@/api/manage'
+  import {
+    addUser,
+    editUser,
+    queryUserRole,
+    queryall
+  } from '@/api/api'
+  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: {
+      JImageUpload,
+      departWindow,
+      JSelectPosition
+    },
+    data() {
+      return {
+        selectedRowKeys:[],
+        selectionRows:[],
+        departDisabled: false, //是否是我的部门调用该页面
+        roleDisabled: false, //是否是角色维护调用该页面
+        modalWidth: 800,
+        drawerWidth: 700,
+        titles: "新增员工",
+        visibles:false,
+        personType:false,
+        dataSources:[],
+        modaltoggleFlag: true,
+        sfzCode: "",
+        bankCard: "",
+        bankAddr: "",
+        syFund: "",
+        visiblet: false,
+        phone: "",
+        isSalary: "0",
+        email: "",
+        isAttendance: "0",
+        zwName:"",
+        zwCode:"",
+        sfzType: "0",
+        ipaginations:{
+          current: 1,
+          pageSize: 10,
+          pageSizeOptions: ['10', '20', '30'],
+          showTotal: (total, range) => {
+            return range[0] + "-" + range[1] + " 共" + total + "条"
+          },
+          showQuickJumper: true,
+          showSizeChanger: true,
+          total: 0
+        },
+        fileLists: [],
+        confirmDirty: false,
+        files: [],
+        selectedDepartKeys: [], //保存用户选择部门id
+        checkedDepartKeys: [],
+        checkedDepartNames: [], // 保存部门的名称 =>title
+        checkedDepartNameString: "", // 保存部门的名称 =>title
+        resultDepartOptions: [],
+        userId: "", //保存用户id
+        disableSubmit: false,
+        userDepartModel: {
+          userId: '',
+          departIdList: []
+        }, // 保存SysUserDepart的用户部门中间表数据需要的对象
+        dateFormat: "YYYY-MM-DD",
+        validatorRules: {
+          phone: {
+            rules: [{
+              required: true,
+              message: '请输入手机号!'
+            }, {
+              validator: this.validatePhone
+            }]
+          },
+          email: {
+            rules: [{
+              required: true,
+              message: '请输入邮箱'
+            }, {
+              validator: this.validateEmail
+            }]
+          },
+          realname: {
+            rules: [{
+              required: true,
+              message: '请输入姓名'
+            }, {
+              validator: this.validateRealname
+            }]
+          },
+          egName: {
+            rules: [{
+              required: true,
+              message: '请输入英文名'
+            }, {
+              validator: this.validateEgname
+            }]
+          },
+          sfzCode: {
+            rules: [{
+              required: true,
+              message: '请输入身份证号'
+            }, {
+              validator: this.validateSfzCode
+            }]
+          },
+          sex: {
+            rules: [{
+              required: true,
+              message: '请选择性别'
+            }]
+          },
+          bankCard: {
+            rules: [{
+              required: true,
+              message: '请输入银行账号'
+            },
+            {validator: this.validatebankCard}
+            ]
+          },
+          syFund: {
+            rules: [{
+              required: true,
+              message: '请输入公积金账号'
+            },
+            {validator: this.validatesyFund}
+            ]
+          },
+          wagesOne: {
+            rules: [{
+              required: true,
+              message: '请输入基本工资'
+            }
+           
+            ]
+          }
+        },
+        columnst:[{
+          title: '员工姓名',
+          dataIndex: 'realname',
+        },{
+          title: '类型',
+          dataIndex: 'type',
+          customRender:function(t,r,index){
+            var name="奖";
+            if(t=="1"||t==1){
+              name="惩";
+            }
+            return name;
+          }
+        },{
+          title: '备注',
+          dataIndex: 'demo',
+        },
+        {
+             title: '日期',
+             align:"center",
+             dataIndex: 'date',
+             customRender:function(t,r,index){
+               return moment(t).format('YYYY-MM-DD');
+             }
+            },
+        ],
+        departIdShow: false,
+        departIds: [], //负责部门id
+        title: "操作",
+        visible: false,
+        dialogStyle:{
+          top:"15px"
+        },
+        model: {},
+        roleList: [],
+        selectedRole: [],
+        realname: "",
+        egName: "",
+        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",
+          userWithDepart: "/sys/user/userDepartList", // 引入为指定用户查看部门信息需要的url
+          userId: "/sys/user/generateUserId", // 引入生成添加用户情况下的url
+          syncUserByUserName: "/act/process/extActProcess/doSyncUserByUserName", //同步用户到工作流
+          queryTenantList: '/sys/tenant/queryList',
+          xzupload: '/sys/common/static',
+          sysFile: '/sysFile/sysFile/queryByUserId',
+          delSysFile:'/sysFile/sysFile/deleteById',
+          post:'/sys/position/listByDept',
+          Prize:'/userPrize/userPrize/list'
+        },
+        identity: "1",
+        fileList: [],
+        tenantList: [],
+        currentTenant: []
+      }
+    },
+    created() {
+      const token = Vue.ls.get(ACCESS_TOKEN);
+      this.headers = {
+        "X-Access-Token": token
+      }
+      this.initTenantList()
+
+    },
+
+    computed: {
+      uploadAction: function() {
+        return this.url.fileUpload;
+      }
+    },
+    methods: {
+      zwOk(){
+        if(this.selectionRows!=null&&this.selectionRows.length>0){
+        this.zwName=this.selectionRows[0].name;
+        this.zwCode=this.selectionRows[0].code;
+        }
+        this.visibles=false;
+      },
+      onSelectChanges(selectedRowKeys, selectionRows) {
+        this.selectedRowKeys = selectedRowKeys;
+        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();
+     },
+      
+      queryPrize(){
+        getAction(this.url.Prize, {
+          pageNo:this.ipaginations.current,
+          pageSize: this.ipaginations.pageSize,
+          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(() => {
+        });
+      },
+    
+      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.visiblet = false;
+      },
+      // 文件下载
+      handleDownload(file) {
+        window.location.href = "http://58.34.141.138:8085/jeecg-boot/sys/common/static/" + file.response.message;
+      },
+      t(info) {
+        // this.files = [];
+        // let {
+        //   fileList
+        // } = info
+        // const status = info.file.status
+        // if (status !== 'uploading') {}
+        // if (status === 'done') {
+        //   var list = fileList.fileList;
+        //   for (var i = 0; i < list.length; i++) {
+        //     this.files.push(list[i].response.message);
+        //   }
+        // }
+        this.fileLists = info.fileList //重点
+        //console.log(info)
+      },
+      saveUpload() {
+        this.visiblet = false;
+      },
+      uploads() {
+        this.visiblet = true;
+      },
+      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
+            })
+          }
+        }
+
+
+
+      },
+      handleChangeStatus(e){
+        if(e==101){
+          this.personType=false;
+        }else{
+          this.personType=true;
+          this.form.setFieldsValue({
+            wagesBase: null
+          })
+        }
+      },
+      queryFiles(e) {
+        getAction(this.url.sysFile, {
+          userid: e
+        }).then(res => {
+          if (res.success) {
+            if (res.result.length > 0) {
+              this.fileLists = [];
+              for (var i = 0; i < res.result.length; i++) {
+                const rs = {
+                  message: res.result[i].txtName
+                };
+                const fileInfo = {
+                  uid: res.result[i].id,
+                  name: res.result[i].txtName,
+                  status: "done",
+                  response: rs,
+                  url: "http://58.34.141.138:8085/jeecg-boot/" + res.result[i].txtName,
+                };
+                this.fileLists.push(fileInfo)
+              }
+            }
+          }
+        })
+      },
+      initTenantList() {
+        getAction(this.url.queryTenantList).then(res => {
+          if (res.success) {
+            this.tenantList = res.result
+          }
+        })
+      },
+      //窗口最大化切换
+      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;
+        this.currentTenant = []
+        this.sfzCode = "";
+        this.realname = "";
+        this.egName = "";
+        this.syFund = "";
+        this.isAttendance = 0;
+        this.isSalary = 0;
+        this.bankAddr = "";
+        this.bankCard = "";
+        this.phone = "";
+        this.email = "";
+        this.zwCode="";
+        this.zwName="";
+        this.selectedRowKeys=[];
+        this.selectionRows=[];
+      },
+      add() {
+        this.picUrl = "";
+        this.refresh();
+
+        this.edit({
+          activitiSync: '1'
+        });
+      },
+      edit(record) {
+        this.realname = record.realname;
+        this.egName = record.egName;
+        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;
+          }, 5)
+        }
+        if (record.sfzType != null && record.sfzType != "") {
+          this.sfzType = record.sfzType;
+        }
+        that.visible = true;
+        that.model = Object.assign({}, record);
+        this.zwCode=record.post;
+        this.zwName=record.post_dictText;
+        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'))
+        });
+        //身份为上级显示负责部门,否则不显示
+        if (this.model.userIdentity == "2") {
+          this.identity = "2";
+          this.departIdShow = true;
+        } else {
+          this.identity = "1";
+          this.departIdShow = false;
+        }
+       
+        //update-begin-author:taoyan date:2020710 for:多租户配置
+        if (!record.relTenantIds || record.relTenantIds.length == 0) {
+          this.currentTenant = []
+        } else {
+          this.currentTenant = record.relTenantIds.split(',').map(Number);
+        }
+
+        if (record.id != null && record.id != "") {
+          this.userId = record.id;
+          this.queryFiles(record.id)
+        }
+        
+        // 调用查询用户对应的部门信息的方法
+        that.checkedDepartKeys = [];
+        that.loadCheckedDeparts();
+        if (this.userId != null && this.userId != "") {
+          this.queryFiles(this.userId)
+          this.queryPrize();
+        }
+      },
+      //
+      loadCheckedDeparts() {
+        var id= this.userId
+        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() {
+        this.$emit('close');
+        this.visible = false;
+        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.fileLists=[];
+        this.identity = "1";
+        this.bankAddr = "";
+        this.bankCard = "";
+        this.syFund = "";
+      },
+      moment,
+      handleSubmit() {
+        if (this.userDepartModel.departIdList.join(",") == "" || this.userDepartModel.departIdList.join(",") == null) {
+          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;
+            }
+            let formData = Object.assign(this.model, values);
+            // if (that.fileList != '') {
+            //   formData.avatar = that.fileList;
+            // } else {
+            //   formData.avatar = null;
+            // }
+            formData.sfzType = this.sfzType;
+            var a = this.fileLists;
+            var txt = [];
+            console.log(this.fileLists)
+            if (this.fileLists != null && this.fileLists.length > 0) {
+              for (var i = 0; i < this.fileLists.length; i++) {
+                txt.push(this.fileLists[i].response.message)
+              }
+              formData.txt = txt.join(",");
+            }
+            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 = "";
+            }
+
+            // 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();
+            })
+
+          } else {
+            console.log("1")
+          }
+        })
+      },
+      handleCancel() {
+        this.close()
+      },
+      validateRealname(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          this.realname = value;
+          if (this.egName != null && this.egName != "") {
+            var emil = "@gksports.com.cn";
+            var name = py.chineseToPinYin(value.substr(0, 1))
+            this.form.setFieldsValue({
+              email: this.egName + "." + name + emil
+            })
+          }
+          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)) {
+              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)){
+              this.getBirth(value)
+            }else{
+              callback("请输入正确格式的身份证号码!");
+            }
+            
+          }
+          callback()
+        }
+      },
+      validateEgname(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          this.egName = value;
+          if (this.realname != null && this.realname != "") {
+            var emil = "@gksports.com.cn";
+            var name = py.chineseToPinYin(this.realname.substr(0, 1))
+            this.form.setFieldsValue({
+              email: value + "." + name + emil
+            })
+          }
+          callback()
+        }
+      },
+      validatesyFund(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if(value.length!=9&&value.length!=12){
+           callback('请输入正确格式的公积金账号');
+          }
+          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("请输入正确格式的手机号码!");
+          }
+        }
+      },
+      validatebankCard(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if(value.length!=19&&value.length!=17&&value.length!=16){
+           callback('请输入正确格式的银行卡账号');
+          }
+          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) => {
+              if (res.success) {
+                callback()
+              } else {
+                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() {
+        console.log(this.$refs.departWindow)
+        this.$refs.departWindow.add(this.checkedDepartKeys, this.userId);
+      },
+
+      // 获取用户对应部门弹出框提交给返回的数据
+      modalFormOk(formData) {
+        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;
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+  .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: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>