From 82d07d97089bfe91a369d7bddd4ec09245e45923 Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期三, 07 十月 2026 12:44:35 +0800
Subject: [PATCH] feat: show user extension attributes in list

---
 emergency-repair-web/src/views/fault/FaultReport.vue |   68 +++++++++++++++------------------
 1 files changed, 31 insertions(+), 37 deletions(-)

diff --git a/emergency-repair-web/src/views/fault/FaultReport.vue b/emergency-repair-web/src/views/fault/FaultReport.vue
index 4c13110..778314b 100644
--- a/emergency-repair-web/src/views/fault/FaultReport.vue
+++ b/emergency-repair-web/src/views/fault/FaultReport.vue
@@ -3,17 +3,17 @@
     <div class="page-title">
       <div>
         <h2>鏁呴殰涓婃姤</h2>
-        <p>T鍛樺綍鍏ヨ澶囦俊鎭拰淇悊瑕佹眰锛屾晠闅滅紪鍙蜂繚瀛樺悗鎸夎鍒欒嚜鍔ㄧ敓鎴�</p>
+        <p>rk_T鍛樺綍鍏ヨ澶囦俊鎭拰淇悊瑕佹眰锛屾晠闅滅紪鍙蜂繚瀛樺悗鎸夎鍒欒嚜鍔ㄧ敓鎴�</p>
       </div>
       <el-button icon="el-icon-plus" type="primary" @click="openCreate">鏂板鏁呴殰</el-button>
     </div>
 
     <div class="toolbar query-toolbar">
-      <span class="filter-label">X鍙�</span>
+      <span class="filter-label">rk_X鍙�</span>
       <el-select v-model="query.xNo" placeholder="鍏ㄩ儴" clearable style="width:100px">
         <el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option>
       </el-select>
-      <span class="filter-label">T闃熶笓涓�</span>
+      <span class="filter-label">rk_T闃熶笓涓�</span>
       <el-select v-model="query.teamMajor" placeholder="鍏ㄩ儴" clearable style="width:130px">
         <el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option>
       </el-select>
@@ -40,7 +40,7 @@
       <el-select v-model="query.status" placeholder="鍏ㄩ儴" clearable style="width:160px">
         <el-option v-for="(meta, key) in taskStatuses" :key="key" :label="meta.text" :value="key"></el-option>
       </el-select>
-      <el-input v-model="query.keyword" placeholder="鏁呴殰缂栧彿/瑁呭鍚嶇О/宸ョ▼鍚嶇О鍙婃崯鍧忔儏鍐�" clearable style="width:320px" @keyup.enter.native="search"></el-input>
+      <el-input v-model="query.keyword" placeholder="鏁呴殰缂栧彿/璁惧鍚嶇О/宸ョ▼鍚嶇О鍙婃崯鍧忔儏鍐�" clearable style="width:320px" @keyup.enter.native="search"></el-input>
       <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
       <el-button icon="el-icon-refresh-left" @click="resetQuery">閲嶇疆</el-button>
       <el-button icon="el-icon-refresh" @click="load">鍒锋柊</el-button>
@@ -62,13 +62,13 @@
           <template slot-scope="{ row }"><el-tag size="mini" :type="taskMeta(row.taskStatus).type">{{ taskMeta(row.taskStatus).text }}</el-tag></template>
         </el-table-column>
         <el-table-column prop="faultCode" label="鏁呴殰缂栧彿" width="180" fixed></el-table-column>
-        <el-table-column prop="xNo" label="X鍙�" width="64"></el-table-column>
-        <el-table-column prop="equipmentName" label="瑁呭鍚嶇О" min-width="210" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="xNo" label="rk_X鍙�" width="64"></el-table-column>
+        <el-table-column prop="equipmentName" label="璁惧鍚嶇О" min-width="210" show-overflow-tooltip></el-table-column>
         <el-table-column prop="parentSystem" label="鎵�灞炰笂绾х郴缁�" min-width="120"></el-table-column>
         <el-table-column prop="engineeringNameDesc" label="宸ョ▼鍚嶇О鍙婃崯鍧忔儏鍐�" min-width="210" show-overflow-tooltip></el-table-column>
         <el-table-column prop="repairRequirement" label="淇悊鎶�鏈姹�" min-width="200" show-overflow-tooltip></el-table-column>
         <el-table-column prop="engineeringMajor" label="宸ョ▼涓撲笟" width="100"></el-table-column>
-        <el-table-column prop="teamMajor" label="T闃熶笓涓�" width="100"></el-table-column>
+        <el-table-column prop="teamMajor" label="rk_T闃熶笓涓�" width="100"></el-table-column>
         <el-table-column prop="owner" label="璐熻矗浜�" width="90"></el-table-column>
         <el-table-column prop="reportUnit" label="涓婃姤鍗曚綅" min-width="130"></el-table-column>
         <el-table-column prop="reportDate" label="涓婃姤鏃ユ湡" width="110" align="center"></el-table-column>
@@ -78,7 +78,7 @@
         <el-table-column label="鏄惁鑷慨" width="90" align="center">
           <template slot-scope="{ row }">{{ yesNo(row.isSelfRepair) }}</template>
         </el-table-column>
-        <el-table-column label="鏄惁娑塇" width="90" align="center">
+        <el-table-column label="鏄惁娑塺k_H" width="90" align="center">
           <template slot-scope="{ row }">{{ yesNo(row.isHRelated) }}</template>
         </el-table-column>
         <el-table-column label="鐩戞祴椤圭洰" width="90" align="center">
@@ -109,14 +109,14 @@
           <el-col :span="8"><el-form-item label="鏁呴殰缂栧彿"><el-input v-model="form.faultCode" readonly placeholder="淇濆瓨鍚庤嚜鍔ㄧ敓鎴�"></el-input></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="涓婃姤鍗曚綅"><el-input v-model="form.reportUnit"></el-input></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="涓婃姤鏃ユ湡"><el-date-picker v-model="form.reportDate" type="date" value-format="yyyy-MM-dd" style="width:100%"></el-date-picker></el-form-item></el-col>
-          <el-col :span="8"><el-form-item label="X鍙�"><el-select v-model="form.xNo" filterable placeholder="璇烽�夋嫨X鍙�" style="width:100%"><el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option></el-select></el-form-item></el-col>
+          <el-col :span="8"><el-form-item label="rk_X鍙�"><el-select v-model="form.xNo" filterable placeholder="璇烽�夋嫨rk_X鍙�" style="width:100%"><el-option v-for="item in xNumbers" :key="item" :label="item" :value="item"></el-option></el-select></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="璐熻矗浜�"><el-input v-model="form.owner"></el-input></el-form-item></el-col>
-          <el-col :span="8"><el-form-item label="T闃熶笓涓�"><el-select v-model="form.teamMajor" style="width:100%"><el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col>
+          <el-col :span="8"><el-form-item label="rk_T闃熶笓涓�"><el-select v-model="form.teamMajor" style="width:100%"><el-option v-for="item in teamMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="宸ョ▼涓撲笟"><el-select v-model="form.engineeringMajor" style="width:100%"><el-option v-for="item in engineeringMajors" :key="item.id" :label="item.name" :value="item.name"></el-option></el-select></el-form-item></el-col>
           <el-col :span="16">
-            <el-form-item label="瑁呭鍚嶇О" prop="equipmentName">
+            <el-form-item label="璁惧鍚嶇О" prop="equipmentName">
               <el-input v-model="form.equipmentName" readonly :title="form.equipmentName" placeholder="鐐瑰嚮鍙充晶鎸夐挳浠庝骇鍝佺粨鏋勬爲閫夎澶囷紝鍙閫�">
-                <el-button slot="append" icon="el-icon-s-grid" @click="pickerVisible = true">閫夋嫨瑁呭</el-button>
+                <el-button slot="append" icon="el-icon-s-grid" @click="pickerVisible = true">閫夋嫨璁惧</el-button>
               </el-input>
               <div v-if="selectedEquipmentIds.length" class="field-tip">宸查�� {{ selectedEquipmentIds.length }} 鍙拌澶�</div>
             </el-form-item>
@@ -129,7 +129,7 @@
           <el-col :span="8"><el-form-item label="鏄惁鑷慨"><el-switch v-model="form.isSelfRepair" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col>
         </el-row>
         <el-row :gutter="16">
-          <el-col :span="8"><el-form-item label="鏄惁娑塇"><el-switch v-model="form.isHRelated" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col>
+          <el-col :span="8"><el-form-item label="鏄惁娑塺k_H"><el-switch v-model="form.isHRelated" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="鏄惁鐩戞祴椤圭洰"><el-switch v-model="form.isMonitorItem" :active-value="1" :inactive-value="0"></el-switch></el-form-item></el-col>
           <el-col :span="8"><el-form-item label="鐩戞祴鏁板��"><el-input v-model="form.monitorValue" :disabled="form.isMonitorItem !== 1"></el-input></el-form-item></el-col>
           <el-col :span="24"><el-form-item label="閲嶅ぇ鏁呴殰鎻忚堪"><el-input v-model="form.majorFaultDesc" type="textarea" :rows="2"></el-input></el-form-item></el-col>
@@ -171,7 +171,7 @@
       natures: ['涓�鑸�', '閲嶅ぇ'],
       form: {},
       rules: {
-        equipmentName: [{ required: true, message: '璇烽�夋嫨瑁呭鍚嶇О', trigger: 'change' }],
+        equipmentName: [{ required: true, message: '璇烽�夋嫨璁惧鍚嶇О', trigger: 'change' }],
         engineeringNameDesc: [{ required: true, message: '璇峰~鍐欏伐绋嬪悕绉板強鎹熷潖鎯呭喌', trigger: 'blur' }]
       }
     }
@@ -193,37 +193,28 @@
     taskMeta(value) { return statusMeta(taskStatuses, value) },
     yesNo(value) { return Number(value) === 1 ? '\u662f' : '\u5426' },
     loadAccountInfo() {
-      if (sessionStorage.getItem('deptName') !== null) return
-      api.get('/auth/me').then(res => {
+      return api.get('/auth/me').then(res => {
         const info = res.data || {}
         sessionStorage.setItem('realName', info.realName || sessionStorage.getItem('realName') || '')
         sessionStorage.setItem('deptName', info.deptName || '')
-        if (this.form && !this.form.id && !this.form.reportUnit) this.form.reportUnit = info.deptName || ''
+        sessionStorage.setItem('userId', info.userId || '')
+        sessionStorage.setItem('deptId', info.deptId || '')
+        sessionStorage.setItem('engineeringMajor', info.engineeringMajor || '')
+        sessionStorage.setItem('teamMajor', info.teamMajor || '')
+        sessionStorage.setItem('deptResponsibleXNo', info.deptResponsibleXNo || '')
+        sessionStorage.setItem('responsibleXNo', info.responsibleXNo || '')
       })
     },
     loadMajors() {
       api.get('/system/team-majors').then(res => {
         this.teamMajors = res.data || []
-        if (!this.form.teamMajor && this.teamMajors.length) this.form.teamMajor = this.teamMajors[0].name
       })
       api.get('/system/engineering-majors').then(res => {
         this.engineeringMajors = res.data || []
-        if (!this.form.engineeringMajor && this.engineeringMajors.length) this.form.engineeringMajor = this.engineeringMajors[0].name
       })
     },
     loadXNumbers() {
-      api.get('/system/tree', { params: { type: 'product' } }).then(res => {
-        const values = []
-        const walk = nodes => {
-          if (!nodes) return
-          nodes.forEach(node => {
-            if (node.nodeType === 'X_NO' || node.nodeLevel === 2) values.push(node.name)
-            walk(node.children)
-          })
-        }
-        walk(res.data)
-        this.xNumbers = Array.from(new Set(values.filter(Boolean))).sort((a, b) => a.localeCompare(b, 'zh-CN'))
-      })
+      api.get('/system/tree/product/x-numbers').then(res => { this.xNumbers = res.data || [] })
     },
     queryParams() {
       const range = this.query.reportDateRange || []
@@ -281,10 +272,10 @@
         faultCode: '',
         reportUnit: sessionStorage.getItem('deptName') || '',
         reportDate: today,
-        xNo: '',
-        owner: sessionStorage.getItem('realName') || 'T鍛�',
-        teamMajor: (this.teamMajors[0] || {}).name || '',
-        engineeringMajor: (this.engineeringMajors[0] || {}).name || '',
+        xNo: sessionStorage.getItem('deptResponsibleXNo') || '',
+        owner: sessionStorage.getItem('realName') || '',
+        teamMajor: sessionStorage.getItem('teamMajor') || '',
+        engineeringMajor: sessionStorage.getItem('engineeringMajor') || '',
         equipmentIds: '',
         equipmentName: '',
         parentSystem: '',
@@ -301,7 +292,10 @@
         remark: ''
       }
     },
-    openCreate() {
+    async openCreate() {
+      try {
+        await this.loadAccountInfo()
+      } catch (e) {}
       this.form = this.blankForm()
       this.dialogVisible = true
     },
@@ -361,7 +355,7 @@
     exportCsv() {
       api.get('/faults', { params: this.queryParams() }).then(res => {
         const rows = res.data || []
-        const headers = ['鏁呴殰缂栧彿', 'X鍙�', '瑁呭鍚嶇О', '浠诲姟鐘舵��', '宸ョ▼鍚嶇О鍙婃崯鍧忔儏鍐�', '涓婃姤鍗曚綅', '涓婃姤鏃ユ湡']
+        const headers = ['鏁呴殰缂栧彿', 'rk_X鍙�', '璁惧鍚嶇О', '浠诲姟鐘舵��', '宸ョ▼鍚嶇О鍙婃崯鍧忔儏鍐�', '涓婃姤鍗曚綅', '涓婃姤鏃ユ湡']
         const lines = [headers.join(',')].concat(rows.map(row => [
           row.faultCode, row.xNo, row.equipmentName, this.taskMeta(row.taskStatus).text,
           row.engineeringNameDesc, row.reportUnit, row.reportDate

--
Gitblit v1.9.1