朱鑫波 4 år sedan
förälder
incheckning
2ee05a71e6

+ 31 - 1
src/views/system/DepartList.vue

@@ -91,6 +91,20 @@
                   placeholder="无">
                 </a-tree-select>
               </a-form-item>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="汇报上级">
+                <a-select
+                  showSearch
+                  :filterOption="filterOption"
+                  style="width: 100%"
+                  placeholder="请选择汇报上级"
+                   v-decorator="['leader', { rules: [{ required: true, message: '汇报上级必选' }] }]"
+                  labelInValue
+                >
+                  <a-select-option v-for="(people, peopleindex) in peopleList" :key="peopleindex" :value="people.key">
+                    {{ people.label }}
+                  </a-select-option>
+                </a-select>
+              </a-form-item>
               <a-form-item
                 :labelCol="labelCol"
                 :wrapperCol="wrapperCol"
@@ -219,6 +233,7 @@
     },
     data() {
       return {
+        peopleList: [],
         iExpandedKeys: [],
         loading: false,
         autoExpandParent: true,
@@ -279,6 +294,15 @@
       }
     },
     methods: {
+      getAllPeople() {
+        this.getAction('/sys/user/getAllUser',{status:1}).then((res) => {
+          if (res.success) {
+            this.peopleList = res.result.map((item) => {
+              return { key: item.userId, label: item.realName }
+            })
+          }
+        })
+      },
       loadData() {
         this.refresh();
       },
@@ -431,9 +455,14 @@
         }else{
           this.orgCategoryDisabled = false;
         }
+        if(record.leaderId){
+          record.leader = {key:record.leaderId,label:record.leaderName}
+        }else{
+          record.leader = {}
+        }
         this.$nextTick(() => {
           this.form.getFieldDecorator('fax', {initialValue: ''})
-          this.form.setFieldsValue(pick(record, 'departName','orgCategory', 'orgCode', 'departOrder', 'mobile', 'fax', 'address', 'memo'))
+          this.form.setFieldsValue(pick(record, 'departName','orgCategory', 'orgCode', 'departOrder', 'mobile', 'fax', 'address', 'memo','leader'))
         })
       },
       getCurrSelectedTitle() {
@@ -589,6 +618,7 @@
     created() {
       this.currFlowId = this.$route.params.id
       this.currFlowName = this.$route.params.name
+      this.getAllPeople()
       // this.loadTree()
     },
 

+ 206 - 196
src/views/system/UserList.vue

@@ -1,18 +1,15 @@
 <template>
   <a-card :bordered="false">
-
     <!-- 查询区域 -->
     <div class="table-page-search-wrapper">
       <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>
             </a-form-item>
           </a-col>
 
-
           <a-col :md="6" :sm="12">
             <a-form-item label="姓名">
               <a-input placeholder="请输入姓名查询" v-model="queryParam.realname"></a-input>
@@ -28,37 +25,34 @@
             </a-form-item>
           </a-col>
 
+          <a-col :md="6" :sm="8">
+            <a-form-item label="邮箱">
+              <a-input placeholder="请输入邮箱查询" v-model="queryParam.email"></a-input>
+            </a-form-item>
+          </a-col>
 
+          <a-col :md="6" :sm="8">
+            <a-form-item label="手机号码">
+              <a-input placeholder="请输入手机号码查询" v-model="queryParam.phone"></a-input>
+            </a-form-item>
+          </a-col>
 
-            <a-col :md="6" :sm="8">
-              <a-form-item label="邮箱">
-                <a-input placeholder="请输入邮箱查询" v-model="queryParam.email"></a-input>
-              </a-form-item>
-            </a-col>
-
-            <a-col :md="6" :sm="8">
-              <a-form-item label="手机号码">
-                <a-input placeholder="请输入手机号码查询" v-model="queryParam.phone"></a-input>
-              </a-form-item>
-            </a-col>
-
-            <a-col :md="6" :sm="8">
-              <a-form-item label="状态">
-                <a-select v-model="queryParam.status" placeholder="请选择用户状态查询">
-                  <a-select-option value="">请选择用户状态</a-select-option>
-                  <a-select-option value="1">正常</a-select-option>
-                  <a-select-option value="2">解冻</a-select-option>
-                </a-select>
-              </a-form-item>
-            </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="状态">
+              <a-select v-model="queryParam.status" placeholder="请选择用户状态查询">
+                <a-select-option value="">请选择用户状态</a-select-option>
+                <a-select-option value="1">正常</a-select-option>
+                <a-select-option value="2">解冻</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
 
           <a-col :md="6" :sm="8">
-            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+            <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>
             </span>
           </a-col>
-
         </a-row>
       </a-form>
     </div>
@@ -70,7 +64,6 @@
 
     <!-- table区域-begin -->
     <div>
-
       <a-table
         ref="table"
         bordered
@@ -80,22 +73,25 @@
         :dataSource="dataSource"
         :pagination="ipagination"
         :loading="loading"
-        @change="handleTableChange">
-
+        @change="handleTableChange"
+      >
         <template slot="avatarslot" slot-scope="text, record">
           <div class="anty-img-wrap">
-            <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
+            <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user" />
           </div>
         </template>
+        <template slot="leaderName" slot-scope="text, record">
+          <span>
+            {{ text ? text : '-' }}
+          </span>
+        </template>
 
         <span slot="action" slot-scope="text, record">
           <a @click="handleEdit(record)">编辑</a>
-          <a-divider type="vertical"/>
+          <a-divider type="vertical" />
 
           <a-dropdown>
-            <a class="ant-dropdown-link">
-              更多 <a-icon type="down"/>
-            </a>
+            <a class="ant-dropdown-link"> 更多 <a-icon type="down" /> </a>
             <a-menu slot="overlay">
               <a-menu-item>
                 <a href="javascript:;" @click="handleDetail(record)">详情</a>
@@ -111,14 +107,14 @@
                 </a-popconfirm>
               </a-menu-item>
 
-              <a-menu-item v-if="record.status==1">
-                <a-popconfirm title="确定冻结吗?" @confirm="() => handleFrozen(record.id,2)">
+              <a-menu-item v-if="record.status == 1">
+                <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)">
+              <a-menu-item v-if="record.status == 2">
+                <a-popconfirm title="确定解冻吗?" @confirm="() => handleFrozen(record.id, 1)">
                   <a>解冻</a>
                 </a-popconfirm>
               </a-menu-item>
@@ -126,12 +122,9 @@
               <a-menu-item>
                 <a href="javascript:;" @click="handleAgentSettings(record.username)">代理人</a>
               </a-menu-item>
-
             </a-menu>
           </a-dropdown>
         </span>
-
-
       </a-table>
     </div>
     <!-- table区域-end -->
@@ -145,27 +138,27 @@
 </template>
 
 <script>
-  import UserModal from './modules/UserModal'
-  import PasswordModal from './modules/PasswordModal'
-  import {putAction} from '@/api/manage';
-  import {frozenBatch} from '@/api/api'
-  import {JeecgListMixin} from '@/mixins/JeecgListMixin'
-  import SysUserAgentModal from "./modules/SysUserAgentModal";
-
-  export default {
-    name: "UserList",
-    mixins: [JeecgListMixin],
-    components: {
-      SysUserAgentModal,
-      UserModal,
-      PasswordModal
-    },
-    data() {
-      return {
-        description: '这是用户管理页面',
-        queryParam: {},
-        columns: [
-          /*{
+import UserModal from './modules/UserModal'
+import PasswordModal from './modules/PasswordModal'
+import { putAction } from '@/api/manage'
+import { frozenBatch } from '@/api/api'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import SysUserAgentModal from './modules/SysUserAgentModal'
+
+export default {
+  name: 'UserList',
+  mixins: [JeecgListMixin],
+  components: {
+    SysUserAgentModal,
+    UserModal,
+    PasswordModal,
+  },
+  data() {
+    return {
+      description: '这是用户管理页面',
+      queryParam: {},
+      columns: [
+        /*{
             title: '#',
             dataIndex: '',
             key:'rowIndex',
@@ -175,154 +168,171 @@
               return parseInt(index)+1;
             }
           },*/
-          {
-            title: '用户账号',
-            align: "center",
-            dataIndex: 'username',
-            width: 120
-          },
-          {
-            title: '真实姓名',
-            align: "center",
-            width: 100,
-            dataIndex: 'realname',
-          },
-          {
-            title: '头像',
-            align: "center",
-            width: 120,
-            dataIndex: 'avatar',
-            scopedSlots: {customRender: "avatarslot"}
-          },
+        {
+          title: '用户账号',
+          align: 'center',
+          dataIndex: 'username',
+          width: 120,
+        },
+        {
+          title: '真实姓名',
+          align: 'center',
+          width: 100,
+          dataIndex: 'realname',
+        },
+        {
+          title: '头像',
+          align: 'center',
+          width: 120,
+          dataIndex: 'avatar',
+          scopedSlots: { customRender: 'avatarslot' },
+        },
 
-          {
-            title: '性别',
-            align: "center",
-            width: 80,
-            dataIndex: 'sex_dictText',
-            sorter: true
-          },
-          {
-            title: '生日',
-            align: "center",
-            width: 180,
-            dataIndex: 'birthday'
-          },
-          {
-            title: '手机号码',
-            align: "center",
-            width: 100,
-            dataIndex: 'phone'
-          },
-          {
-            title: '邮箱',
-            align: "center",
-            dataIndex: 'email'
-          },
-          {
-            title: '状态',
-            align: "center",
-            width: 80,
-            dataIndex: 'status_dictText'
-          },
-          /* {
+        {
+          title: '性别',
+          align: 'center',
+          width: 80,
+          dataIndex: 'sex_dictText',
+          sorter: true,
+        },
+        // {
+        //   title: '生日',
+        //   align: 'center',
+        //   width: 180,
+        //   dataIndex: 'birthday',
+        // },
+        {
+          title: '手机号码',
+          align: 'center',
+          width: 100,
+          dataIndex: 'phone',
+        },
+        {
+          title: '邮箱',
+          align: 'center',
+          dataIndex: 'email',
+        },
+        {
+          title: '汇报上级',
+          align: 'center',
+          dataIndex: 'leaderName',
+          scopedSlots: { customRender: 'leaderName' },
+        },
+        {
+          title: '所属部门',
+          align: 'center',
+          dataIndex: 'departName',
+          scopedSlots: { customRender: 'departName' },
+        },
+        {
+          title: '用户角色',
+          align: 'center',
+          dataIndex: 'roleName',
+          scopedSlots: { customRender: 'roleName' },
+        },
+
+        {
+          title: '状态',
+          align: 'center',
+          width: 80,
+          dataIndex: 'status_dictText',
+        },
+        /* {
              title: '创建时间',
              align: "center",
              width: 150,
              dataIndex: 'createTime',
              sorter: true
            },*/
-          {
-            title: '操作',
-            dataIndex: 'action',
-            scopedSlots: {customRender: 'action'},
-            align: "center",
-            width: 170
-          }
-
-        ],
-        url: {
-          imgerver: window._CONFIG['domianURL'] + "/sys/common/view",
-          syncUser: "/process/extActProcess/doSyncUser",
-          list: "/sys/user/list",
-          delete: "/sys/user/delete",
-          deleteBatch: "/sys/user/deleteBatch",
-          exportXlsUrl: "/sys/user/exportXls",
-          importExcelUrl: "sys/user/importExcel",
+        {
+          title: '操作',
+          dataIndex: 'action',
+          scopedSlots: { customRender: 'action' },
+          align: 'center',
+          width: 170,
         },
+      ],
+      url: {
+        imgerver: window._CONFIG['domianURL'] + '/sys/common/view',
+        syncUser: '/process/extActProcess/doSyncUser',
+        list: '/sys/user/list',
+        delete: '/sys/user/delete',
+        deleteBatch: '/sys/user/deleteBatch',
+        exportXlsUrl: '/sys/user/exportXls',
+        importExcelUrl: 'sys/user/importExcel',
+      },
+    }
+  },
+  computed: {
+    importExcelUrl: function () {
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+    },
+  },
+  methods: {
+    getAvatarView: function (avatar) {
+      return this.url.imgerver + '/' + avatar
+    },
+
+    batchFrozen: function (status) {
+      if (this.selectedRowKeys.length <= 0) {
+        this.$message.warning('请选择一条记录!')
+        return false
+      } else {
+        let ids = ''
+        let that = this
+        that.selectedRowKeys.forEach(function (val) {
+          ids += val + ','
+        })
+        that.$confirm({
+          title: '确认操作',
+          content: '是否' + (status == 1 ? '解冻' : '冻结') + '选中账号?',
+          onOk: function () {
+            frozenBatch({ ids: ids, status: status }).then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.loadData()
+                that.onClearSelected()
+              } else {
+                that.$message.warning(res.message)
+              }
+            })
+          },
+        })
       }
     },
-    computed: {
-      importExcelUrl: function () {
-        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    handleMenuClick(e) {
+      if (e.key == 1) {
+        this.batchDel()
+      } else if (e.key == 2) {
+        this.batchFrozen(2)
+      } else if (e.key == 3) {
+        this.batchFrozen(1)
       }
     },
-    methods: {
-      getAvatarView: function (avatar) {
-        return this.url.imgerver + "/" + avatar;
-      },
-
-      batchFrozen: function (status) {
-        if (this.selectedRowKeys.length <= 0) {
-          this.$message.warning('请选择一条记录!');
-          return false;
+    handleFrozen: function (id, status) {
+      let that = this
+      frozenBatch({ ids: id, status: status }).then((res) => {
+        if (res.success) {
+          that.$message.success(res.message)
+          that.loadData()
         } else {
-          let ids = "";
-          let that = this;
-          that.selectedRowKeys.forEach(function (val) {
-            ids += val + ",";
-          });
-          that.$confirm({
-            title: "确认操作",
-            content: "是否" + (status == 1 ? "解冻" : "冻结") + "选中账号?",
-            onOk: function () {
-              frozenBatch({ids: ids, status: status}).then((res) => {
-                if (res.success) {
-                  that.$message.success(res.message);
-                  that.loadData();
-                  that.onClearSelected();
-                } else {
-                  that.$message.warning(res.message);
-                }
-              });
-            }
-          });
-        }
-      },
-      handleMenuClick(e) {
-        if (e.key == 1) {
-          this.batchDel();
-        } else if (e.key == 2) {
-          this.batchFrozen(2);
-        } else if (e.key == 3) {
-          this.batchFrozen(1);
+          that.$message.warning(res.message)
         }
-      },
-      handleFrozen: function (id, status) {
-        let that = this;
-        frozenBatch({ids: id, status: status}).then((res) => {
-          if (res.success) {
-            that.$message.success(res.message);
-            that.loadData();
-          } else {
-            that.$message.warning(res.message);
-          }
-        });
-      },
-      handleChangePassword(username) {
-        this.$refs.passwordmodal.show(username);
-      },
-      handleAgentSettings(username) {
-        this.$refs.sysUserAgentModal.agentSettings(username);
-        this.$refs.sysUserAgentModal.title = "用户代理人设置";
-      },
-      passwordModalOk() {
-        //TODO 密码修改完成 不需要刷新页面,可以把datasource中的数据更新一下
-      }
-    }
-
-  }
+      })
+    },
+    handleChangePassword(username) {
+      this.$refs.passwordmodal.show(username)
+    },
+    handleAgentSettings(username) {
+      this.$refs.sysUserAgentModal.agentSettings(username)
+      this.$refs.sysUserAgentModal.title = '用户代理人设置'
+    },
+    passwordModalOk() {
+      //TODO 密码修改完成 不需要刷新页面,可以把datasource中的数据更新一下
+    },
+  },
+}
 </script>
 <style scoped>
-  @import '~@assets/less/common.less'
+@import '~@assets/less/common.less';
 </style>

+ 205 - 181
src/views/system/modules/DepartModal.vue

@@ -2,222 +2,246 @@
   <a-modal
     :title="title"
     :width="800"
-    :ok=false
+    :ok="false"
     :visible="visible"
     :confirmLoading="confirmLoading"
-    :okButtonProps="{ props: {disabled: disableSubmit} }"
+    :okButtonProps="{ props: { disabled: disableSubmit } }"
     @ok="handleOk"
     @cancel="handleCancel"
-    cancelText="关闭">
-
+    cancelText="关闭"
+  >
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="机构名称"
-          :hidden="false"
-          hasFeedback >
-          <a-input id="departName" placeholder="请输入机构/部门名称" v-decorator="['departName', validatorRules.departName ]"/>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="机构名称" :hidden="false" hasFeedback>
+          <a-input
+            id="departName"
+            placeholder="请输入机构/部门名称"
+            v-decorator="['departName', validatorRules.departName]"
+          />
         </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :hidden="seen" label="上级部门" hasFeedback>
-        <a-tree-select
-          style="width:100%"
-          :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
-          :treeData="departTree"
-          v-model="model.parentId"
-          placeholder="请选择上级部门"
-          :disabled="condition">
-        </a-tree-select>
+          <a-tree-select
+            style="width: 100%"
+            :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
+            :treeData="departTree"
+            v-model="model.parentId"
+            placeholder="请选择上级部门"
+            :disabled="condition"
+          >
+          </a-tree-select>
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="汇报上级">
+          <a-select
+            showSearch
+            :filterOption="filterOption"
+            style="width: 100%"
+            placeholder="请选择汇报上级"
+            v-decorator="['leader', { rules: [{ required: true, message: '汇报上级必选' }] }]"
+            labelInValue
+          >
+            <a-select-option v-for="(people, peopleindex) in peopleList" :key="peopleindex" :value="people.key">
+              {{ people.label }}
+            </a-select-option>
+          </a-select>
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="机构类型">
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="机构类型">
           <template v-if="seen">
-          <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">
-            <a-radio value="1">
-              公司
-            </a-radio>
-          </a-radio-group>
+            <a-radio-group v-decorator="['orgCategory', validatorRules.orgCategory]" placeholder="请选择机构类型">
+              <a-radio value="1"> 公司 </a-radio>
+            </a-radio-group>
           </template>
           <template v-else>
-            <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">
-              <a-radio value="2">
-                部门
-              </a-radio>
-              <a-radio value="3">
-                岗位
-              </a-radio>
+            <a-radio-group v-decorator="['orgCategory', validatorRules.orgCategory]" placeholder="请选择机构类型">
+              <a-radio value="2"> 部门 </a-radio>
+              <a-radio value="3"> 岗位 </a-radio>
             </a-radio-group>
           </template>
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="电话">
-          <a-input placeholder="请输入电话" v-decorator="['mobile',validatorRules.mobile]" />
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="电话">
+          <a-input placeholder="请输入电话" v-decorator="['mobile', validatorRules.mobile]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="传真">
-          <a-input placeholder="请输入传真" v-decorator="['fax', {}]"  />
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="传真">
+          <a-input placeholder="请输入传真" v-decorator="['fax', {}]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="地址">
-          <a-input placeholder="请输入地址" v-decorator="['address', {}]"  />
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="地址">
+          <a-input placeholder="请输入地址" v-decorator="['address', {}]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="排序">
-          <a-input-number v-decorator="[ 'departOrder',{'initialValue':0}]" />
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="排序">
+          <a-input-number v-decorator="['departOrder', { initialValue: 0 }]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="备注">
-          <a-textarea placeholder="请输入备注" v-decorator="['memo', {}]"  />
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="备注">
+          <a-textarea placeholder="请输入备注" v-decorator="['memo', {}]" />
         </a-form-item>
-
       </a-form>
     </a-spin>
   </a-modal>
 </template>
 
 <script>
-  import { httpAction } from '@/api/manage'
-  import { queryIdTree } from '@/api/api'
-  import pick from 'lodash.pick'
-  import ATextarea from 'ant-design-vue/es/input/TextArea'
-  export default {
-    name: "SysDepartModal",
-    components: { ATextarea },
-    data () {
-      return {
-        departTree:[],
-        orgTypeData:[],
-        phoneWarning:'',
-        departName:"",
-        title:"操作",
-        seen:false,
-        visible: false,
-        condition:true,
-        disableSubmit:false,
-        model: {},
-        menuhidden:false,
-        menuusing:true,
-        labelCol: {
-          xs: { span: 24 },
-          sm: { span: 5 },
-        },
-        wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 },
-        },
-
-        confirmLoading: false,
-        form: this.$form.createForm(this),
-        validatorRules:{
-        departName:{rules: [{ required: true, message: '请输入机构/部门名称!' }]},
-        orgCode:{rules: [{ required: true, message: '请输入机构编码!' }]},
-         mobile:{rules: [{validator:this.validateMobile}]}
-        },
-        url: {
-          add: "/sys/sysDepart/add",
-        },
-        dictDisabled:true,
-      }
-    },
-    created () {
-    },
-    methods: {
-      loadTreeData(){
-        var that = this;
-        queryIdTree().then((res)=>{
-          if(res.success){
-            that.departTree = [];
-            for (let i = 0; i < res.result.length; i++) {
-              let temp = res.result[i];
-              that.departTree.push(temp);
-            }
-          }
-
-        })
+import { httpAction } from '@/api/manage'
+import { queryIdTree } from '@/api/api'
+import pick from 'lodash.pick'
+import ATextarea from 'ant-design-vue/es/input/TextArea'
+export default {
+  name: 'SysDepartModal',
+  components: { ATextarea },
+  data() {
+    return {
+      peopleList: [],
+      departTree: [],
+      orgTypeData: [],
+      phoneWarning: '',
+      departName: '',
+      title: '操作',
+      seen: false,
+      visible: false,
+      condition: true,
+      disableSubmit: false,
+      model: {},
+      menuhidden: false,
+      menuusing: true,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 },
       },
-      add (depart) {
-        if(depart){
-          this.seen = false;
-          this.dictDisabled = false;
-        }else{
-          this.seen = true;
-          this.dictDisabled = true;
-        }
-        this.edit(depart);
-      },
-      edit (record) {
-          this.form.resetFields();
-          this.model = Object.assign({}, {});
-          this.visible = true;
-          this.loadTreeData();
-          this.model.parentId = record!=null?record.toString():null;
-          if(this.seen){
-            this.model.orgCategory = '1';
-          }else{
-            this.model.orgCategory = '2';
-          }
-          this.$nextTick(() => {
-            this.form.setFieldsValue(pick(this.model,'orgCategory','departName','departNameEn','departNameAbbr','departOrder','description','orgType','orgCode','mobile','fax','address','memo','status','delFlag'))
-          });
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 },
       },
-      close () {
-        this.$emit('close');
-        this.disableSubmit = false;
-        this.visible = false;
-      },
-      handleOk () {
-        const that = this;
-        // 触发表单验证
-        this.form.validateFields((err, values) => {
-          if (!err) {
-            that.confirmLoading = true;
-            let formData = Object.assign(this.model, values);
-            //时间格式化
-            console.log(formData)
-            httpAction(this.url.add,formData,"post").then((res)=>{
-              if(res.success){
-                that.$message.success(res.message);
-                that.loadTreeData();
-                that.$emit('ok');
-              }else{
-                that.$message.warning(res.message);
-              }
-            }).finally(() => {
-              that.confirmLoading = false;
-              that.close();
-            })
 
-          }
-        })
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      validatorRules: {
+        departName: { rules: [{ required: true, message: '请输入机构/部门名称!' }] },
+        orgCode: { rules: [{ required: true, message: '请输入机构编码!' }] },
+        mobile: { rules: [{ validator: this.validateMobile }] },
       },
-      handleCancel () {
-        this.close()
+      url: {
+        add: '/sys/sysDepart/add',
       },
-      validateMobile(rule,value,callback){
-        if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)){
-          callback();
-        }else{
-          callback("您的手机号码格式不正确!");
+      dictDisabled: true,
+    }
+  },
+  created() {},
+  methods: {
+    getAllPeople() {
+      this.getAction('/sys/user/getAllUser',{status:1}).then((res) => {
+        if (res.success) {
+          this.peopleList = res.result.map((item) => {
+            return { key: item.userId, label: item.realName }
+          })
         }
+      })
+    },
+    loadTreeData() {
+      var that = this
+      queryIdTree().then((res) => {
+        if (res.success) {
+          that.departTree = []
+          for (let i = 0; i < res.result.length; i++) {
+            let temp = res.result[i]
+            that.departTree.push(temp)
+          }
+        }
+      })
+    },
+    add(depart) {
+      if (depart) {
+        this.seen = false
+        this.dictDisabled = false
+      } else {
+        this.seen = true
+        this.dictDisabled = true
+      }
+      this.edit(depart)
+    },
+    edit(record) {
+      this.form.resetFields()
+      this.model = Object.assign({}, {})
+      this.visible = true
+      this.loadTreeData()
+      this.getAllPeople()
+      this.model.parentId = record != null ? record.toString() : null
+      if (this.seen) {
+        this.model.orgCategory = '1'
+      } else {
+        this.model.orgCategory = '2'
+      }
 
+      if(record.leaderId){
+        this.model.leader = {key:record.leaderId,label:record.leaderName}
+      }else{
+        this.model.leader = {}
       }
-    }
-  }
+      this.$nextTick(() => {
+        this.form.setFieldsValue(
+          pick(
+            this.model,
+            'orgCategory',
+            'departName',
+            'departNameEn',
+            'departNameAbbr',
+            'departOrder',
+            'description',
+            'orgType',
+            'orgCode',
+            'mobile',
+            'fax',
+            'address',
+            'memo',
+            'status',
+            'delFlag',
+            'leader'
+          )
+        )
+      })
+    },
+    close() {
+      this.$emit('close')
+      this.disableSubmit = false
+      this.visible = false
+    },
+    handleOk() {
+      const that = this
+      // 触发表单验证
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true
+          let formData = Object.assign(this.model, values)
+          formData.leaderId = values.leader.key
+          formData.leaderName = values.leader.label
+          //时间格式化
+          console.log(formData)
+          httpAction(this.url.add, formData, 'post')
+            .then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.loadTreeData()
+                that.$emit('ok')
+              } else {
+                that.$message.warning(res.message)
+              }
+            })
+            .finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+    validateMobile(rule, value, callback) {
+      if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)) {
+        callback()
+      } else {
+        callback('您的手机号码格式不正确!')
+      }
+    },
+  },
+}
 </script>
 
 <style scoped>
-
 </style>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 486 - 434
src/views/system/modules/UserModal.vue


+ 3 - 3
vue.config.js

@@ -68,7 +68,7 @@ module.exports = {
     open : true,
     proxy: {
       '/jeecg-boot': {
-          // target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
+        //  target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.1.188:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
@@ -79,13 +79,13 @@ module.exports = {
         // target: 'http://192.168.1.219:8080', //请求本地 需要jeecg-boot后台项目  赵西安
         // target: 'http://192.168.1.193:8080', //请求本地 需要jeecg-boot后台项目  李煜一
         // target: 'http://192.168.1.193:31012', //请求本地 需要jeecg-boot后台项目  李煜一
-         target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
+      //   target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'https://trac.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目
         // target: 'http://39.106.184.70:8088/', //请求本地 需要jeecg-boot后台项目
         //  target: 'http://adsp.tjyourong.com.cn/', //请求本地 需要jeecg-boot后台项目
         // target: 'http://192.168.1.251/', //请求本地 需要jeecg-boot后台项目
         // target:'http://118.24.244.213:8804',
-      //  target:'http://139.186.151.174:8804', //测试
+       target:'http://139.186.151.174:8804', //测试
 
         ws: false,