index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <template>
  2. <div>
  3. <div class="flex-align-stretch">
  4. <group ref="grouplist" @setGroupData="setGroupData" @clickGroup="clickGroup">
  5. <add-contact :tagList="tagList" v-if="tool.checkAuth($route.name,'addContact')" slot="addContact" :group="group" @onAddSuccess="onAddSuccess"></add-contact>
  6. <add-group v-if="tool.checkAuth($route.name,'addGroup')" slot="addGroup" @onSuccess="onAddSuccess"></add-group>
  7. <template v-slot:edit="scope">
  8. <editGroup v-if="tool.checkAuth($route.name,'editGroup')" :data="scope.data" @onSuccess="onAddSuccess"></editGroup>
  9. </template>
  10. <template v-slot:del="scope">
  11. <delGroup v-if="tool.checkAuth($route.name,'deleteGroup')" :data="scope.data" @onSuccess="onAddSuccess"></delGroup>
  12. </template>
  13. </group>
  14. <contacts style="flex:1 0 auto" :data="activeGroupData" @clickContacts="clickContacts" @filtetContacts="filtetContacts"></contacts>
  15. <detail :activeContactsData="activeContactsData">
  16. <template v-slot:edit="data">
  17. <edit :tagList="tagList" v-if="tool.checkAuth($route.name,'update') && data.data.groupname != '客户联系人' && data.data.groupname != '项目联系人'" :data="data" :group="group" @onEditSuccess="onEditSuccess"></edit>
  18. </template>
  19. <template v-slot:del="data">
  20. <ondel v-if="tool.checkAuth($route.name,'delete') && data.data.groupname != '客户联系人' && data.data.groupname != '项目联系人'" :data="data" @onDelSuccess="onDelSuccess"></ondel>
  21. </template>
  22. </detail>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import addContact from './modules/addContact.vue'
  28. import addGroup from './modules/addGroup.vue'
  29. import group from './modules/group.vue'
  30. import contacts from './modules/contacts.vue'
  31. import detail from './modules/detail.vue'
  32. import edit from './modules/edit.vue'
  33. import editGroup from './modules/editGroup.vue'
  34. import delGroup from './modules/delGroup.vue'
  35. import ondel from './modules/del.vue'
  36. export default {
  37. components:{
  38. addContact,
  39. addGroup,
  40. group,
  41. contacts,
  42. detail,
  43. ondel,
  44. edit,
  45. editGroup,
  46. delGroup
  47. },
  48. data () {
  49. return {
  50. group:[],
  51. activeGroupData:[],
  52. activeContactsData:null,
  53. tagList:[],
  54. allData:[]
  55. }
  56. },
  57. methods:{
  58. onAddSuccess () {
  59. this.$refs['grouplist'].listData(()=>{
  60. let arr = []
  61. arr = [...this.$refs['grouplist'].sysGroup,...this.$refs['grouplist'].myGroup]
  62. this.allData = arr
  63. console.log(this.allData,'所有数据');
  64. this.activeGroupData = arr.filter(e=>{return e.rowindex === this.activeGroupData.rowindex})[0]
  65. this.activeContactsData = this.activeGroupData.phonebook.filter(e=>{return e.rowindex === this.activeContactsData.rowindex})[0]
  66. })
  67. },
  68. onEditSuccess (form) {
  69. this.$refs['grouplist'].listData()
  70. this.activeContactsData = Object.assign({},this.activeContactsData,form)
  71. this.activeGroupData.phonebook = this.activeGroupData.phonebook.map(e=>{
  72. if (e.rowindex === form.rowindex) {
  73. e = Object.assign({},e,form)
  74. }
  75. return e
  76. })
  77. },
  78. setGroupData (val) {
  79. this.group = val
  80. console.log(this.group,'group')
  81. },
  82. clickGroup (val,allData) {
  83. this.activeGroupData = val
  84. this.activeContactsData = null
  85. this.allData = allData
  86. },
  87. clickContacts (val) {
  88. this.activeContactsData = val
  89. },
  90. onDelSuccess (id) {
  91. this.activeGroupData.phonebook = this.activeGroupData.phonebook.filter(e=>{
  92. return e.sys_phonebookid !== id
  93. })
  94. this.activeContactsData = null
  95. // this.$refs['grouplist'].listData()
  96. },
  97. filtetContacts (type,val) {
  98. this.activeGroupData = []
  99. let allData = []
  100. this.allData.map(item => item.phonebook).forEach(item2 => {
  101. allData.push(...item2)
  102. })
  103. if (type === 'name') {
  104. this.activeGroupData.phonebook = allData.filter(e=>{
  105. return e.name === val
  106. })
  107. } else if (type === 'phonenumber') {
  108. this.activeGroupData.phonebook = allData.filter(e=>{
  109. return e.phonenumber === val
  110. })
  111. } else {
  112. this.onAddSuccess()
  113. }
  114. },
  115. async getTagList () {
  116. let res = await this.$api.requested({
  117. "id": 20220929085401,
  118. "content": {
  119. "ownertable":"sys_phonebook",
  120. "ownerid":102
  121. }
  122. })
  123. this.tagList = res.data.option
  124. }
  125. },
  126. mounted () {
  127. this.getTagList()
  128. }
  129. }
  130. </script>
  131. <style>
  132. </style>