1
0
suochencheng 7 лет назад
Родитель
Сommit
3d545568dd

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/dao/DepartInfoMapper.java

@@ -47,5 +47,7 @@ public interface DepartInfoMapper {
     String getUserDepartId(Integer id);
 
     List<UserInfo> getDepartUsers(Integer departId);
+
+    List<DepartInfo> getChildDepartsByUserId(Integer userId);
 }
 

+ 43 - 0
src/main/java/com/izouma/awesomeadmin/dao/DepartInfoMapper.xml

@@ -390,5 +390,48 @@
     <select id="getDepartUsers" resultType="com.izouma.awesomeadmin.model.UserInfo">
 		select * from sys_user where id in (select user_id from sys_user_depart where depart_id = #{departId}) and del_flag = 'N'
 	</select>
+    <select id="getChildDepartsByUserId" resultType="com.izouma.awesomeadmin.model.DepartInfo">
+		SELECT
+	      *
+        FROM
+            sys_depart
+        WHERE
+            sys_depart.del_flag = 'N'
+        AND (
+            FIND_IN_SET(
+                sys_depart.id,
+                (
+                    SELECT
+                        sys_user.mis_child
+                    FROM
+                        sys_user
+                    WHERE
+                        sys_user.del_flag = 'N'
+                    AND sys_user.id =  #{userId}
+                )
+            )
+            OR FIND_IN_SET(
+                sys_depart.id,
+                (
+                    SELECT
+                        child_depart.mis_child
+                    FROM
+                        sys_depart child_depart
+                    WHERE
+                        child_depart.id = (
+                            SELECT
+                                depart_id
+                            FROM
+                                sys_user_depart
+                            WHERE
+                                sys_user_depart.user_id =  #{userId}
+                            ORDER BY
+                                id DESC
+                            LIMIT 1
+                        )
+                )
+            )
+        )
+	</select>
 </mapper>
 

+ 11 - 1
src/main/java/com/izouma/awesomeadmin/dao/UserInfoMapper.xml

@@ -21,6 +21,7 @@
         <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
         <result column="work_number" property="workNumber" jdbcType="VARCHAR"/>
         <result column="config" property="config" jdbcType="VARCHAR"/>
+        <result column="mis_child" property="misChild" jdbcType="VARCHAR"/>
         <association property="departId" javaType="string" column="id"
                      select="com.izouma.awesomeadmin.dao.DepartInfoMapper.getUserDepartId"/>
         <association property="roleId" javaType="string" column="id"
@@ -28,7 +29,7 @@
     </resultMap>
     <sql id="Base_Column_List">
         id, username, nickname, icon, birthday, sex, open_id, union_id, phone, mail,
-        country, province, city, district, create_time, del_flag, work_number, config
+        country, province, city, district, create_time, del_flag, work_number, config, mis_child
     </sql>
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
         select
@@ -105,6 +106,9 @@
             <if test="config != null">
                 config,
             </if>
+            <if test="misChild != null">
+                mis_child,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
@@ -167,6 +171,9 @@
             <if test="config != null">
                 #{config,jdbcType=VARCHAR},
             </if>
+            <if test="misChild != null">
+                #{misChild,jdbcType=VARCHAR},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.UserInfo">
@@ -229,6 +236,9 @@
             <if test="config != null">
                 config = #{config,jdbcType=VARCHAR},
             </if>
+            <if test="misChild != null">
+                mis_child = #{misChild,jdbcType=VARCHAR},
+            </if>
         </set>
         where id = #{id,jdbcType=INTEGER}
     </update>

+ 10 - 0
src/main/java/com/izouma/awesomeadmin/model/UserInfo.java

@@ -57,6 +57,8 @@ public class UserInfo {
 
     private String config;
 
+    private String misChild;
+
     public String getToken() {
         return token;
     }
@@ -232,5 +234,13 @@ public class UserInfo {
     public void setConfig(String config) {
         this.config = config;
     }
+
+    public String getMisChild() {
+        return misChild;
+    }
+
+    public void setMisChild(String misChild) {
+        this.misChild = misChild;
+    }
 }
 

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/service/DepartInfoService.java

@@ -34,5 +34,7 @@ public interface DepartInfoService {
     List<TreeNode> getDepartTree(boolean all, Integer userId);
 
     List<UserInfo> getDepartUsers(Integer departId);
+
+    List<DepartInfo> getChildDepartsByUserId(Integer userId);
 }
 

+ 13 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/DepartInfoServiceImpl.java

@@ -223,6 +223,19 @@ public class DepartInfoServiceImpl implements DepartInfoService {
         return null;
     }
 
+    @Override
+    public List<DepartInfo> getChildDepartsByUserId(Integer userId) {
+
+        logger.info("getChildDepartsByUserId");
+        try {
+            return departInfoMapper.getChildDepartsByUserId(userId);
+        } catch (Exception e) {
+            logger.error("getChildDepartsByUserId", e);
+        }
+
+        return null;
+    }
+
     private List removeDuplicate(List list) {
         HashSet h = new HashSet(list);
         list.clear();

+ 10 - 0
src/main/java/com/izouma/awesomeadmin/web/DepartInfoController.java

@@ -51,6 +51,16 @@ public class DepartInfoController {
         return new Result(true, pp);
     }
 
+
+    @RequestMapping(value = "/childDepartsByUserId", method = RequestMethod.GET)
+    @ResponseBody
+    public Result childDepartsByUserId(@RequestParam(required = false, value = "userId") Integer userId) {
+
+        List<DepartInfo> pp = departInfoService.getChildDepartsByUserId(userId);
+        return new Result(true, pp);
+    }
+
+
     /**
      * <p>根据Id。</p>
      */

+ 13 - 1
src/main/vue/src/pages/Departs.vue

@@ -35,9 +35,13 @@
                 <el-form-item label="MIS包含下属" prop="misInclude">
                     <el-input v-model="menu.misInclude"></el-input>
                 </el-form-item>
-                <el-form-item label="MIS下属部门信息" prop="misChild">
+                <!-- <el-form-item label="MIS下属部门信息" prop="misChild">
                     <el-input v-model="menu.misChild"></el-input>
+                </el-form-item> -->
+                <el-form-item label="MIS下属部门信息" prop="misChild">
                 </el-form-item>
+                <el-tree ref="misChildTree" :data="menus" :highlight-current="true" :expand-on-click-node="false" node-key="id" label="label" show-checkbox default-expand-all>
+                </el-tree>
             </el-form>
             <div slot="footer">
                 <el-button @click="dialogVisible = false" size="small">取消</el-button>
@@ -123,6 +127,7 @@ export default {
             this.$refs.form.validate(valid => {
                 if (valid) {
                     this.loading = true;
+                    this.menu.misChild = this.$refs.misChildTree.getCheckedKeys(false).join();
                     this.$http.post({
                         url: this.menu.id ? '/departInfo/update' : '/departInfo/save',
                         data: this.menu
@@ -150,6 +155,13 @@ export default {
                 misChild: data.extra.misChild||'',
             };
             this.dialogVisible = true;
+            if (this.menu.misChild) {
+                setTimeout(() => {
+                    this.$refs.misChildTree.setCheckedKeys(this.menu.misChild.split(','))
+                }, 100)
+            }
+
+
         },
         moveUp(node, data) {
             const formData = d => {

+ 184 - 202
src/main/vue/src/pages/TestAaa.vue

@@ -1,79 +1,61 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
-                 style="max-width: 500px;">
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small" style="max-width: 500px;">
             <el-form-item>
                 <h2> test_aaa</h2>
             </el-form-item>
 
-                                                                                                                                                                                                                                                                 <el-form-item prop="imageUrl" label="图片">
-                 <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
-             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                            <el-form-item prop="testName" label="枚举单选">
+            <el-form-item prop="imageUrl" label="图片">
+                <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="testName" label="枚举单选">
                 <template>
-                    <el-select v-model="formData.testName" clearable  placeholder="请选择" :disabled="'testName'==subColumn">
-                        <el-option
-                                v-for="item in testNameOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                    <el-select v-model="formData.testName" clearable placeholder="请选择" :disabled="'testName'==subColumn">
+                        <el-option v-for="item in testNameOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="remark" label="接口单选">
+            <el-form-item prop="remark" label="接口单选">
                 <template>
-                    <el-select v-model="formData.remark" clearable  placeholder="请选择" :disabled="'remark'==subColumn">
-                        <el-option
-                                v-for="item in remarkOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                    <el-select v-model="formData.remark" clearable placeholder="请选择" :disabled="'remark'==subColumn">
+                        <el-option v-for="item in remarkOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="multiSelect" label="表多选">
+            <el-form-item prop="multiSelect" label="表多选">
                 <template>
                     <el-select v-model="formData.multiSelect" multiple clearable placeholder="请选择" :disabled="'multiSelect'==subColumn">
-                        <el-option
-                                v-for="item in multiSelectOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                        <el-option v-for="item in multiSelectOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="testTime" label="时间">
+            <el-form-item prop="testTime" label="时间">
                 <template>
                     <div class="block">
-                        <el-date-picker
-                                v-model="formData.testTime"
-                                type="date"
-                                value-format="timestamp"
-                                placeholder="选择日期"
-                                :disabled="'testTime'==subColumn">
+                        <el-date-picker v-model="formData.testTime" type="date" value-format="timestamp" placeholder="选择日期" :disabled="'testTime'==subColumn">
                         </el-date-picker>
                     </div>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="loginUser" label="登录名">
-                            <el-input v-model="formData.loginUser" disabled style="width: 215px;"></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <el-form-item prop="testcTime" label="当前时间">
-                            <el-input v-model="formData.testcTime" disabled style="width: 215px;"></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="testcDate" label="当前日期">
-                            <el-input v-model="formData.testcDate" disabled style="width: 215px;"></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="workNumber" label="工号">
-                            <el-input v-model="formData.workNumber" disabled style="width: 215px;"></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="departId" label="部门">
-                            <el-input v-model="formData.departId" disabled style="width: 215px;"></el-input>
-                        </el-form-item>
-                                                                                                    <el-form-item>
+            <el-form-item prop="loginUser" label="登录名">
+                <el-input v-model="formData.loginUser" disabled style="width: 215px;"></el-input>
+            </el-form-item>
+            <el-form-item prop="testcTime" label="当前时间">
+                <el-input v-model="formData.testcTime" disabled style="width: 215px;"></el-input>
+            </el-form-item>
+            <el-form-item prop="testcDate" label="当前日期">
+                <el-input v-model="formData.testcDate" disabled style="width: 215px;"></el-input>
+            </el-form-item>
+            <el-form-item prop="workNumber" label="工号">
+                <el-input v-model="formData.workNumber" disabled style="width: 215px;"></el-input>
+            </el-form-item>
+            <el-form-item prop="departId" label="部门">
+                <el-input v-model="formData.departId" disabled style="width: 215px;"></el-input>
+            </el-form-item>
+            <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="formData.id&&isModulesShow('del')" type="danger">删除</el-button>
                 <el-button @click="changeEditDialogVisible(false)">取消</el-button>
@@ -88,201 +70,201 @@ import { format } from 'date-fns'
 import zh from 'date-fns/locale/zh_cn'
 
 export default {
-    props:{
-        formData:{
-            type:Object,
-            default:{
-                                                                                                                                                                                                                                                                                
-            multiSelect : [],
+    props: {
+        formData: {
+            type: Object,
+            default: {
 
-                                                                                                                                                    loginUser : '',
+                multiSelect: [],
 
-                                                        testcTime : format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
+                loginUser: '',
 
-                                                                                testcDate : format(new Date(), 'YYYY/MM/DD', { locale: zh }),
+                testcTime: format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
 
-                                                                                        workNumber : '',
+                testcDate: format(new Date(), 'YYYY/MM/DD', { locale: zh }),
 
-                                                                                departId : '',
+                workNumber: '',
 
-                        }
+                departId: '',
+
+            }
         }
     },
 
     created() {
 
-                                                                                                                                                                                                                                                                                                
 
 
-                    this.$http.get({
-                        url:'/testBbb/all'
-                    }).then(res => {
-                        if (res.success) {
 
-                    if (res.data.length > 0) {
-                        res.data.forEach(item => {
-                            this.remarkOptions.push({label: item.nameAaa, value:item.id});
+        this.$http.get({
+            url: '/testBbb/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.remarkOptions.push({ label: item.nameAaa, value: item.id });
                     })
-                    }
                 }
-                });
-                                                                                                                        this.$http.get({
-                        url:'/commonQuery/all',
-                        data: {
-                            tableName: 'test_bbb',
-                            databasetype: 'Mysql',
-                            dataSourceCode: 'dataSource',
-                        }
-                    }).then(res => {
-                        if (res.success) {
+            }
+        });
+        this.$http.get({
+            url: '/commonQuery/all',
+            data: {
+                tableName: 'test_bbb',
+                databasetype: 'Mysql',
+                dataSourceCode: 'dataSource',
+            }
+        }).then(res => {
+            if (res.success) {
 
-                    if (res.data.length > 0) {
-                        res.data.forEach(item => {
-                            this.multiSelectOptions.push({label: item.name_ccc, value:item.id});
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.multiSelectOptions.push({ label: item.name_ccc, value: item.id });
                     })
-                    }
                 }
-                });
-                                                                                                                                                                        this.formData.loginUser = this.userInfo.username;
-                                                                                                                                                                                                                this.formData.workNumber = this.userInfo.workNumber;
-                                                                                                this.formData.departId = this.userInfo.departId;
-                        },
+            }
+        });
+        this.formData.loginUser = this.userInfo.username;
+        this.formData.workNumber = this.userInfo.workNumber;
+        this.formData.departId = this.userInfo.departId;
+    },
     data() {
         return {
             saving: false,
-        rules: {
-                                                                                                                                    testName:
-                [
-                                            {required: true, message: '请输入 枚举单选', trigger: 'blur'},
-                                                        ],
-                                                                remark:
-                [
-                                            {required: true, message: '请输入 接口单选', trigger: 'blur'},
-                                                        ],
-                                                                multiSelect:
-                [
-                                            {required: true, message: '请输入 表多选', trigger: 'blur'},
-                                                        ],
-                                                                                                                                                                                                            },
-        modules:            'search,query,orders,edit,excel,add,del'.split(',').map(i => String(i))
-     ,
-                                                                                                                            testNameOptions:[{ label: 'A', value: 'A' }, { label: 'B', value: 'B' },{ label: 'C', value: 'C' }],
-                                                                                    remarkOptions:[],
-                                                                                    multiSelectOptions:[],
-                                                                                                                                                                }
+            rules: {
+                testName:
+                    [
+                        { required: true, message: '请输入 枚举单选', trigger: 'blur' },
+                    ],
+                remark:
+                    [
+                        { required: true, message: '请输入 接口单选', trigger: 'blur' },
+                    ],
+                multiSelect:
+                    [
+                        { required: true, message: '请输入 表多选', trigger: 'blur' },
+                    ],
+            },
+            modules: 'search,query,orders,edit,excel,add,del'.split(',').map(i => String(i))
+            ,
+            testNameOptions: [{ label: 'A', value: 'A' }, { label: 'B', value: 'B' }, { label: 'C', value: 'C' }],
+            remarkOptions: [],
+            multiSelectOptions: [],
+        }
     },
     computed: {
-            ...mapState(['userInfo']),
-                subColumn(){
-                if(this.formData.subColumn){
-                   return  this.formData.subColumn;
-                }else{
-                    return '';
-                }
+        ...mapState(['userInfo']),
+        subColumn() {
+            if (this.formData.subColumn) {
+                return this.formData.subColumn;
+            } else {
+                return '';
+            }
         },
-},
-methods: {
-    changeEditDialogVisible(value){
-        this.$emit('changeEditDialogVisible',value)
-    },
-    isModulesShow(column) {
-        var row = this.modules.find(i => i === column);
-        return row ? true : false;
     },
-    onSave() {
-        this.$refs.form.validate((valid) => {
-            if (valid) {
-                this.logicalValidate();
+    methods: {
+        changeEditDialogVisible(value) {
+            this.$emit('changeEditDialogVisible', value)
+        },
+        isModulesShow(column) {
+            var row = this.modules.find(i => i === column);
+            return row ? true : false;
+        },
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.logicalValidate();
+                } else {
+                    return false;
+                }
+            });
+        },
+        logicalValidate() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+
+            var logicalData = {
+                testName: data.testName,
+                remark: data.remark,
+            }
+
+            if (JSON.stringify(logicalData) == '{}') {
+                this.submit();
             } else {
-                return false;
-    }
-    });
-    },
-    logicalValidate() {
-        var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.get({
+                    url: '/testAaa/getOne',
+                    data: logicalData
+                }).then(res => {
+                    if (res.success) {
 
-        var logicalData = {
-                                                                                                testName:data.testName,
-                                                remark:data.remark,
-                                                                                                                                                                    }
+                        var logicalFlag = true;
 
-        if (JSON.stringify(logicalData) == '{}') {
-            this.submit();
-        } else {
-            this.$http.get({
-                url: '/testAaa/getOne',
-                data: logicalData
-            }).then(res => {
-                if (res.success) {
+                        if (res.data) {
+                            if (this.formData.id) {
+                                if (res.data.id != this.formData.id) {
+                                    logicalFlag = false;
+                                }
+                            } else {
+                                logicalFlag = false;
+                            }
 
-                var logicalFlag = true;
+                        }
 
-                if (res.data) {
-                    if (this.formData.id) {
-                        if (res.data.id != this.formData.id) {
-                            logicalFlag = false;
+                        if (logicalFlag) {
+                            this.submit();
+                        } else {
+                            this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
                         }
-                    } else {
-                        logicalFlag = false;
-                    }
 
-                }
 
-                if (logicalFlag) {
-                    this.submit();
-                } else {
-                    this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
-                }
+                    } else {
+                        this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
+                    }
+                });
+            }
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
 
+            if (data.testcTime) {
+                data.testcTime = Date.parse(new Date(data.testcTime));
+            }
 
-            } else {
-                this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
+            if (data.testcDate) {
+                data.testcDate = Date.parse(new Date(data.testcDate));
             }
-        });
-        }
-    },
-    submit() {
-        var data = JSON.parse(JSON.stringify(this.formData));
 
-                                                                                                                                                                                                    if(data.testcTime){
-                    data.testcTime = Date.parse(new Date(data.testcTime));
-                }
 
-                                                if(data.testcDate){
-                    data.testcDate = Date.parse(new Date(data.testcDate));
+            this.$http.post({
+                url: this.formData.id ? '/testAaa/update' : '/testAaa/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$emit('changeEdit')
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/testAaa/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$emit('changeEdit')
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
                 }
-
-                                                            
-    this.$http.post({
-        url: this.formData.id ? '/testAaa/update' : '/testAaa/save',
-        data: data
-    }).then(res => {
-        if (res.success) {
-            this.$message.success('成功');
-            this.$emit('changeEdit')
-        } else {
-            this.$message.warning('失败')
-        }
-    });
-    },
-    onDelete() {
-        this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-            return this.$http.post({
-                url: '/testAaa/del',
-                data: { id: this.formData.id }
             })
-        }).then(() => {
-            this.$message.success('删除成功');
-        this.$emit('changeEdit')
-    }).catch(action => {
-            if (action === 'cancel') {
-            this.$message.info('删除取消');
-        } else {
-            this.$message.error('删除失败');
-        }
-    })
-    },
-}
+        },
+    }
 }
 </script>
 <style lang="less" scoped>

+ 2 - 2
src/main/vue/src/pages/TestAaas.vue

@@ -365,11 +365,11 @@ export default {
             orderByStr: '',
             imgSrc: '',
             imageDialogVisible: false,
-            loading:false,
+            loading: false,
         }
     },
     computed: {
-        ...mapState(['tableHeight', 'userInfo']),
+        ...mapState(['tableHeight', 'userInfo','childDepartInfo']),
         selection() {
             return this.$refs.table.selection.map(i => i.id);
         }

+ 122 - 122
src/main/vue/src/pages/User.vue

@@ -1,13 +1,15 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small"
-                 style="max-width: 500px;">
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
             <el-form-item prop="icon" label="头像">
                 <single-upload v-model="formData.icon"></single-upload>
             </el-form-item>
             <el-form-item prop="username" label="用户名">
                 <el-input v-model="formData.username"></el-input>
             </el-form-item>
+            <el-form-item prop="nickname" label="昵称">
+                <el-input v-model="formData.nickname"></el-input>
+            </el-form-item>
             <el-form-item prop="phone" label="手机">
                 <el-input v-model="formData.phone"></el-input>
             </el-form-item>
@@ -16,33 +18,26 @@
             </el-form-item>
             <el-form-item prop="roleId" label="角色">
                 <el-select v-model="formData.roleId" multiple placeholder="请选择" style="width: 100%;">
-                    <el-option
-                        v-for="item in roles"
-                        :key="item.id"
-                        :label="item.name"
-                        :value="item.id">
+                    <el-option v-for="item in roles" :key="item.id" :label="item.name" :value="item.id">
                     </el-option>
                 </el-select>
             </el-form-item>
             <el-form-item prop="departId" label="部门">
-                <el-cascader
-                    :options="departs"
-                    v-model="formData.departId">
+                <el-cascader :options="departs" v-model="formData.departId">
                 </el-cascader>
             </el-form-item>
+
+            <el-form-item prop="misChild" label="子部门">
+                <el-tree ref="misChildTree" :data="departs" :highlight-current="true" :expand-on-click-node="false" node-key="value" label="label" show-checkbox default-expand-all>
+                </el-tree>
+            </el-form-item>
+
             <el-form-item prop="birthday" label="生日">
-                <el-date-picker
-                    v-model="formData.birthday"
-                    format="yyyy-MM-dd"
-                    value-format="timestamp">
+                <el-date-picker v-model="formData.birthday" format="yyyy-MM-dd" value-format="timestamp">
                 </el-date-picker>
             </el-form-item>
             <el-form-item prop="createTime" label="创建时间">
-                <el-date-picker
-                    v-model="formData.createTime"
-                    type="datetime"
-                    format="yyyy-MM-dd HH:mm:ss"
-                    value-format="timestamp">
+                <el-date-picker v-model="formData.createTime" type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="timestamp">
                 </el-date-picker>
             </el-form-item>
             <el-form-item>
@@ -53,121 +48,126 @@
     </div>
 </template>
 <script>
-    import formValidator from '../formValidator'
+import formValidator from '../formValidator'
 
-    export default {
-        created() {
-            if (this.$route.query.id) {
-                this.$http.get({
-                    url: '/userInfo/getOne',
-                    data: {
-                        id: this.$route.query.id
-                    }
-                }).then(res => {
-                    if (res.success) {
-                        res.data.roleId = res.data.roleId ? res.data.roleId.split(',').map(i => Number(i)) : [];
-                        res.data.departId = res.data.departId ? res.data.departId.split(',') : [];
-                        this.formData = res.data;
-                    }
-                })
-            }
+export default {
+    created() {
+        if (this.$route.query.id) {
             this.$http.get({
-                url: '/sysRole/all'
-            }).then(res => {
-                if (res.success) {
-                    this.roles = res.data;
+                url: '/userInfo/getOne',
+                data: {
+                    id: this.$route.query.id
                 }
-            });
-            this.$http.get({
-                url: '/departInfo/departTree'
             }).then(res => {
                 if (res.success) {
-                    const parse = (trees) => {
-                        trees.sort((a, b) => {
-                            return a.extra.sort - b.extra.sort;
-                        });
-                        return trees.map(i => {
-                            let t = {
-                                value: i.id,
-                                label: i.name,
-                                parentId: i.parentId,
-                                extra: i.extra
-                            };
-                            if (i.children instanceof Array) {
-                                t.children = parse(i.children);
-                            }
-                            return t;
-                        });
-                    };
-                    this.departs = parse(res.data);
+                    res.data.roleId = res.data.roleId ? res.data.roleId.split(',').map(i => Number(i)) : [];
+                    res.data.departId = res.data.departId ? res.data.departId.split(',') : [];
+
+                    if (res.data.misChild) {
+                        this.$refs.misChildTree.setCheckedKeys(res.data.misChild.split(','));
+                    }
+
+                    this.formData = res.data;
                 }
-            });
-        },
-        data() {
-            return {
-                saving: false,
-                formData: {
-                    departId: []
-                },
-                rules: {
-                    icon: [
-                        {required: true, message: '请上传头像', trigger: 'blur'},
-                    ],
-                    username: [
-                        {required: true, message: '请输入昵称', trigger: 'blur'},
-                    ],
-                    phone: [
-                        {required: true, message: '请输入手机号', trigger: 'blur'},
-                        {
-                            validator: (rule, value, callback) => {
-                                if (!value) {
-                                    callback(new Error('请输入手机号'));
-                                } else if (/^1[3-9]\d{9}$/.test(value)) {
-                                    callback();
-                                } else {
-                                    callback(new Error('请输入正确的手机号'));
-                                }
-                            }, trigger: 'blur'
+            })
+        }
+        this.$http.get({
+            url: '/sysRole/all'
+        }).then(res => {
+            if (res.success) {
+                this.roles = res.data;
+            }
+        });
+        this.$http.get({
+            url: '/departInfo/departTree'
+        }).then(res => {
+            if (res.success) {
+                const parse = (trees) => {
+                    trees.sort((a, b) => {
+                        return a.extra.sort - b.extra.sort;
+                    });
+                    return trees.map(i => {
+                        let t = {
+                            value: i.id,
+                            label: i.name,
+                            parentId: i.parentId,
+                            extra: i.extra
+                        };
+                        if (i.children instanceof Array) {
+                            t.children = parse(i.children);
                         }
-                    ],
-                    password: [
-                        {required: true, message: '请输入密码', trigger: 'blur'},
-                    ],
-                    roleId: [
-                        {required: true, message: '请选择角色', trigger: 'blur'},
-                    ]
-                },
-                roles: [],
-                departs: [],
+                        return t;
+                    });
+                };
+                this.departs = parse(res.data);
             }
-        },
-        methods: {
-            onSave() {
-                this.$refs.form.validate((valid) => {
-                    if (valid) {
-                        this.submit();
-                    } else {
-                        return false;
-                    }
-                });
+        });
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+                departId: []
             },
-            submit() {
-                var data = JSON.parse(JSON.stringify(this.formData));
-                this.$http.post({
-                    url: this.formData.id ? '/userInfo/update' : '/userInfo/save',
-                    data: data
-                }).then(res => {
-                    if (res.success) {
-                        this.$message.success('成功');
-                        this.$router.go(-1);
-                    } else {
-                        this.$message.warning('失败')
+            rules: {
+                icon: [
+                    { required: true, message: '请上传头像', trigger: 'blur' },
+                ],
+                username: [
+                    { required: true, message: '请输入昵称', trigger: 'blur' },
+                ],
+                phone: [
+                    { required: true, message: '请输入手机号', trigger: 'blur' },
+                    {
+                        validator: (rule, value, callback) => {
+                            if (!value) {
+                                callback(new Error('请输入手机号'));
+                            } else if (/^1[3-9]\d{9}$/.test(value)) {
+                                callback();
+                            } else {
+                                callback(new Error('请输入正确的手机号'));
+                            }
+                        }, trigger: 'blur'
                     }
-                });
-            }
+                ],
+                password: [
+                    { required: true, message: '请输入密码', trigger: 'blur' },
+                ],
+                roleId: [
+                    { required: true, message: '请选择角色', trigger: 'blur' },
+                ]
+            },
+            roles: [],
+            departs: [],
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            this.formData.misChild = this.$refs.misChildTree.getCheckedKeys(false).join();
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: this.formData.id ? '/userInfo/update' : '/userInfo/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
         }
     }
+}
 </script>
 <style lang="less" scoped>
-
 </style>

Разница между файлами не показана из-за своего большого размера
+ 582 - 582
src/main/vue/src/router/index.js


+ 10 - 0
src/main/vue/src/vuex/index.js

@@ -19,7 +19,14 @@ export default new Vuex.Store({
         windowSize: {
             width: 0,
             height: 0
+        },
+        childDepartInfo: {
+            misCode: '',
+            misName: '',
+            misCodeAndName: '',
+
         }
+
     },
     mutations: {
         updateTableHeight(state, height) {
@@ -46,6 +53,9 @@ export default new Vuex.Store({
         uploadfarmInfo(state, farmInfo) {
             state.farmName = farmInfo.misOrgName
             state.farmNO = parseInt(farmInfo.misOrgCode)
+        },
+        uploadChildDepartInfo(state, childDepartInfo) {
+            state.childDepartInfo = childDepartInfo
         }
     },
     actions: {}

Некоторые файлы не были показаны из-за большого количества измененных файлов