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/UserManage.vue | 65 ++++++++++++++++++++++++++++++++
1 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/emergency-repair-web/src/views/system/UserManage.vue b/emergency-repair-web/src/views/system/UserManage.vue
index 2e3c9a5..0cc4acf 100644
--- a/emergency-repair-web/src/views/system/UserManage.vue
+++ b/emergency-repair-web/src/views/system/UserManage.vue
@@ -39,6 +39,11 @@
</template>
</el-table-column>
<el-table-column prop="phoneNumber" label="鎵嬫満鍙�" width="130"></el-table-column>
+ <el-table-column label="鎵╁睍灞炴��" width="100" align="center">
+ <template slot-scope="{ row }">
+ <el-button type="text" v-permission="'system:users:ext'" @click="openExt(row)">{{ row.extConfigured ? '缂栬緫' : '璁剧疆' }}</el-button>
+ </template>
+ </el-table-column>
<el-table-column label="鐘舵��" width="80" align="center">
<template slot-scope="{ row }">
<el-tag size="mini" :type="isDisabled(row) ? 'info' : 'success'">{{ isDisabled(row) ? '鍋滅敤' : '姝e父' }}</el-tag>
@@ -99,6 +104,29 @@
<el-button type="primary" :loading="batchSaving" v-permission="'system:users:assign'" @click="saveBatchRoles">淇濆瓨</el-button>
</span>
</el-dialog>
+ <el-dialog :title="'鐢ㄦ埛鎵╁睍灞炴�ц缃� - ' + ((currentExtUser.nickName || currentExtUser.userName) || '')" :visible.sync="extVisible" width="560px" append-to-body :close-on-click-modal="false">
+ <el-form label-width="105px" v-loading="extLoading">
+ <el-form-item label="宸ョ▼涓撲笟">
+ <el-select v-model="extForm.engineeringMajor" clearable filterable placeholder="璇烽�夋嫨宸ョ▼涓撲笟" 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-form-item label="rk_T闃熶笓涓�">
+ <el-select v-model="extForm.teamMajor" clearable filterable placeholder="璇烽�夋嫨rk_T闃熶笓涓�" 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-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>
+ </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>
@@ -122,12 +150,21 @@
roles: [],
selected: null,
checkedRoleIds: [],
+ extVisible: false,
+ extLoading: false,
+ extSaving: false,
+ currentExtUser: {},
+ extForm: { engineeringMajor: '', teamMajor: '', responsibleXNo: '' },
+ engineeringMajors: [],
+ teamMajors: [],
+ xNumbers: [],
filters: { keyword: '', deptId: null, roleId: null }
}
},
created() {
this.loadRoles()
this.loadDepts()
+ this.loadExtOptions()
this.load()
},
methods: {
@@ -159,6 +196,34 @@
loadDepts() {
api.get('/system/depts').then(res => { this.depts = res.data || [] })
},
+ loadExtOptions() {
+ api.get('/system/engineering-majors').then(res => { this.engineeringMajors = res.data || [] })
+ api.get('/system/team-majors').then(res => { this.teamMajors = res.data || [] })
+ api.get('/system/tree/product/x-numbers').then(res => { this.xNumbers = res.data || [] })
+ },
+ openExt(row) {
+ this.currentExtUser = { ...row }
+ this.extForm = { engineeringMajor: '', teamMajor: '', responsibleXNo: '' }
+ this.extVisible = true
+ this.extLoading = true
+ api.get('/system/users/' + row.userId + '/ext').then(res => {
+ const data = res.data || {}
+ this.extForm = {
+ engineeringMajor: data.engineeringMajor || '',
+ teamMajor: data.teamMajor || '',
+ responsibleXNo: data.responsibleXNo || ''
+ }
+ }).finally(() => { this.extLoading = false })
+ },
+ saveExt() {
+ if (!this.currentExtUser.userId) return
+ this.extSaving = true
+ api.put('/system/users/' + this.currentExtUser.userId + '/ext', this.extForm).then(() => {
+ this.$message.success('鎵╁睍灞炴�ц缃垚鍔�')
+ this.extVisible = false
+ this.load()
+ }).finally(() => { this.extSaving = false })
+ },
search() {
this.current = 1
this.load()
--
Gitblit v1.9.1