From 26ebe244b9f52749d7b268ea03d069a5c999f0e1 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 03 七月 2026 10:18:36 +0800
Subject: [PATCH] 提交

---
 admin/src/components/business/OperaInternalCompanyWindow.vue |   98 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 93 insertions(+), 5 deletions(-)

diff --git a/admin/src/components/business/OperaInternalCompanyWindow.vue b/admin/src/components/business/OperaInternalCompanyWindow.vue
index b383ad0..4f7ae9a 100644
--- a/admin/src/components/business/OperaInternalCompanyWindow.vue
+++ b/admin/src/components/business/OperaInternalCompanyWindow.vue
@@ -25,6 +25,24 @@
               <el-radio :label="1"  v-if="sysConfig() && sysConfig().orgUserDataOrigin!=3">鍐呴儴缁勭粐</el-radio>
             </el-radio-group>
           </el-form-item>
+          <el-form-item label="瀵规帴閮ㄩ棬" prop="relationCompanyId" v-if="form.type === 0">
+            <treeselect
+              @input="changeSel"
+              v-model="form.relationCompanyId"
+              placeholder="璇烽�夋嫨"
+              :options="companyTree"
+              :normalizer="normalizeOptions"
+              :default-expand-level="1"
+              noChildrenText="娌℃湁瀛愰�夐」"
+              noOptionsText="娌℃湁鍙�夐」"
+              noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" />
+          </el-form-item>
+          <el-form-item label="瀵规帴浜哄憳" prop="relationUserId" v-if="form.type === 0">
+            <el-select v-model="form.relationUserId" clearable filterable placeholder="璇烽�夋嫨">
+              <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
         </el-form>
     </GlobalWindow>
 </template>
@@ -33,6 +51,8 @@
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
 import companySelect from '@/components/common/companySelect'
+import { allList } from '@/api/business/member'
+import { fetchList as companyTree } from '@/api/business/company'
 export default {
   name: 'OperaInternalCompanyWindow',
   extends: BaseOpera,
@@ -40,6 +60,9 @@
   data () {
     return {
       options: [],
+      memberList: [],
+      companyTree: [],
+      isInit: false,
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
@@ -48,7 +71,9 @@
         parentId: null,
         disable: false,
         parentName: '',
-        sortnum: ''
+        sortnum: '',
+        relationCompanyId: null,
+        relationUserId: null
       },
       editType: '',
       parentId: null,
@@ -79,12 +104,14 @@
     open (title, target, row, editType) {
       this.title = title
       this.editType = editType
+      this.isInit = false
       if (editType === 'edit') {
         this.parentId = row.parentId
       } else if (editType === 'add') {
         this.parentId = target.parentId
       }
       this.visible = true
+      this.getfindCompanyTreePage()
       this.form = {
         id: null,
         type: 0,
@@ -93,7 +120,9 @@
         disable: false,
         parentName: '',
         parentType: null,
-        sortnum: null
+        sortnum: null,
+        relationCompanyId: null,
+        relationUserId: null
       }
       if (target != null) {
         this.form.parentId = target.id
@@ -106,19 +135,74 @@
           this.$refs.form.resetFields()
           this.form[this.configData['field.id']] = null
           this.form.type = 0
+          this.isInit = true
         })
         return
       }
       // 缂栬緫
+      const savedRelationUserId = row.relationUserId
       this.$nextTick(() => {
         this.originPermissionCode = target.code
         for (const key in this.form) {
-          this.form[key] = row[key]
+          if (row[key] !== undefined) {
+            this.form[key] = row[key]
+          }
         }
         if (target.type == 0) {
           this.form.type = 0
         }
+
+        setTimeout(() => {
+          this.form.relationUserId = savedRelationUserId
+        }, 500)
+        
+        this.loadMember().then(() => {
+          this.isInit = true
+        })
       })
+    },
+    normalizeOptions (node) {
+      if (!node.childList || !node.childList.length) {
+        delete node.childList
+      }
+      return {
+        id: node.id,
+        label: node.name,
+        children: node.childList
+      }
+    },
+    changeSel () {
+      const { form } = this
+      if (form.relationCompanyId) {
+        this.loadMember().then(() => {
+          if (this.isInit) {
+            this.form.relationUserId = ''
+          }
+        })
+      }
+    },
+    getfindCompanyTreePage () {
+      companyTree(1)
+        .then(res => {
+          if (res && res.length > 0) {
+            this.companyTree = res
+          }
+        })
+    },
+    loadMember () {
+      const { form } = this
+      return allList({
+        type: 2,
+        companyId: form.relationCompanyId
+      })
+        .then(res => {
+          this.memberList = res
+        })
+        .catch(e => {
+        })
+        .finally(() => {
+          this.isWorking = false
+        })
     },
     // 纭鏂板缓/淇敼
     confirm () {
@@ -133,7 +217,9 @@
             parentId: this.form.parentId,
             name: this.form.name,
             type: this.form.type,
-            sortnum: this.form.sortnum
+            sortnum: this.form.sortnum,
+            relationCompanyId: this.form.relationCompanyId,
+            relationUserId: this.form.relationUserId
           })
             .then(() => {
               this.visible = false
@@ -152,7 +238,9 @@
             parentId: this.form.parentId,
             name: this.form.name,
             type: this.form.type,
-            sortnum: this.form.sortnum
+            sortnum: this.form.sortnum,
+            relationCompanyId: this.form.relationCompanyId,
+            relationUserId: this.form.relationUserId
           })
             .then(() => {
               this.visible = false

--
Gitblit v1.9.3