zzw
11 小时以前 ce841ddf85c48bae32f9e3068403fdfe98ac8711
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) ? '停用' : '正常' }}</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()