From ce841ddf85c48bae32f9e3068403fdfe98ac8711 Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期三, 07 十月 2026 12:35:09 +0800
Subject: [PATCH] feat: add extension defaults for fault reporting

---
 emergency-repair-web/src/views/system/OrganizationManage.vue |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/emergency-repair-web/src/views/system/OrganizationManage.vue b/emergency-repair-web/src/views/system/OrganizationManage.vue
index 519eb3c..0b455e3 100644
--- a/emergency-repair-web/src/views/system/OrganizationManage.vue
+++ b/emergency-repair-web/src/views/system/OrganizationManage.vue
@@ -39,14 +39,40 @@
         </el-table-column>
         <el-table-column prop="leader" label="璐熻矗浜�" width="120"></el-table-column>
         <el-table-column prop="phone" label="鑱旂郴鐢佃瘽" width="150"></el-table-column>
+        <el-table-column prop="responsibleXNo" label="璐熻矗rk_T" width="110" align="center">
+          <template slot-scope="{ row }">
+            <el-tag v-if="row.responsibleXNo" size="mini" type="success">{{ row.responsibleXNo }}</el-tag>
+            <span v-else class="muted">鏈缃�</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="orderNum" label="鎺掑簭" width="80" align="center"></el-table-column>
         <el-table-column label="鐘舵��" width="90" align="center">
           <template slot-scope="{ row }">
             <el-tag size="mini" :type="row.status === '1' ? 'info' : 'success'">{{ row.status === '1' ? '鍋滅敤' : '姝e父' }}</el-tag>
           </template>
         </el-table-column>
+        <el-table-column label="鎿嶄綔" width="120" align="center" fixed="right">
+          <template slot-scope="{ row }">
+            <el-button type="text" icon="el-icon-setting" v-permission="'system:organization:ext'" @click="openExt(row)">鎵╁睍灞炴��</el-button>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
+
+    <el-dialog :title="'鎵╁睍灞炴�ц缃� - ' + (currentDept.name || '')" :visible.sync="extVisible" width="520px" append-to-body :close-on-click-modal="false">
+      <el-form label-width="105px" v-loading="extLoading">
+        <el-form-item label="璐熻矗rk_T">
+          <el-select v-model="extForm.responsibleXNo" clearable filterable placeholder="璇烽�夋嫨rk_X鍙�" style="width:100%">
+            <el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option>
+          </el-select>
+          <div class="field-tip">璇ュ�兼柊澧炴晠闅滄椂浣滀负rk_X鍙烽粯璁ゅ�硷紝浠ラ儴闂ㄨ缃负鍑嗐��</div>
+        </el-form-item>
+      </el-form>
+      <template slot="footer">
+        <el-button @click="extVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" :loading="extSaving" @click="saveExt">淇濆瓨</el-button>
+      </template>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -58,7 +84,13 @@
       loading: false,
       rows: [],
       keyword: '',
-      deptType: ''
+      deptType: '',
+      extVisible: false,
+      extLoading: false,
+      extSaving: false,
+      currentDept: {},
+      extForm: { responsibleXNo: '' },
+      xNumbers: []
     }
   },
   computed: {
@@ -91,13 +123,35 @@
       return walk(this.tree)
     }
   },
-  created() { this.load() },
+  created() { this.load(); this.loadXNumbers() },
   methods: {
     load() {
       this.loading = true
       api.get('/system/depts').then(res => {
         this.rows = res.data || []
       }).finally(() => { this.loading = false })
+    },
+    loadXNumbers() {
+      api.get('/system/tree/product/x-numbers').then(res => { this.xNumbers = res.data || [] })
+    },
+    openExt(row) {
+      this.currentDept = { ...row }
+      this.extForm = { responsibleXNo: row.responsibleXNo || '' }
+      this.extVisible = true
+      this.extLoading = true
+      api.get('/system/depts/' + row.id + '/ext').then(res => {
+        const data = res.data || {}
+        this.extForm = { responsibleXNo: data.responsibleXNo || '' }
+      }).finally(() => { this.extLoading = false })
+    },
+    saveExt() {
+      if (!this.currentDept.id) return
+      this.extSaving = true
+      api.put('/system/depts/' + this.currentDept.id + '/ext', this.extForm).then(() => {
+        this.$message.success('鎵╁睍灞炴�ц缃垚鍔�')
+        this.extVisible = false
+        this.load()
+      }).finally(() => { this.extSaving = false })
     },
     buildTree(rows) {
       const nodes = rows.map(row => ({ ...row, children: [] }))
@@ -124,4 +178,6 @@
 </script>
 <style scoped>
 .summary { color: #6d7f91; font-size: 13px; }
+.muted { color: #a3afbc; font-size: 12px; }
+.field-tip { margin-top: 4px; color: #7b8a99; font-size: 12px; line-height: 18px; }
 </style>

--
Gitblit v1.9.1