zhuxinbo 4 tahun lalu
induk
melakukan
8ef864e61c

+ 40 - 96
src/views/system/UserList.vue

@@ -3,20 +3,25 @@
 
     <!-- 查询区域 -->
     <div class="table-page-search-wrapper">
-      <a-form layout="inline" @keyup.enter.native="searchQuery">
+      <a-form layout="inline">
         <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-input placeholder="请输入账号查询" v-model="queryParam.username"></a-input>
             </a-form-item>
           </a-col>
 
+
+          <a-col :md="6" :sm="12">
+            <a-form-item label="姓名">
+              <a-input placeholder="请输入姓名查询" v-model="queryParam.realname"></a-input>
+            </a-form-item>
+          </a-col>
           <a-col :md="6" :sm="8">
             <a-form-item label="性别">
-              <a-select v-model="queryParam.sex" placeholder="请选择性别">
-                <a-select-option value="">请选择</a-select-option>
+              <a-select v-model="queryParam.sex" 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-select>
@@ -24,10 +29,10 @@
           </a-col>
 
 
-          <template v-if="toggleSearchStatus">
+
             <a-col :md="6" :sm="8">
-              <a-form-item label="真实名字">
-                <a-input placeholder="请输入真实名字" v-model="queryParam.realname"></a-input>
+              <a-form-item label="邮箱">
+                <a-input placeholder="请输入邮箱查询" v-model="queryParam.email"></a-input>
               </a-form-item>
             </a-col>
 
@@ -38,24 +43,19 @@
             </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-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-select-option value="2">冻</a-select-option>
                 </a-select>
               </a-form-item>
             </a-col>
-          </template>
 
           <a-col :md="6" :sm="8">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
               <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '收起' : '展开' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
-              </a>
             </span>
           </a-col>
 
@@ -65,40 +65,11 @@
 
     <!-- 操作按钮区域 -->
     <div class="table-operator" style="border-top: 5px">
-      <a-button @click="handleAdd" type="primary" icon="plus">添加用户</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('用户信息')">导出</a-button>
-      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
-        <a-button type="primary" icon="import">导入</a-button>
-      </a-upload>
-      <a-button type="primary" icon="hdd" @click="recycleBinVisible=true">回收站</a-button>
-      <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay" @click="handleMenuClick">
-          <a-menu-item key="1">
-            <a-icon type="delete" @click="batchDel"/>
-            删除
-          </a-menu-item>
-          <a-menu-item key="2">
-            <a-icon type="lock" @click="batchFrozen('2')"/>
-            冻结
-          </a-menu-item>
-          <a-menu-item key="3">
-            <a-icon type="unlock" @click="batchFrozen('1')"/>
-            解冻
-          </a-menu-item>
-        </a-menu>
-        <a-button style="margin-left: 8px">
-          批量操作
-          <a-icon type="down"/>
-        </a-button>
-      </a-dropdown>
+      <a-button @click="handleAdd" v-has="'user:add'" type="primary" icon="plus">添加用户</a-button>
     </div>
 
     <!-- table区域-begin -->
     <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i>已选择&nbsp;<a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项&nbsp;&nbsp;
-        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-      </div>
 
       <a-table
         ref="table"
@@ -109,19 +80,16 @@
         :dataSource="dataSource"
         :pagination="ipagination"
         :loading="loading"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
         @change="handleTableChange">
 
-        <template slot="avatarslot" slot-scope="text, record, index">
+        <template slot="avatarslot" slot-scope="text, record">
           <div class="anty-img-wrap">
             <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
           </div>
         </template>
 
         <span slot="action" slot-scope="text, record">
-         <!-- <a @click="handleEdit(record)" v-has="'user:edit'">编辑</a>-->
           <a @click="handleEdit(record)">编辑</a>
-
           <a-divider type="vertical"/>
 
           <a-dropdown>
@@ -144,13 +112,13 @@
               </a-menu-item>
 
               <a-menu-item v-if="record.status==1">
-                <a-popconfirm title="确定冻结吗?" @confirm="() => handleFrozen(record.id,2,record.username)">
+                <a-popconfirm title="确定冻结吗?" @confirm="() => handleFrozen(record.id,2)">
                   <a>冻结</a>
                 </a-popconfirm>
               </a-menu-item>
 
               <a-menu-item v-if="record.status==2">
-                <a-popconfirm title="确定解冻吗?" @confirm="() => handleFrozen(record.id,1,record.username)">
+                <a-popconfirm title="确定解冻吗?" @confirm="() => handleFrozen(record.id,1)">
                   <a>解冻</a>
                 </a-popconfirm>
               </a-menu-item>
@@ -173,22 +141,16 @@
     <password-modal ref="passwordmodal" @ok="passwordModalOk"></password-modal>
 
     <sys-user-agent-modal ref="sysUserAgentModal"></sys-user-agent-modal>
-
-    <!-- 用户回收站 -->
-    <user-recycle-bin-modal :visible.sync="recycleBinVisible" @ok="modalFormOk"/>
-
   </a-card>
 </template>
 
 <script>
   import UserModal from './modules/UserModal'
   import PasswordModal from './modules/PasswordModal'
-  import {putAction,getFileAccessHttpUrl} from '@/api/manage';
+  import {putAction} from '@/api/manage';
   import {frozenBatch} from '@/api/api'
   import {JeecgListMixin} from '@/mixins/JeecgListMixin'
   import SysUserAgentModal from "./modules/SysUserAgentModal";
-  import JInput from '@/components/jeecg/JInput'
-  import UserRecycleBinModal from './modules/UserRecycleBinModal'
 
   export default {
     name: "UserList",
@@ -196,15 +158,12 @@
     components: {
       SysUserAgentModal,
       UserModal,
-      PasswordModal,
-      JInput,
-      UserRecycleBinModal
+      PasswordModal
     },
     data() {
       return {
         description: '这是用户管理页面',
         queryParam: {},
-        recycleBinVisible: false,
         columns: [
           /*{
             title: '#',
@@ -220,11 +179,10 @@
             title: '用户账号',
             align: "center",
             dataIndex: 'username',
-            width: 120,
-            sorter: true
+            width: 120
           },
           {
-            title: '用户姓名',
+            title: '真实姓名',
             align: "center",
             width: 100,
             dataIndex: 'realname',
@@ -247,7 +205,7 @@
           {
             title: '生日',
             align: "center",
-            width: 100,
+            width: 180,
             dataIndex: 'birthday'
           },
           {
@@ -257,16 +215,9 @@
             dataIndex: 'phone'
           },
           {
-            title: '部门',
-            align: "center",
-            width: 180,
-            dataIndex: 'orgCode'
-          },
-          {
-            title: '负责部门',
+            title: '邮箱',
             align: "center",
-            width: 180,
-            dataIndex: 'departIds_dictText'
+            dataIndex: 'email'
           },
           {
             title: '状态',
@@ -274,6 +225,13 @@
             width: 80,
             dataIndex: 'status_dictText'
           },
+          /* {
+             title: '创建时间',
+             align: "center",
+             width: 150,
+             dataIndex: 'createTime',
+             sorter: true
+           },*/
           {
             title: '操作',
             dataIndex: 'action',
@@ -284,6 +242,7 @@
 
         ],
         url: {
+          imgerver: window._CONFIG['domianURL'] + "/sys/common/view",
           syncUser: "/process/extActProcess/doSyncUser",
           list: "/sys/user/list",
           delete: "/sys/user/delete",
@@ -294,13 +253,13 @@
       }
     },
     computed: {
-      importExcelUrl: function(){
+      importExcelUrl: function () {
         return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
       }
     },
     methods: {
       getAvatarView: function (avatar) {
-        return getFileAccessHttpUrl(avatar)
+        return this.url.imgerver + "/" + avatar;
       },
 
       batchFrozen: function (status) {
@@ -310,16 +269,6 @@
         } else {
           let ids = "";
           let that = this;
-          let isAdmin = false;
-          that.selectionRows.forEach(function (row) {
-            if (row.username == 'admin') {
-              isAdmin = true;
-            }
-          });
-          if (isAdmin) {
-            that.$message.warning('管理员账号不允许此操作,请重新选择!');
-            return;
-          }
           that.selectedRowKeys.forEach(function (val) {
             ids += val + ",";
           });
@@ -349,13 +298,8 @@
           this.batchFrozen(1);
         }
       },
-      handleFrozen: function (id, status, username) {
+      handleFrozen: function (id, status) {
         let that = this;
-        //TODO 后台校验管理员角色
-        if ('admin' == username) {
-          that.$message.warning('管理员账号不允许此操作!');
-          return;
-        }
         frozenBatch({ids: id, status: status}).then((res) => {
           if (res.success) {
             that.$message.success(res.message);
@@ -368,7 +312,7 @@
       handleChangePassword(username) {
         this.$refs.passwordmodal.show(username);
       },
-      handleAgentSettings(username){
+      handleAgentSettings(username) {
         this.$refs.sysUserAgentModal.agentSettings(username);
         this.$refs.sysUserAgentModal.title = "用户代理人设置";
       },

+ 71 - 87
src/views/system/modules/DepartWindow.vue

@@ -8,27 +8,23 @@
     @cancel="handleCancel"
     cancelText="关闭"
     wrapClassName="ant-modal-cust-warp"
-    >
+  >
     <!--部门树-->
     <template>
       <a-form :form="form">
-      <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级部门">
-      <a-tree
-        multiple
-        treeCheckable="tree"
-        checkable
-        @expand="onExpand"
-        :expandedKeys="expandedKeysss"
-        :checkedKeys="checkedKeys"
-        allowClear="true"
-        :checkStrictly="true"
-        @check="onCheck"
-        :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
-        :treeData="departTree"
-        placeholder="请选择上级部门"
-        >
-      </a-tree>
-      </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级部门">
+          <a-tree
+            treeCheckable="tree"
+            :selectedKeys.sync="checkedKeys"
+            allowClear="true"
+            :checkStrictly="true"
+            @select="onCheck"
+            :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
+            :treeData="departTree"
+            placeholder="请选择上级部门"
+          >
+          </a-tree>
+        </a-form-item>
       </a-form>
     </template>
   </a-modal>
@@ -36,76 +32,78 @@
 
 <script>
   import pick from 'lodash.pick'
-  import { getAction } from '@/api/manage'
-  import { queryIdTree } from '@/api/api'
+  import {getAction} from '@/api/manage'
+  import {queryIdTree} from '@/api/api'
   import userModal from './UserModal'
+
   export default {
     name: "DepartWindow",
     components: {
       userModal,
     },
-    data () {
+    data() {
       return {
-        checkedKeys:[], // 存储选中的部门id
-        expandedKeysss:[],//展开的节点
-        userId:"", // 存储用户id
-        model:{}, // 存储SysUserDepartsVO表
-        userDepartModel:{userId:'',departIdList:[]}, // 存储用户id一对多部门信息的对象
-        departList:[], // 存储部门信息
-        modalWidth:400,
-        departTree:[],
-        title:"操作",
+        checkedKeys: [], // 存储选中的部门id
+        userId: "", // 存储用户id
+        model: {}, // 存储SysUserDepartsVO表
+        userDepartModel: {userId: '', departIdList: []}, // 存储用户id一对多部门信息的对象
+        departList: [], // 存储部门信息
+        modalWidth: 400,
+        departTree: [],
+        title: "操作",
         visible: false,
         labelCol: {
-          xs: { span: 24 },
-          sm: { span: 5 },
+          xs: {span: 24},
+          sm: {span: 5},
         },
         wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 },
+          xs: {span: 24},
+          sm: {span: 16},
         },
         confirmLoading: false,
-        headers:{},
-        form:this.$form.createForm(this),
+        headers: {},
+        form: this.$form.createForm(this),
         url: {
-          userId:"/sys/user/generateUserId", // 引入生成添加用户情况下的url
+          userId: "/sys/user/generateUserId", // 引入生成添加用户情况下的url
         },
       }
     },
     methods: {
-      add (checkedDepartKeys,userId) {
+      add(checkedDepartKeys, userId) {
         this.checkedKeys = checkedDepartKeys;
         this.userId = userId;
         this.edit({});
       },
-      edit (record) {
+      edit(record) {
         this.departList = [];
         this.queryDepartTree();
         this.form.resetFields();
         this.visible = true;
         this.model = Object.assign({}, record);
-        let filedsVal = pick(this.model,'id','userId','departIdList');
+        let filedsVal = pick(this.model, 'id', 'userId', 'departIdList');
         this.$nextTick(() => {
           this.form.setFieldsValue(filedsVal);
         });
       },
-      close () {
+      close() {
         this.$emit('close');
         this.visible = false;
         this.departList = [];
         this.checkedKeys = [];
       },
-      handleSubmit () {
+      handleSubmit() {
         const that = this;
         // 触发表单验证
         this.form.validateFields((err) => {
           if (!err) {
             that.confirmLoading = true;
-            if(this.userId == null){
-              getAction(this.url.userId).then((res)=>{
-                if(res.success){
-                  let formData = {userId:res.result,
-                  departIdList:this.departList}
+            if (this.userId == null) {
+              getAction(this.url.userId).then((res) => {
+                if (res.success) {
+                  let formData = {
+                    userId: res.result,
+                    departIdList: this.departList
+                  }
                   console.log(formData)
                   that.$emit('ok', formData);
                 }
@@ -114,9 +112,11 @@
                 that.confirmLoading = false;
                 that.close();
               })
-            }else {
-              let formData = {userId:this.userId,
-                departIdList:this.departList}
+            } else {
+              let formData = {
+                userId: this.userId,
+                departIdList: this.departList
+              }
               console.log(formData)
               that.departList = [];
               that.$emit('ok', formData);
@@ -126,60 +126,44 @@
           }
         })
       },
-      handleCancel () {
+      handleCancel() {
         this.close()
       },
 
       // 选择部门时作用的API
-      onCheck(checkedKeys, info){
+      onCheck(checkedKeys, info) {
         this.departList = [];
-        this.checkedKeys = checkedKeys.checked;
-        let checkedNodes = info.checkedNodes;
-        for (let i = 0; i < checkedNodes.length; i++) {
-          let de = checkedNodes[i].data.props;
-          let depart = {key:"",value:"",title:""};
-          depart.key = de.value;
-          depart.value = de.value;
-          depart.title = de.title;
+        this.checkedKeys = checkedKeys;
+        let checkedNodes = info.selectedNodes[0].data.props;
+        console.log(checkedKeys,info)
+        // for (let i = 0; i < checkedNodes.length; i++) {
+        //   let de = checkedNodes[i].data.props;
+          let depart = {key: "", value: "", title: ""};
+          depart.key = checkedNodes.value;
+          depart.value = checkedNodes.value;
+          depart.title = checkedNodes.title;
           this.departList.push(depart);
-        }
+        // }
         console.log('onCheck', checkedKeys, info);
       },
-      queryDepartTree(){
-        queryIdTree().then((res)=>{
-          if(res.success){
+      queryDepartTree() {
+        queryIdTree().then((res) => {
+          if (res.success) {
             this.departTree = res.result;
-            if(this.checkedKeys&&this.checkedKeys.length >0){
-              let treekey=[];
-              let arr=res.result;
-              if(arr&&arr.length>0){
-                arr.forEach(item => {
-                  treekey.push(item.key);
-             /*     if(item.children&&item.children.length>0){
-                    item.children.forEach(item1 => {
-                      treekey.push(item1.key);
-                    })
-                  }*/
-                })
-                this.expandedKeysss = treekey
-              }
-            }
+            console.log(res.result)
           }
         })
       },
-      onExpand(expandedKeys){
-        this.expandedKeysss = expandedKeys;
-      },
-      modalFormOk(){
+      modalFormOk() {
 
       }
-      },
+    },
   }
 </script>
 
 <style scoped>
-  .ant-table-tbody .ant-table-row td{
-    padding-top:10px;
-    padding-bottom:10px;
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 10px;
+    padding-bottom: 10px;
   }
 </style>

+ 185 - 294
src/views/system/modules/UserModal.vue

@@ -23,113 +23,92 @@
       <a-form :form="form">
 
         <a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-input placeholder="请输入用户账号" v-decorator.trim="[ 'username', validatorRules.username]" :readOnly="!!model.id"/>
+             <!-- :readOnly="!!model.id" -->
+          <a-input placeholder="请输入用户账号" v-decorator="[ 'username', validatorRules.username]"/>
         </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]" />
+          <a-form-item label="登陆密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
+            <a-input type="password" placeholder="请输入登陆密码" v-decorator="[ 'password', validatorRules.password]"/>
           </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 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" >
-          <a-input placeholder="请输入用户名" v-decorator.trim="[ 'realname', validatorRules.realname]" />
+        <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.trim="[ 'workNo']" />
-        </a-form-item>
-
-        <a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>
+        <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" v-show="!roleDisabled" >
+        
+        <a-form-item label="角色分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">
           <a-select
-            mode="multiple"
             style="width: 100%"
             placeholder="请选择用户角色"
-            optionFilterProp = "children"
-            v-model="selectedRole"
-            :getPopupContainer= "(target) => target.parentNode">
+            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-item label="部门分配" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
-          <a-input-search
-            placeholder="点击选择部门"
+          <a-input
+            placeholder="点击右侧按钮选择部门"
             v-model="checkedDepartNameString"
-            readOnly
+            disabled
             @search="onSearch">
-            <a-button slot="enterButton" icon="search">选择</a-button>
-          </a-input-search>
-        </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>
+            <span slot="addonAfter" icon="search" @click="onSearch" style="cursor: pointer;">选择</span>
+          </a-input>
         </a-form-item>
-        <!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
         <a-form-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <j-image-upload class="avatar-uploader" text="上传" v-model="fileList" ></j-image-upload>
+          <a-upload
+            listType="picture-card"
+            class="avatar-uploader"
+            :showUploadList="false"
+            :action="uploadAction"
+            :data="{'isup':1}"
+            :headers="headers"
+            :beforeUpload="beforeUpload"
+            @change="handleChange"
+          >
+            <img v-if="picUrl" :src="getAvatarView()" alt="头像" style="height:104px;max-width:300px"/>
+            <div v-else>
+              <a-icon :type="uploadLoading ? 'loading' : 'plus'"/>
+              <div class="ant-upload-text">上传</div>
+            </div>
+          </a-upload>
         </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)}]"
-            :getCalendarContainer="node => node.parentNode"/>
+            v-decorator="['birthday', {initialValue:!model.birthday?null:moment(model.birthday,dateFormat)}]"/>
         </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="请选择性别">
             <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-input placeholder="请输入邮箱" v-decorator="[ 'email', validatorRules.email]" />
-        </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="[ 'telephone', validatorRules.telephone]"/>
+        <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">
-          <j-dict-select-tag  v-decorator="['activitiSync', {}]" placeholder="请选择是否同步工作流引擎" :type="'radio'" :triggerChange="true" dictCode="activiti_sync"/>
+          <j-dict-select-tag v-decorator="['activitiSync', {}]" placeholder="请选择是否同步工作流引擎" :type="'radio'"
+                             :triggerChange="true" dictCode="activiti_sync"/>
         </a-form-item>
 
       </a-form>
@@ -151,318 +130,260 @@
   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 } from '@/api/api'
-  import { disabledAuthFilter } from "@/utils/authFilter"
-  import {duplicateCheck } from '@/api/api'
-  import JImageUpload from '../../../components/jeecg/JImageUpload'
+  import {ACCESS_TOKEN} from "@/store/mutation-types"
+  import {getAction} from '@/api/manage'
+  import {addUser, editUser, queryUserRole, queryall} from '@/api/api'
+  import {disabledAuthFilter} from "@/utils/authFilter"
+  import {duplicateCheck} from '@/api/api'
 
   export default {
-    name: "UserModal",
+    name: "RoleModal",
     components: {
-      JImageUpload,
       departWindow,
-      JSelectPosition
     },
-    data () {
+    data() {
       return {
         departDisabled: false, //是否是我的部门调用该页面
         roleDisabled: false, //是否是角色维护调用该页面
-        modalWidth:800,
-        drawerWidth:700,
-        modaltoggleFlag:true,
+        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:{
+        selectedDepartKeys: [], //保存用户选择部门id
+        checkedDepartKeys: [],
+        checkedDepartNames: [], // 保存部门的名称 =>title
+        checkedDepartNameString: "", // 保存部门的名称 =>title
+        userId: "", //保存用户id
+        disableSubmit: false,
+        userDepartModel: {userId: '', departIdList: []}, // 保存SysUserDepart的用户部门中间表数据需要的对象
+        dateFormat: "YYYY-MM-DD",
+        validatorRules: {
+          username: {
             rules: [{
               required: true, message: '请输入用户账号!'
-            },{
+            }, {
               validator: this.validateUsername,
             }]
           },
-          password:{
+          password: {
             rules: [{
               required: true,
-              pattern:/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
+              pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
               message: '密码由8位数字、大小写字母和特殊符号组成!'
             }, {
               validator: this.validateToNextPassword,
             }],
           },
-          confirmpassword:{
+          confirmpassword: {
             rules: [{
               required: true, message: '请重新输入登陆密码!',
             }, {
               validator: this.compareToFirstPassword,
             }],
           },
-          realname:{rules: [{ required: true, message: '请输入用户名称!' }]},
-          phone:{rules: [{validator: this.validatePhone}]},
-          email:{
+          realname: {rules: [{required: true, message: '请输入用户名称!'}]},
+          phone: {rules: [{validator: this.validatePhone}]},
+          email: {
             rules: [{
               required: true,
               validator: this.validateEmail
             }],
           },
-          roles:{},
+          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: '请输入正确的座机号码' },
-            ]
-          }
         },
-        departIdShow:false,
-        departIds:[], //负责部门id
-        title:"操作",
+        title: "操作",
         visible: false,
         model: {},
-        roleList:[],
-        selectedRole:[],
+        roleList: [],
+        selectedRole: "",
         labelCol: {
-          xs: { span: 24 },
-          sm: { span: 5 },
+          xs: {span: 24},
+          sm: {span: 5},
         },
         wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 },
+          xs: {span: 24},
+          sm: {span: 16},
         },
-        uploadLoading:false,
+        uploadLoading: false,
         confirmLoading: false,
-        headers:{},
-        form:this.$form.createForm(this),
+        headers: {},
+        form: this.$form.createForm(this),
         picUrl: "",
         url: {
-          fileUpload: window._CONFIG['domianURL']+"/sys/common/upload",
+          fileUpload: window._CONFIG['domianURL'] + "/sys/common/upload",
+          imgerver: window._CONFIG['domianURL'] + "/sys/common/view",
           userWithDepart: "/sys/user/userDepartList", // 引入为指定用户查看部门信息需要的url
-          userId:"/sys/user/generateUserId", // 引入生成添加用户情况下的url
-          syncUserByUserName:"/process/extActProcess/doSyncUserByUserName",//同步用户到工作流
+          userId: "/sys/user/generateUserId", // 引入生成添加用户情况下的url
+          syncUserByUserName: "/process/extActProcess/doSyncUserByUserName",//同步用户到工作流
         },
-        identity:"1",
-        fileList:[],
       }
     },
-    created () {
+    created() {
       const token = Vue.ls.get(ACCESS_TOKEN);
-      this.headers = {"X-Access-Token":token}
+      this.headers = {"X-Access-Token": token}
 
     },
-    computed:{
-      uploadAction:function () {
+    computed: {
+      uploadAction: function () {
         return this.url.fileUpload;
       }
     },
     methods: {
-      isDisabledAuth(code){
+      isDisabledAuth(code) {
         return disabledAuthFilter(code);
       },
       //窗口最大化切换
-      toggleScreen(){
-        if(this.modaltoggleFlag){
+      toggleScreen() {
+        if (this.modaltoggleFlag) {
           this.modalWidth = window.innerWidth;
-        }else{
+        } else {
           this.modalWidth = 800;
         }
         this.modaltoggleFlag = !this.modaltoggleFlag;
       },
-      initialRoleList(){
-        queryall().then((res)=>{
-          if(res.success){
+      initialRoleList() {
+        queryall().then((res) => {
+          if (res.success) {
             this.roleList = res.result;
-          }else{
+          } else {
             console.log(res.message);
           }
         });
       },
-      loadUserRoles(userid){
-        queryUserRole({userid:userid}).then((res)=>{
-          if(res.success){
-            this.selectedRole = res.result;
-          }else{
+      loadUserRoles(userid) {
+        queryUserRole({userid: userid}).then((res) => {
+          if (res.success) {
+              console.log( res.result)
+            this.selectedRole = res.result[0];
+          } else {
             console.log(res.message);
           }
         });
       },
-      refresh () {
-          this.selectedDepartKeys=[];
-          this.checkedDepartKeys=[];
-          this.checkedDepartNames=[];
-          this.checkedDepartNameString = "";
-          this.userId=""
-          this.resultDepartOptions=[];
-          this.departId=[];
-          this.departIdShow=false;
+      refresh() {
+        this.selectedDepartKeys = [];
+        this.checkedDepartKeys = [];
+        this.checkedDepartNames = [];
+        this.checkedDepartNameString = "";
+        this.userId = ""
       },
-      add () {
+      add() {
         this.picUrl = "";
         this.refresh();
-        this.edit({activitiSync:'1'});
+        this.edit({activitiSync: '1'});
       },
-      edit (record) {
+      edit(record) {
         this.resetScreenSize(); // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
         let that = this;
+        console.log(record)
         that.initialRoleList();
-        that.checkedDepartNameString = "";
+        // that.checkedDepartNameString = "";
         that.form.resetFields();
-        if(record.hasOwnProperty("id")){
+        if (record.hasOwnProperty("id")) {
           that.loadUserRoles(record.id);
-          setTimeout(() => {
-            this.fileList = record.avatar;
-          }, 5)
+          this.picUrl = "Has no pic url yet";
         }
         that.userId = record.id;
         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'))
+          that.form.setFieldsValue(pick(this.model, 'username', 'sex', 'realname', 'email', 'phone', 'activitiSync'))
         });
-        //身份为上级显示负责部门,否则不显示
-        if(this.model.userIdentity=="2"){
-            this.identity="2";
-            this.departIdShow=true;
-        }else{
-            this.identity="1";
-            this.departIdShow=false;
-        }
         // 调用查询用户对应的部门信息的方法
         that.checkedDepartKeys = [];
         that.loadCheckedDeparts();
       },
       //
-      loadCheckedDeparts(){
+      loadCheckedDeparts() {
         let that = this;
-        if(!that.userId){return}
-        getAction(that.url.userWithDepart,{userId:that.userId}).then((res)=>{
+        if (!that.userId) {
+          return
+        }
+        getAction(that.url.userWithDepart, {userId: that.userId}).then((res) => {
           that.checkedDepartNames = [];
-          if(res.success){
-            var depart=[];
-            var departId=[];
+          if (res.success) {
             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{
+          } else {
             console.log(res.message);
           }
         })
       },
-      close () {
+      close() {
         this.$emit('close');
         this.visible = false;
         this.disableSubmit = false;
-        this.selectedRole = [];
-        this.userDepartModel = {userId:'',departIdList:[]};
+        this.selectedRole = "";
+        this.userDepartModel = {userId: '', departIdList: []};
         this.checkedDepartNames = [];
-        this.checkedDepartNameString='';
+        this.checkedDepartNameString = '';
         this.checkedDepartKeys = [];
         this.selectedDepartKeys = [];
-        this.resultDepartOptions=[];
-        this.departIds=[];
-        this.departIdShow=false;
-        this.identity="1";
-        this.fileList=[];
       },
       moment,
-      handleSubmit () {
-
+      handleSubmit() {
         const that = this;
         // 触发表单验证
         this.form.validateFields((err, values) => {
           if (!err) {
             that.confirmLoading = true;
-            if(!values.birthday){
+            let avatar = that.model.avatar;
+            if (!values.birthday) {
               values.birthday = '';
-            }else{
+            } else {
               values.birthday = values.birthday.format(this.dateFormat);
             }
             let formData = Object.assign(this.model, values);
-            if(that.fileList != ''){
-              formData.avatar = that.fileList;
-            }else{
-              formData.avatar = null;
-            }
-            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,否则为空
-            if(this.identity==="2"){
-              formData.departIds=this.departIds.join(",");
-            }else{
-              formData.departIds="";
-            }
+            formData.avatar = avatar;
+            formData.selectedroles = this.selectedRole ? this.selectedRole : '';
+            formData.selecteddeparts = this.userDepartModel.departIdList.length > 0 ? this.userDepartModel.departIdList.join(",") : '';
             // that.addDepartsToUser(that,formData); // 调用根据当前用户添加部门信息的方法
             let obj;
-            if(!this.model.id){
+            if (!this.model.id) {
               formData.id = this.userId;
-              obj=addUser(formData);
-            }else{
-              obj=editUser(formData);
+              obj = addUser(formData);
+            } else {
+              obj = editUser(formData);
             }
-            obj.then((res)=>{
-              if(res.success){
+            console.log(formData)
+            obj.then((res) => {
+              if (res.success) {
                 that.$message.success(res.message);
                 that.$emit('ok');
-              }else{
+                that.close();
+              } else {
                 that.$message.warning(res.message);
               }
             }).finally(() => {
               that.confirmLoading = false;
               that.checkedDepartNames = [];
-              that.userDepartModel.departIdList = {userId:'',departIdList:[]};
+              that.userDepartModel.departIdList = {userId: '', departIdList: []};
               that.close();
             })
 
           }
         })
       },
-      handleCancel () {
+      handleCancel() {
         this.close()
       },
-      validateToNextPassword  (rule, value, callback) {
+      validateToNextPassword(rule, value, callback) {
         const form = this.form;
-        const confirmpassword=form.getFieldValue('confirmpassword');
-
+        const confirmpassword = form.getFieldValue('confirmpassword');
         if (value && confirmpassword && value !== confirmpassword) {
           callback('两次输入的密码不一样!');
         }
         if (value && this.confirmDirty) {
-          form.validateFields(['confirm'], { force: true })
+          form.validateFields(['confirm'], {force: true})
         }
         callback();
       },
-      compareToFirstPassword  (rule, value, callback) {
+      compareToFirstPassword(rule, value, callback) {
         const form = this.form;
         if (value && value !== form.getFieldValue('password')) {
           callback('两次输入的密码不一样!');
@@ -470,14 +391,11 @@
           callback()
         }
       },
-      validatePhone(rule, value, callback){
-        if(!value){
+      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号码段--------------------
-
+        } else {
+          if (new RegExp(/^1[3|4|5|7|8][0-9]\d{8}$/).test(value)) {
             var params = {
               tableName: 'sys_user',
               fieldName: 'phone',
@@ -491,16 +409,16 @@
                 callback("手机号已存在!")
               }
             })
-          }else{
+          } else {
             callback("请输入正确格式的手机号码!");
           }
         }
       },
-      validateEmail(rule, value, callback){
-        if(!value){
+      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)){
+        } else {
+          if (new RegExp(/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/).test(value)) {
             var params = {
               tableName: 'sys_user',
               fieldName: 'email',
@@ -515,12 +433,12 @@
                 callback("邮箱已存在!")
               }
             })
-          }else{
+          } else {
             callback("请输入正确格式的邮箱!")
           }
         }
       },
-      validateUsername(rule, value, callback){
+      validateUsername(rule, value, callback) {
         var params = {
           tableName: 'sys_user',
           fieldName: 'username',
@@ -529,48 +447,33 @@
         };
         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("工号已存在!")
+            callback("用户名已存在!")
           }
         })
       },
-      handleConfirmBlur  (e) {
+      handleConfirmBlur(e) {
         const value = e.target.value;
         this.confirmDirty = this.confirmDirty || !!value
       },
 
-      normFile  (e) {
+      normFile(e) {
         console.log('Upload event:', e);
         if (Array.isArray(e)) {
           return e
         }
         return e && e.fileList
       },
-      beforeUpload: function(file){
+      beforeUpload: function (file) {
         var fileType = file.type;
-        if(fileType.indexOf('image')<0){
+        if (fileType.indexOf('image') < 0) {
           this.$message.warning('请上传图片');
           return false;
         }
         //TODO 验证文件大小
       },
-      handleChange (info) {
+      handleChange(info) {
         this.picUrl = "";
         if (info.file.status === 'uploading') {
           this.uploadLoading = true;
@@ -580,69 +483,57 @@
           var response = info.file.response;
           this.uploadLoading = false;
           console.log(response);
-          if(response.success){
+          if (response.success) {
             this.model.avatar = response.message;
             this.picUrl = "Has no pic url yet";
-          }else{
+          } else {
             this.$message.warning(response.message);
           }
         }
       },
+      getAvatarView() {
+        return this.url.imgerver + "/" + this.model.avatar;
+      },
       // 搜索用户对应的部门API
-      onSearch(){
-        this.$refs.departWindow.add(this.checkedDepartKeys,this.userId);
+      onSearch(value) {
+        this.$refs.departWindow.add(this.checkedDepartKeys, this.userId);
       },
 
       // 获取用户对应部门弹出框提交给返回的数据
-      modalFormOk (formData) {
+      modalFormOk(formData) {
+          console.log(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(){
+      resetScreenSize() {
         let screenWidth = document.body.clientWidth;
-        if(screenWidth < 500){
+        if (screenWidth < 500) {
           this.drawerWidth = screenWidth;
-        }else{
+        } 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;
+    width: 104px;
+    height: 104px;
   }
+
   .ant-upload-select-picture-card i {
     font-size: 49px;
     color: #999;
@@ -653,9 +544,9 @@
     color: #666;
   }
 
-  .ant-table-tbody .ant-table-row td{
-    padding-top:10px;
-    padding-bottom:10px;
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 10px;
+    padding-bottom: 10px;
   }
 
   .drawer-bootom-button {