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 |  144 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 127 insertions(+), 17 deletions(-)

diff --git a/admin/src/components/business/OperaInternalCompanyWindow.vue b/admin/src/components/business/OperaInternalCompanyWindow.vue
index 6445653..4f7ae9a 100644
--- a/admin/src/components/business/OperaInternalCompanyWindow.vue
+++ b/admin/src/components/business/OperaInternalCompanyWindow.vue
@@ -15,11 +15,33 @@
             <el-form-item label="缁勭粐鍚嶇О" prop="name">
                 <el-input v-model="form.name" placeholder="璇疯緭鍏ョ粍缁囧悕绉�" v-trim/>
             </el-form-item>
-          <el-form-item label="缁勭粐绫诲瀷" prop="type">
-            <el-radio-group v-model="form.type" >
+            <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+                <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+            </el-form-item>
+          <el-form-item label="缁勭粐绫诲瀷" prop="type" v-if="(editType === 'edit' && parentId) || (editType === 'add')" >
+<!--              :disabled="(editType === 'edit') || (!!(editType === 'add' && parentId))"-->
+            <el-radio-group v-model="form.type">
               <el-radio :label="0">鐩稿叧鏂圭粍缁�</el-radio>
-              <el-radio :label="1">鍐呴儴缁勭粐</el-radio>
+              <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>
@@ -29,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,
@@ -36,15 +60,23 @@
   data () {
     return {
       options: [],
+      memberList: [],
+      companyTree: [],
+      isInit: false,
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
-        type: '0',
+        type: 0,
         name: '',
         parentId: null,
         disable: false,
-        parentName: ''
+        parentName: '',
+        sortnum: '',
+        relationCompanyId: null,
+        relationUserId: null
       },
+      editType: '',
+      parentId: null,
       // 楠岃瘉瑙勫垯
       rules: {
         name: [
@@ -61,6 +93,7 @@
       type: Array
     }
   },
+  inject: ['sysConfig'],
   created () {
     this.config({
       api: '/business/company.js',
@@ -68,37 +101,108 @@
     })
   },
   methods: {
-    open(title,target,row){
-      this.title =title
-      this.visible =true
-      console.log(target)
-      this.form= {
+    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,
         name: '',
         parentId: null,
         disable: false,
-        parentName: ''
+        parentName: '',
+        parentType: null,
+        sortnum: null,
+        relationCompanyId: null,
+        relationUserId: null
       }
       if (target != null) {
         this.form.parentId = target.id
-        this.form.parentName = target.companyPath
+        this.form.parentType = target.type >= 0 ? target.type : 0
+        this.form.parentName = target.companyNamePath
       }
       // 鏂板缓缁勭粐
       if (row == null) {
         this.$nextTick(() => {
           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 () {
@@ -112,7 +216,10 @@
           this.api.create({
             parentId: this.form.parentId,
             name: this.form.name,
-            type: this.form.type
+            type: this.form.type,
+            sortnum: this.form.sortnum,
+            relationCompanyId: this.form.relationCompanyId,
+            relationUserId: this.form.relationUserId
           })
             .then(() => {
               this.visible = false
@@ -120,7 +227,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              //  this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false
@@ -130,7 +237,10 @@
             id: this.form.id,
             parentId: this.form.parentId,
             name: this.form.name,
-            type: this.form.type
+            type: this.form.type,
+            sortnum: this.form.sortnum,
+            relationCompanyId: this.form.relationCompanyId,
+            relationUserId: this.form.relationUserId
           })
             .then(() => {
               this.visible = false
@@ -138,7 +248,7 @@
               this.$emit('success')
             })
             .catch(e => {
-              this.$tip.apiFailed(e)
+              // this.$tip.apiFailed(e)
             })
             .finally(() => {
               this.isWorking = false

--
Gitblit v1.9.3