2213980799@qq.com 1 год назад
Родитель
Сommit
fbdeedde8b

+ 2 - 2
src/api/layout/index.js

@@ -3,8 +3,8 @@ import request from '@/utils/request';
 /**
  * 获取当前登录的菜单、按钮权限
  */
-export async function getResourcesTree () {
-  const res = await request.get('/system/resources/getResourcesTree');
+export async function getResourcesTree ({groupId,roleId}) {
+  const res = await request.get('/system/resources/getResourcesTree?groupId='+groupId+'&roleId='+roleId);
   if (res.data.code == 0 && res.data.data) {
     return res.data.data;
   }

+ 110 - 58
src/layout/components/header-tools.vue

@@ -17,13 +17,33 @@
     <div class="ele-admin-header-tool-item">
       <header-notice />
     </div>
+    <div class="ele-admin-header-tool-item">
+      <el-select v-model="groupId" @change="groupIdChange">
+        <el-option
+          v-for="item in loginChangeGroupVOList"
+          :key="item.groupId"
+          :label="item.groupName"
+          :value="item.groupId"
+        >
+        </el-option>
+      </el-select>
+    </div>
+    <div class="ele-admin-header-tool-item">
+      <el-select v-model="roleId" @change="roleChange">
+        <el-option
+          v-for="item in loginChangeRoleVOList"
+          :key="item.roleId"
+          :label="item.roleName"
+          :value="item.roleId"
+        >
+        </el-option>
+      </el-select>
+    </div>
     <!-- 用户信息 -->
     <div class="ele-admin-header-tool-item">
       <el-dropdown @command="onUserDropClick">
         <div class="ele-admin-header-avatar">
-          <el-avatar
-             src="@/assets/images/default-user.png"
-          />
+          <el-avatar src="@/assets/images/default-user.png" />
           <!-- <span class="hidden-xs-only">{{
             loginUser && loginUser.nickname ? loginUser.nickname : ''
           }}</span> -->
@@ -60,66 +80,98 @@
 </template>
 
 <script>
-  import HeaderNotice from './header-notice.vue';
-  import PasswordModal from './password-modal.vue';
-  import SettingDrawer from './setting-drawer.vue';
-  import I18nIcon from './i18n-icon.vue';
-  import { logout } from '@/utils/page-tab-util';
-  import { userLogout } from '@/api/system/user';
+import HeaderNotice from './header-notice.vue';
+import PasswordModal from './password-modal.vue';
+import SettingDrawer from './setting-drawer.vue';
+import I18nIcon from './i18n-icon.vue';
+import { logout } from '@/utils/page-tab-util';
+import { userLogout } from '@/api/system/user';
+import router from '@/router/index';
+
+export default {
+  components: { HeaderNotice, PasswordModal, SettingDrawer, I18nIcon },
+  props: {
+    // 是否是全屏
+    fullscreen: Boolean
+  },
+  data() {
+    return {
+      // 是否显示修改密码弹窗
+      passwordVisible: false,
+      // 是否显示主题设置抽屉
+      settingVisible: false,
+      groupId: '',
+      roleId: ''
+    };
+  },
+  created() {
+    this.groupId = this.$store.state.user?.info.currentGroupId;
+    this.roleId = this.$store.state.user?.info.currentRoleId;
+  },
 
-  export default {
-    components: { HeaderNotice, PasswordModal, SettingDrawer, I18nIcon },
-    props: {
-      // 是否是全屏
-      fullscreen: Boolean
+  computed: {
+    // 当前用户信息
+    loginUser() {
+      return this.$store.state.user?.info;
     },
-    data () {
-      return {
-        // 是否显示修改密码弹窗
-        passwordVisible: false,
-        // 是否显示主题设置抽屉
-        settingVisible: false
-      };
+    // 部门下拉
+    loginChangeGroupVOList() {
+      return this.$store.state.user?.info?.loginChangeGroupVOList;
     },
-    computed: {
-      // 当前用户信息
-      loginUser () {
-        return this.$store.state.user?.info;
-      }
+    // 角色下拉
+    loginChangeRoleVOList() {
+      return this.$store.state.user?.info?.loginChangeGroupVOList.find(
+        (item) => item.groupId == this.groupId
+      )?.loginChangeRoleVOList;
+    }
+  },
+  methods: {
+    groupIdChange(val) {
+      this.roleChange(this.loginChangeRoleVOList[0].roleId);
+    },
+    roleChange(val) {
+      this.roleId = val;
+      let userInfo=this.$store.state.user?.info
+      userInfo.currentGroupId=this.groupId
+      userInfo.currentRoleId=val
+      this.$store.dispatch('user/fetchUserInfo').then(({ menus, homePath, authoritiesRouter })=>{
+        router.roleChange({ menus, homePath, authoritiesRouter })
+      });
+      
     },
-    methods: {
-      /* 用户信息下拉点击事件 */
-      onUserDropClick (command) {
-        if (command === 'password') {
-          this.passwordVisible = true;
-        } else if (command === 'profile') {
-          if (this.$route.fullPath !== '/user/profile') {
-            this.$router.push('/user/profile');
-          }
-        } else if (command === 'logout') {
-          // 退出登录
-          this.$confirm(
-            this.$t('layout.logout.message'),
-            this.$t('layout.logout.title'),
-            { type: 'warning' }
-          )
-            .then(() => {
-              userLogout().then((res) => {
-                localStorage.removeItem('userId');
-                logout();
-              });
-            })
-            .catch(() => {});
+
+    /* 用户信息下拉点击事件 */
+    onUserDropClick(command) {
+      if (command === 'password') {
+        this.passwordVisible = true;
+      } else if (command === 'profile') {
+        if (this.$route.fullPath !== '/user/profile') {
+          this.$router.push('/user/profile');
         }
-      },
-      /* 全屏切换 */
-      toggleFullscreen () {
-        this.$emit('fullscreen');
-      },
-      /* 打开设置抽屉 */
-      openSetting () {
-        this.settingVisible = true;
+      } else if (command === 'logout') {
+        // 退出登录
+        this.$confirm(
+          this.$t('layout.logout.message'),
+          this.$t('layout.logout.title'),
+          { type: 'warning' }
+        )
+          .then(() => {
+            userLogout().then((res) => {
+              localStorage.removeItem('userId');
+              logout();
+            });
+          })
+          .catch(() => {});
       }
+    },
+    /* 全屏切换 */
+    toggleFullscreen() {
+      this.$emit('fullscreen');
+    },
+    /* 打开设置抽屉 */
+    openSetting() {
+      this.settingVisible = true;
     }
-  };
+  }
+};
 </script>

+ 17 - 3
src/router/index.js

@@ -55,19 +55,19 @@ router.beforeEach((to, from, next) => {
                   path: '/bpm/definition',
                   component: 'bpm/definition',
                   name: '流程定义',
-                  meta: { title: '流程定义',hide:true, routePath: '/bpm/definition' }
+                  meta: { title: '流程定义', hide: true, routePath: '/bpm/definition' }
                 },
                 {
                   path: '/bpm/modelEditor',
                   component: 'bpm/model/modelEditor',
                   name: '设计流程',
-                  meta: { title: '设计流程', hide:true,routePath: '/bpm/modelEditor' }
+                  meta: { title: '设计流程', hide: true, routePath: '/bpm/modelEditor' }
                 },
                 {
                   path: '/bpm/processInstance',
                   component: 'bpm/processInstance/detail',
                   name: '流程详情',
-                  meta: { title: '流程详情', hide:true,routePath: '/bpm/processInstance' }
+                  meta: { title: '流程详情', hide: true, routePath: '/bpm/processInstance' }
                 }
               );
             }
@@ -116,5 +116,19 @@ router.afterEach((to) => {
     }, 200);
   }
 });
+router.roleChange = ({ menus, homePath, authoritiesRouter }) => {
+  if (menus&&menus.length > 0) {
+    router.addRoute(
+      getMenuRoutes([...menus, ...authoritiesRouter], homePath)
+    );
+    router.push({
+      path:menus[0].redirect||menus[0].path,
+    }).then(res=>{
+      window.location.reload()
 
+    })
+  }
+
+  // next({ ...to, replace: true });
+};
 export default router;

+ 3 - 2
src/store/modules/user.js

@@ -121,8 +121,9 @@ export default {
     //   return { menus, homePath };
     // },
     //动态路由
-    async fetchUserInfo({ commit }) {
-      const result = await getResourcesTree().catch(() => {});
+    async fetchUserInfo({ commit,state }) {
+
+      const result = await getResourcesTree({groupId:state.info.currentGroupId,roleId:state.info.currentRoleId}).catch(() => {});
       const list = result?.filter((i) => i.path === '/page-main-data');
       if (!list?.length) {
         return {};

+ 326 - 214
src/views/enterpriseModel/dept/components/org-edit.vue

@@ -45,10 +45,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item
-            label="负责人:"
-            style="margin-bottom: 22px"
-          >
+          <el-form-item label="负责人:" style="margin-bottom: 22px">
             <el-input
               @click.native="openStaffSelection"
               v-model="responsibleName"
@@ -58,30 +55,18 @@
         </el-col>
 
         <el-col :span="12">
-
-          <el-form-item
-            label="状态:"
-            style="margin-bottom: 22px"
-          >
-           <el-select v-model="form.status" style="width: 100%">
-             <el-option label="开启" :value="1"></el-option>
-             <el-option label="关闭" :value="0"></el-option>
-           </el-select>
+          <el-form-item label="状态:" style="margin-bottom: 22px">
+            <el-select v-model="form.status" style="width: 100%">
+              <el-option label="开启" :value="1"></el-option>
+              <el-option label="关闭" :value="0"></el-option>
+            </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="12">
-
-          <el-form-item
-            label="排序:"
-            style="margin-bottom: 22px"
-          >
-            <el-input
-              v-model="form.sort"
-              placeholder="请选择"
-            ></el-input>
+          <el-form-item label="排序:" style="margin-bottom: 22px">
+            <el-input v-model="form.sort" placeholder="请选择"></el-input>
           </el-form-item>
         </el-col>
-
       </el-row>
     </el-form>
     <headerTitle
@@ -199,6 +184,102 @@
         </el-col>
       </el-row>
     </el-form>
+    <headerTitle
+      title="工厂信息"
+      style="margin-top: 30px"
+      v-if="['40'].includes(form.type)"
+    ></headerTitle>
+    <el-form
+      ref="factoryFormRef"
+      :model="factoryForm"
+      :rules="factoryForm"
+      label-width="100px"
+      v-if="['40'].includes(form.type)"
+    >
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="工厂编码:" prop="code">
+            <el-input
+              clearable
+              :maxlength="20"
+              v-model="factoryForm.code"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="工厂名称:" prop="name">
+            <el-input
+              clearable
+              :maxlength="20"
+              :disabled="true"
+              v-model="factoryForm.name"
+              placeholder="请输入"
+            />
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="12">
+          <el-form-item label="所属公司:" prop="groupId">
+            <org-select
+              v-model="factoryForm.groupId"
+              :data="organizationList"
+              placeholder="请选择"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="状态:" prop="enabled">
+            <div class="location-warp">
+              <el-select v-model="factoryForm.enabled" style="width: 100%" disabled>
+                <el-option label="生效" :value="1"></el-option>
+                <el-option label="未生效" :value="0"></el-option>
+              </el-select>
+            </div>
+          </el-form-item>
+        </el-col> -->
+
+        <!-- <el-col :span="12">
+          <el-form-item label="负责人:" prop="leaderId">
+            <el-input
+              @click.native="openStaffSelection"
+              v-model="factoryForm.responsibleName"
+              :disabled="true"
+              placeholder="请选择"
+            ></el-input>
+      
+          </el-form-item>
+        </el-col> -->
+        <el-col :span="24">
+          <el-form-item label="所属区域:" prop="location_city">
+            <area-select
+              v-model="factoryForm.areaId"
+              @checkedKeys="getAreaInfo"
+              :data="areaTreeList"
+              ref="tree"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="地址:" prop="location_city">
+            <div class="location-warp">
+              <el-cascader
+                clearable
+                style="width: 385px"
+                v-model="factoryForm.extInfo.location"
+                :options="cityDataLabel"
+              ></el-cascader>
+              <el-input
+                class="detail"
+                clearable
+                :maxlength="20"
+                v-model="factoryForm.extInfo.locationDetail"
+                placeholder="请输入详细地址"
+              />
+            </div>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
     <template v-slot:footer>
       <el-button @click="updateVisible(false)">取消</el-button>
       <el-button type="primary" :loading="loading" @click="save">
@@ -213,213 +294,244 @@
 </template>
 
 <script>
-  import OrgSelect from './org-select.vue';
-  import OrgTypeSelect from './org-type-select.vue';
-  import staffSelection from './staffSelection.vue';
-  import fileUpload from '@/components/upload/fileUpload';
+import OrgSelect from './org-select.vue';
+import OrgTypeSelect from './org-type-select.vue';
+import staffSelection from './staffSelection.vue';
+import fileUpload from '@/components/upload/fileUpload';
+import AreaSelect from "@/views/enterpriseModel/regionalManage/components/area-cascader.vue";
 
+const defEnterprise = {
+  businessLicenseFile: [],
+  name: null,
+  address: null,
+  tel: '',
+  registerDate: '',
+  unifiedSocialCreditCode: '',
+  businessScope: '',
+  mainProduct: '',
+  remark: '',
+  fax: ''
+};
+const defFactoryForm = {
+  id: '',
+  code: '',
+  name: '',
+  groupId: '',
+  areaId: '',
+  areaName: '',
+  extInfo: {
+    principalDep: '', // 负责人部门
+    location: [],
+    locationDetail: ''
+  },
+  areaIdList: [],
+  enabled: 1,
+  parentId: 0,
+  leaderId: '',
+  type: 1 //  FACTORY(1, "工厂"), WORKSHOP_PLAN(2, "厂房"), WORKSHOP(3, "车间"), LINE(4, "厂线");
+};
+import {
+  addOrganization,
+  updateOrganization,
+  getById
+} from '@/api/system/organization';
+import { basicAreaPageAPI } from '@/api/regionalManage';
+import {cityDataLabel} from 'ele-admin/packages/utils/regions';
 
-  const defEnterprise = {
-    businessLicenseFile: [],
-    name: null,
-    address: null,
-    tel: '',
-    registerDate: '',
-    unifiedSocialCreditCode: '',
-    businessScope: '',
-    mainProduct: '',
-    remark: '',
-    fax: ''
-  };
-  import {
-    addOrganization,
-    updateOrganization,
-    getById
-  } from '@/api/system/organization';
-  export default {
-    components: { OrgSelect, OrgTypeSelect, staffSelection, fileUpload },
-    props: {
-      // 弹窗是否打开
-      visible: Boolean,
-      // 修改回显的数据
-      data: Object,
-      // 上级id
-      parentId: [Number, String],
-      // 机构数据
-      organizationList: Array
-    },
-    data() {
-      const defaultForm = {
-        id: null,
-        parentId: null,
-        name: '',
-        type: '',
-        sort: null,
-        status: 1,
-        manager: []
+export default {
+  components: { OrgSelect, OrgTypeSelect, staffSelection, fileUpload,AreaSelect },
+  props: {
+    // 弹窗是否打开
+    visible: Boolean,
+    // 修改回显的数据
+    data: Object,
+    // 上级id
+    parentId: [Number, String],
+    // 机构数据
+    organizationList: Array
+  },
+  data() {
+    const defaultForm = {
+      id: null,
+      parentId: null,
+      name: '',
+      type: '',
+      sort: null,
+      status: 1,
+      manager: []
+    };
+    return {
+      defaultForm,
+      responsibleName: '',
+      // 表单数据
+      form: { ...defaultForm },
+      enterprise: { ...defEnterprise },
+      factoryForm: {
+        ...defFactoryForm
+      },
+      cityDataLabel,
+      // 表单验证规则
+      rules: {
+        name: [{ required: true, message: '请输入机构名称', trigger: 'blur' }],
+        manager: [{ required: true, message: '请选择负责人', trigger: 'blur' }],
+        type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }]
+      },
+      // 表单验证规则
+      enterpriseRules: {
+        name: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
+        address: [
+          { required: true, message: '请输入企业地址', trigger: 'blur' }
+        ],
+        unifiedSocialCreditCode: [
+          { required: true, message: '请输入统一社会性代码', trigger: 'blur' }
+        ]
+      },
+      // 提交状态
+      loading: false,
+      // 是否是修改
+      isUpdate: false
+    };
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  created() {
+    this.getBasicAreaList();
+  },
+  methods: {
+    /* 保存编辑 */
+    async save() {
+      if (!(await this.formValidate())) {
+        return false;
+      }
+      if (
+        ['10', '20'].includes(this.form.type) &&
+        !(await this.enterpriseValidate())
+      ) {
+        return false;
+      }
+      let form = {
+        ...this.form
       };
-      return {
-        defaultForm,
-        responsibleName: '',
-        // 表单数据
-        form: { ...defaultForm },
-        enterprise: { ...defEnterprise },
-        // 表单验证规则
-        rules: {
-          name: [
-            { required: true, message: '请输入机构名称', trigger: 'blur' }
-          ],
-          manager: [
-            { required: true, message: '请选择负责人', trigger: 'blur' }
-          ],
-          type: [{ required: true, message: '请选择机构类型', trigger: 'blur' }]
-        },
-        // 表单验证规则
-        enterpriseRules: {
-          name: [
-            { required: true, message: '请输入企业名称', trigger: 'blur' }
-          ],
-          address: [
-            { required: true, message: '请输入企业地址', trigger: 'blur' }
-          ],
-          unifiedSocialCreditCode: [
-            { required: true, message: '请输入统一社会性代码', trigger: 'blur' }
-          ]
-        },
-        // 提交状态
-        loading: false,
-        // 是否是修改
-        isUpdate: false
+      if (['10', '20'].includes(this.form.type)) {
+        form['enterprise'] = this.enterprise;
+      }
+      this.loading = true;
+      const data = {
+        ...form,
+        parentId: this.form.parentId || 0
       };
-    },
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive() {
-        return this.$store.state.theme.styleResponsive;
+      if (!this.isUpdate) {
+        delete data.id;
       }
+      const saveOrUpdate = this.isUpdate ? updateOrganization : addOrganization;
+      saveOrUpdate(data)
+        .then((msg) => {
+          this.loading = false;
+          this.$message.success(msg);
+          this.updateVisible(false);
+          this.$emit('done');
+        })
+        .catch((e) => {
+          this.loading = false;
+          // this.$message.error(e.message);
+        });
     },
-    methods: {
-      /* 保存编辑 */
-      async save() {
-        if (!(await this.formValidate())) {
-          return false;
-        }
-        if (
-          ['10', '20'].includes(this.form.type) &&
-          !(await this.enterpriseValidate())
-        ) {
-          return false;
-        }
-        let form = {
-          ...this.form
-        };
-        if (['10', '20'].includes(this.form.type)) {
-          form['enterprise'] = this.enterprise;
-        }
-        this.loading = true;
-        const data = {
-          ...form,
-          parentId: this.form.parentId || 0
-        };
-        if (!this.isUpdate) {
-          delete data.id;
-        }
-        const saveOrUpdate = this.isUpdate
-          ? updateOrganization
-          : addOrganization;
-        saveOrUpdate(data)
-          .then((msg) => {
-            this.loading = false;
-            this.$message.success(msg);
-            this.updateVisible(false);
-            this.$emit('done');
-          })
-          .catch((e) => {
-            this.loading = false;
-            // this.$message.error(e.message);
-          });
-      },
-      formValidate() {
-        return new Promise((resolve, reject) => {
-          this.$refs.form.validate((valid) => {
-            resolve(valid);
-          });
+    formValidate() {
+      return new Promise((resolve, reject) => {
+        this.$refs.form.validate((valid) => {
+          resolve(valid);
         });
-      },
-      enterpriseValidate() {
-        return new Promise((resolve, reject) => {
-          this.$refs.enterpriseForm.validate((valid) => {
-            resolve(valid);
-          });
+      });
+    },
+    getAreaInfo(nodeInfo) {
+      this.factoryForm.areaName = nodeInfo[0]?.pathLabels.join('/') || ''
+      this.factoryForm.areaId = this.factoryForm.areaId || ''
+    },
+    enterpriseValidate() {
+      return new Promise((resolve, reject) => {
+        this.$refs.enterpriseForm.validate((valid) => {
+          resolve(valid);
         });
-      },
-
-      //选择负责人
-      confirmStaffSelection(data) {
-        this.form.manager = JSON.parse(JSON.stringify(data));
-        this.responsibleName = data.map((item) => item.name).toString();
-      },
-      openStaffSelection() {
-        console.log(this.form.manager);
-        this.$refs.staffSelection.open(
-          JSON.parse(JSON.stringify(this.form.manager)) || []
-        );
-      },
-      /* 更新visible */
-      updateVisible(value) {
-        this.$emit('update:visible', value);
+      });
+    },
+    /* 获取区域集合 */
+    async getBasicAreaList() {
+      this.areaList = await basicAreaPageAPI({
+        pageNum: 1,
+        size: 9999
+      });
+      this.areaTreeList = this.$util.toTreeData({
+        data: this.areaList,
+        idField: 'id',
+        parentIdField: 'parentId'
+      });
+    },
+    //选择负责人
+    confirmStaffSelection(data) {
+      this.form.manager = JSON.parse(JSON.stringify(data));
+      this.responsibleName = data.map((item) => item.name).toString();
+    },
+    openStaffSelection() {
+      console.log(this.form.manager);
+      this.$refs.staffSelection.open(
+        JSON.parse(JSON.stringify(this.form.manager)) || []
+      );
+    },
+    /* 更新visible */
+    updateVisible(value) {
+      this.$emit('update:visible', value);
+    }
+  },
+  watch: {
+    form: {
+      deep: true,
+      handler(n) {
+        this.enterprise.name = n.name;
+        this.factoryForm.name = n.name;
       }
     },
-    watch: {
-      form: {
-        deep: true,
-        handler(n) {
-          this.enterprise.name = n.name;
-        }
-      },
-      visible(visible) {
-        if (visible) {
-          if (this.data) {
-            getById(this.data.id).then((res) => {
-              for (const key in res.enterprise) {
-                this.$set(this.enterprise, key, res.enterprise[key]);
+    visible(visible) {
+      if (visible) {
+        if (this.data) {
+          getById(this.data.id).then((res) => {
+            for (const key in res.enterprise) {
+              this.$set(this.enterprise, key, res.enterprise[key]);
+            }
+            for (const key in res) {
+              if (key == 'parentId') {
+                this.$set(this.form, key, res[key] == 0 ? '' : res[key] ?? '');
               }
-              for (const key in res) {
-                if (key == 'parentId') {
-                  this.$set(
-                    this.form,
-                    key,
-                    res[key] == 0 ? '' : res[key] ?? ''
-                  );
-                }
-                if (key != 'enterprise') {
-                  this.$set(this.form, key, res[key]);
-                }
+              if (key != 'enterprise') {
+                this.$set(this.form, key, res[key]);
               }
+            }
 
-              this.form.type = '' + this.form.type; //回显
-              this.responsibleName =
-                res.manager && res.manager.map((item) => item.name).toString();
-            });
+            this.form.type = '' + this.form.type; //回显
+            this.responsibleName =
+              res.manager && res.manager.map((item) => item.name).toString();
+          });
 
-            // this.form.type = '' + this.form.type; //回显
-            // this.responsibleName =
-            //   this.data.manager &&
-            //   this.data.manager.map((item) => item.name).toString();
-            this.isUpdate = true;
-          } else {
-            this.form.parentId = this.parentId;
-            this.isUpdate = false;
-          }
+          // this.form.type = '' + this.form.type; //回显
+          // this.responsibleName =
+          //   this.data.manager &&
+          //   this.data.manager.map((item) => item.name).toString();
+          this.isUpdate = true;
         } else {
-          this.$refs.form.clearValidate();
-          this.$refs.enterpriseForm &&
-            this.$refs.enterpriseForm.clearValidate();
-          this.form = { ...this.defaultForm };
-          this.enterprise = { ...defEnterprise };
-          this.responsibleName = '';
+          this.form.parentId = this.parentId;
+          this.isUpdate = false;
         }
+      } else {
+        this.$refs.form.clearValidate();
+        this.$refs.enterpriseForm && this.$refs.enterpriseForm.clearValidate();
+        this.form = { ...this.defaultForm };
+        this.enterprise = { ...defEnterprise };
+        this.responsibleName = '';
       }
     }
-  };
+  }
+};
 </script>

+ 71 - 20
src/views/login/index.vue

@@ -1,16 +1,34 @@
 <template>
-  <div :class="[
-    'login-wrapper',
-    ['', 'login-form-right', 'login-form-left'][direction]
-  ]">
-    <el-form ref="form" size="large" :model="form" :rules="rules" class="login-form ele-bg-white"
-      @keyup.enter.native="submit">
+  <div
+    :class="[
+      'login-wrapper',
+      ['', 'login-form-right', 'login-form-left'][direction]
+    ]"
+  >
+    <el-form
+      ref="form"
+      size="large"
+      :model="form"
+      :rules="rules"
+      class="login-form ele-bg-white"
+      @keyup.enter.native="submit"
+    >
       <h4>{{ $t('login.title') }}</h4>
       <el-form-item prop="loginName">
-        <el-input clearable v-model="form.loginName" prefix-icon="el-icon-user" placeholder="请输入登录账号" />
+        <el-input
+          clearable
+          v-model="form.loginName"
+          prefix-icon="el-icon-user"
+          placeholder="请输入登录账号"
+        />
       </el-form-item>
       <el-form-item prop="loginPwd">
-        <el-input show-password v-model="form.loginPwd" prefix-icon="el-icon-lock" placeholder="请输入登录密码" />
+        <el-input
+          show-password
+          v-model="form.loginPwd"
+          prefix-icon="el-icon-lock"
+          placeholder="请输入登录密码"
+        />
       </el-form-item>
       <!-- <el-form-item prop="code">
         <div class="login-input-group">
@@ -33,19 +51,36 @@
         <el-checkbox v-model="form.remember">
           {{ $t('login.remember') }}
         </el-checkbox>
-        <el-link type="primary" :underline="false" class="ele-pull-right" @click="$router.push('/forget')">
+        <el-link
+          type="primary"
+          :underline="false"
+          class="ele-pull-right"
+          @click="$router.push('/forget')"
+        >
           忘记密码
         </el-link>
       </div>
       <div class="el-form-item">
-        <el-button size="large" type="primary" class="login-btn" :loading="loading" @click="submit">
+        <el-button
+          size="large"
+          type="primary"
+          class="login-btn"
+          :loading="loading"
+          @click="submit"
+        >
           {{ loading ? $t('login.loading') : $t('login.login') }}
         </el-button>
       </div>
       <div class="ele-text-center" style="margin-bottom: 10px">
         <i class="login-oauth-icon el-icon-_qq" style="background: #3492ed"></i>
-        <i class="login-oauth-icon el-icon-_wechat" style="background: #4daf29"></i>
-        <i class="login-oauth-icon el-icon-_weibo" style="background: #cf1900"></i>
+        <i
+          class="login-oauth-icon el-icon-_wechat"
+          style="background: #4daf29"
+        ></i>
+        <i
+          class="login-oauth-icon el-icon-_weibo"
+          style="background: #cf1900"
+        ></i>
       </div>
     </el-form>
     <div class="login-copyright">
@@ -53,10 +88,15 @@
     </div>
     <!-- 多语言切换 -->
     <div style="position: absolute; right: 30px; top: 20px">
-      <i18n-icon :icon-style="{ fontSize: '22px', color: '#fff', cursor: 'pointer' }" />
+      <i18n-icon
+        :icon-style="{ fontSize: '22px', color: '#fff', cursor: 'pointer' }"
+      />
     </div>
     <!-- 实际项目去掉这段 -->
-    <div class="hidden-xs-only" style="position: absolute; right: 30px; bottom: 20px; z-index: 9">
+    <div
+      class="hidden-xs-only"
+      style="position: absolute; right: 30px; bottom: 20px; z-index: 9"
+    >
       <el-radio-group v-model="direction" size="mini">
         <el-radio-button label="2">居左</el-radio-button>
         <el-radio-button label="0">居中</el-radio-button>
@@ -83,9 +123,15 @@ export default {
       loading: false,
       // 表单数据
       form: {
-        loginName: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).loginName : '',
-        loginPwd: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).loginPwd : '',
-        remember: localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')).remember : false,
+        loginName: localStorage.getItem('accountInfo')
+          ? JSON.parse(localStorage.getItem('accountInfo')).loginName
+          : '',
+        loginPwd: localStorage.getItem('accountInfo')
+          ? JSON.parse(localStorage.getItem('accountInfo')).loginPwd
+          : '',
+        remember: localStorage.getItem('accountInfo')
+          ? JSON.parse(localStorage.getItem('accountInfo')).remember
+          : false
       },
       // 验证码base64数据
       captcha: '',
@@ -136,6 +182,12 @@ export default {
           .then((res) => {
             localStorage.setItem('userId', res.data.userId);
             // 用户信息
+            if (res.data?.loginChangeGroupVOList.length > 0) {
+              res.data['currentGroupId'] =
+                res.data.loginChangeGroupVOList[0].groupId;
+              res.data['currentRoleId'] =
+                res.data.loginChangeGroupVOList[0].loginChangeRoleVOList[0].roleId;
+            }
             this.$store.commit('user/setUserInfo', res.data);
             this.loading = false;
             this.$message.success(res.message);
@@ -156,7 +208,7 @@ export default {
     },
     /* 跳转到首页 */
     goHome() {
-      this.$router.push(this.$route?.query?.from ?? '/').catch(() => { });
+      this.$router.push(this.$route?.query?.from ?? '/').catch(() => {});
     },
     /* 更换图形验证码 */
     changeCaptcha() {
@@ -217,7 +269,7 @@ export default {
     margin: 0 0 25px 0;
   }
 
-  &>.el-form-item {
+  & > .el-form-item {
     margin-bottom: 25px;
   }
 }
@@ -310,7 +362,6 @@ export default {
 }
 
 @media screen and (max-width: 768px) {
-
   .login-form-right .login-form,
   .login-form-left .login-form {
     left: 50%;

+ 1 - 0
src/views/system/organization/components/org-user-edit.vue

@@ -1628,6 +1628,7 @@ export default {
           return (this.form.groupName = i.name);
         }
       });
+      console.log(this.form.groupName)
     },
     getLabelName(data, callback) {
       data.some((i) => {

+ 18 - 9
src/views/system/user/components/user-edit.vue

@@ -162,21 +162,30 @@ export default {
       this.$refs.addREf.open();
     },
     userBk(data) {
-      this.form.groupRolePOList = [];
-      if (data && data.deptIds) {
+      if (data) {
         this.form.name = data.name;
         this.form.mainUserId = data.id;
         this.form.jobNumber = data.jobNumber;
         this.form.phone = data.phone;
-
-        const deptNames = data.deptName.split('/');
-        data.deptIds.forEach((item, index) => {
+        this.form.groupRolePOList = [];
+        if (!data.deptIds.includes(data.groupId)) {
           this.form.groupRolePOList.push({
-            groupName: deptNames[index],
-            groupId: item,
+            groupName: data.groupName,
+            groupId: data.groupId,
             roleIds: []
           });
-        });
+        }
+
+        if (data.deptIds.length > 0) {
+          const deptNames = data.deptName.split('/');
+          data.deptIds.forEach((item, index) => {
+            this.form.groupRolePOList.push({
+              groupName: deptNames[index],
+              groupId: item,
+              roleIds: []
+            });
+          });
+        }
       }
     },
     /* 保存编辑 */
@@ -232,7 +241,7 @@ export default {
       if (visible) {
         if (this.data) {
           getById(this.data.id).then((res) => {
-            console.log(res,'res')
+            console.log(res, 'res');
             this.form = res.data;
             this.form.groupRolePOList = [];
             res.data.groupRoleList.forEach((item) => {