organizationEdit.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <el-drawer
  3. :title="item.name"
  4. :visible.sync="drawer"
  5. direction="rtl"
  6. >
  7. <div class="px-3">
  8. <el-tabs v-model="activeName">
  9. <el-tab-pane
  10. v-for="tab in tabs"
  11. :key="tab.name"
  12. :label="tab.label"
  13. :name="tab.name">
  14. <component :is="tab.path" :item="item" :key="key"></component>
  15. </el-tab-pane>
  16. </el-tabs>
  17. </div>
  18. </el-drawer>
  19. </template>
  20. <script>
  21. import {
  22. saveLabel,
  23. getOrganizationDetails
  24. } from '@/api/system'
  25. import organizationEditInfo from './organizationEditInfo.vue'
  26. import organizationEditLabel from './organizationEditLabel.vue'
  27. export default {
  28. name: 'organizationEdit',
  29. components: {
  30. organizationEditInfo,
  31. organizationEditLabel
  32. },
  33. data () {
  34. return {
  35. key: Date.now(),
  36. activeName: 'Info',
  37. tabs: [
  38. { label: '基本信息', name: 'Info', path: organizationEditInfo },
  39. { label: '标注管理', name: 'Label', path: organizationEditLabel }
  40. ],
  41. drawer: false,
  42. item: {}
  43. }
  44. },
  45. methods: {
  46. async open (nodes) {
  47. try {
  48. const { data } = await getOrganizationDetails({
  49. organizationNo: nodes.id
  50. })
  51. this.item = {
  52. ...nodes,
  53. origin: data
  54. }
  55. this.activeName = 'Info'
  56. this.key = Date.now()
  57. this.drawer = true
  58. } catch (error) {
  59. this.$message.error(error)
  60. }
  61. },
  62. async onSure () {
  63. try {
  64. await saveLabel({
  65. labelEntityId: this.item.id,
  66. labelType: 0,
  67. labelTitle: this.formValues.tags.map(e => e.value)
  68. })
  69. this.$emit('success')
  70. } catch (error) {
  71. this.$message.error(error)
  72. }
  73. }
  74. }
  75. }
  76. </script>
  77. <style lang="scss" scoped>
  78. </style>