groupDetail.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <template>
  2. <view class="page">
  3. <view>
  4. <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm">
  5. <u-form-item prop="name" borderBottom>
  6. <view class="item">
  7. <view class="flex-row input">
  8. <text class="key">分组名称:</text>
  9. <u--input disabled v-model="form.name" placeholder="请输入分组名称" border="none"></u--input>
  10. </view>
  11. </view>
  12. </u-form-item>
  13. <u-form-item prop="userName" borderBottom>
  14. <view class="item">
  15. <view class="flex-row input">
  16. <text class="key">负责人:</text>
  17. <u--input v-model="form.userName" disabled placeholder="请选择负责人" border="none"></u--input>
  18. </view>
  19. </view>
  20. </u-form-item>
  21. <u-form-item borderBottom>
  22. <view class="item">
  23. <view class="flex-row justify-between input" @click="openSelectMember">
  24. <text class="key">选择分组成员</text>
  25. <!-- <u&#45;&#45;input disabled placeholder="请选择分组成员" border="none"></u&#45;&#45;input>-->
  26. <u-icon name="arrow-right"></u-icon>
  27. </view>
  28. </view>
  29. </u-form-item>
  30. </u--form>
  31. <view class="members">
  32. <view class="membersTitle ">
  33. <text>已选择的分组成员</text>
  34. </view>
  35. <scroll-view scroll-y class="scroll-y" >
  36. <view class="flex-row justify-between member" v-for="(item,index) in groupUserList">
  37. <view class="flex-row">
  38. <u-icon name="account-fill" size="24"></u-icon>
  39. <text class="name">{{item.userName}}</text>
  40. <text class="name">{{item.userPhone}}</text>
  41. </view>
  42. <view>
  43. <u-icon name="trash" size="24" @click="delItem(item,index)"></u-icon>
  44. </view>
  45. </view>
  46. </scroll-view>
  47. </view>
  48. </view>
  49. <view class="addGroup" @click="updateGroupUser">
  50. <text>提交</text>
  51. </view>
  52. <uni-popup ref="selectPersonPopup" type="bottom">
  53. <view class="selectMemberPopup">
  54. <view class="flex-row justify-around popupTitle">
  55. <text @click="closePopup">取消</text>
  56. <text>选择分组成员</text>
  57. <text @click="getSelectPerson">确定</text>
  58. </view>
  59. <view class="scroll-y-view" v-if="noGroupUserList.length>0">
  60. <view class="flex-row justify-between member" v-for="(item,index) in noGroupUserList" :key="index" @click="selectItem(item,index)">
  61. <view class="flex-row">
  62. <text class="name">{{item.userName}}</text>
  63. <text class="name">{{item.userPhone}}</text>
  64. </view>
  65. <u-icon name="checkbox-mark" color="#FFE05C" size="24" v-if="item.select"></u-icon>
  66. </view>
  67. </view>
  68. <view class="dataNull" v-else>
  69. <view>
  70. <image :src="'/static/dataNull.png'"></image>
  71. </view>
  72. <text>暂无可选人员</text>
  73. </view>
  74. </view>
  75. </uni-popup>
  76. </view>
  77. </template>
  78. <script>
  79. export default {
  80. components: {
  81. },
  82. data() {
  83. return {
  84. groupUserList:[],
  85. noGroupUserList:[],
  86. height: '',
  87. form:{
  88. id:'',
  89. name:'',
  90. userId:'',
  91. userName:''
  92. },
  93. rules: {
  94. 'groupName': {
  95. type: 'string',
  96. required: true,
  97. min:1,
  98. message: '请输入分组名称',
  99. trigger: ['blur', 'change']
  100. }
  101. },
  102. }
  103. },
  104. onLoad(e) {
  105. let item = JSON.parse(e.item)
  106. this.form.id = item.id
  107. this.form.name = item.name
  108. this.form.userId = item.userId
  109. this.form.userName = item.userName
  110. this.getGroupUserList(item.id)
  111. this.getNoGroupUserList()
  112. let sysInfo = uni.getSystemInfoSync()
  113. this.height = sysInfo.windowHeight - 120 + 'px' //除标题栏栏外的屏幕可用高度
  114. },
  115. methods: {
  116. updateGroupUser(){
  117. this.$api.service.updateGroupUser({
  118. groupId:this.form.id,
  119. list:this.groupUserList
  120. }).then(res=>{
  121. uni.showToast({
  122. icon: 'success',
  123. title: '修改成功',
  124. duration: 2000
  125. });
  126. setTimeout(()=>{{
  127. this.back()
  128. }},2000)
  129. console.log('+++++updateGroupUser+++++++',res)
  130. })
  131. },
  132. delItem(item,index){
  133. item.select=false
  134. this.noGroupUserList.push(item)
  135. this.groupUserList.splice(index,1)
  136. },
  137. getSelectPerson(){
  138. this.closePopup()
  139. this.noGroupUserList = this.noGroupUserList.filter(item=>{
  140. if (item.select){
  141. this.groupUserList.push(item)
  142. }
  143. return !item.select
  144. })
  145. },
  146. selectItem(item,index){
  147. item.select = !item.select
  148. this.$set(this.noGroupUserList,index,item)
  149. },
  150. getNoGroupUserList(){
  151. this.$api.service.getNoGroupUserList().then(res=>{
  152. console.log(res.data)
  153. this.noGroupUserList = res.data.data
  154. })
  155. },
  156. getGroupUserList(id){
  157. this.$api.service.getGroupUserList({
  158. groupId:id
  159. }).then(res=>{
  160. console.log(res.data)
  161. this.groupUserList = res.data.data
  162. })
  163. },
  164. back() {
  165. uni.navigateBack({
  166. delta: 1
  167. })
  168. },
  169. openSelectMember(){
  170. this.$refs.selectPersonPopup.open()
  171. },
  172. closePopup(){
  173. this.$refs.selectPersonPopup.close()
  174. }
  175. }
  176. }
  177. </script>
  178. <style lang="scss" scoped>
  179. @import './index.rpx.css';
  180. </style>