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