groupDetail.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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. <!--#ifdef H5-->
  53. <liu-drag-button @clickBtn="back">返回</liu-drag-button>
  54. <!--#endif-->
  55. <uni-popup ref="selectPersonPopup" type="bottom">
  56. <view class="selectMemberPopup">
  57. <view class="flex-row justify-around popupTitle">
  58. <text @click="closePopup">取消</text>
  59. <text>选择分组成员</text>
  60. <text @click="getSelectPerson">确定</text>
  61. </view>
  62. <view class="scroll-y-view" v-if="noGroupUserList.length>0">
  63. <view class="flex-row justify-between member" v-for="(item,index) in noGroupUserList" :key="index" @click="selectItem(item,index)">
  64. <view class="flex-row">
  65. <text class="name">{{item.userName}}</text>
  66. <text class="name">{{item.userPhone}}</text>
  67. </view>
  68. <u-icon name="checkbox-mark" color="#FFE05C" size="24" v-if="item.select"></u-icon>
  69. </view>
  70. </view>
  71. <view class="dataNull" v-else>
  72. <view>
  73. <image :src="'/static/dataNull.png'"></image>
  74. </view>
  75. <text>暂无可选人员</text>
  76. </view>
  77. </view>
  78. </uni-popup>
  79. </view>
  80. </template>
  81. <script>
  82. export default {
  83. components: {
  84. },
  85. data() {
  86. return {
  87. groupUserList:[],
  88. noGroupUserList:[],
  89. height: '',
  90. form:{
  91. id:'',
  92. name:'',
  93. userId:'',
  94. userName:''
  95. },
  96. rules: {
  97. 'groupName': {
  98. type: 'string',
  99. required: true,
  100. min:1,
  101. message: '请输入分组名称',
  102. trigger: ['blur', 'change']
  103. }
  104. },
  105. }
  106. },
  107. onLoad(e) {
  108. let item = JSON.parse(e.item)
  109. this.form.id = item.id
  110. this.form.name = item.name
  111. this.form.userId = item.userId
  112. this.form.userName = item.userName
  113. this.getGroupUserList(item.id)
  114. this.getNoGroupUserList()
  115. let sysInfo = uni.getSystemInfoSync()
  116. this.height = sysInfo.windowHeight - 120 + 'px' //除标题栏栏外的屏幕可用高度
  117. },
  118. methods: {
  119. updateGroupUser(){
  120. this.$api.service.updateGroupUser({
  121. groupId:this.form.id,
  122. list:this.groupUserList
  123. }).then(res=>{
  124. uni.showToast({
  125. icon: 'success',
  126. title: '修改成功',
  127. duration: 2000
  128. });
  129. setTimeout(()=>{{
  130. this.back()
  131. }},2000)
  132. console.log('+++++updateGroupUser+++++++',res)
  133. })
  134. },
  135. delItem(item,index){
  136. item.select=false
  137. this.noGroupUserList.push(item)
  138. this.groupUserList.splice(index,1)
  139. },
  140. getSelectPerson(){
  141. this.closePopup()
  142. this.noGroupUserList = this.noGroupUserList.filter(item=>{
  143. if (item.select){
  144. this.groupUserList.push(item)
  145. }
  146. return !item.select
  147. })
  148. },
  149. selectItem(item,index){
  150. item.select = !item.select
  151. this.$set(this.noGroupUserList,index,item)
  152. },
  153. getNoGroupUserList(){
  154. this.$api.service.getNoGroupUserList().then(res=>{
  155. console.log(res.data)
  156. this.noGroupUserList = res.data.data
  157. })
  158. },
  159. getGroupUserList(id){
  160. this.$api.service.getGroupUserList({
  161. groupId:id
  162. }).then(res=>{
  163. console.log(res.data)
  164. this.groupUserList = res.data.data
  165. })
  166. },
  167. back() {
  168. uni.navigateBack({
  169. delta: 1
  170. })
  171. },
  172. openSelectMember(){
  173. this.$refs.selectPersonPopup.open()
  174. },
  175. closePopup(){
  176. this.$refs.selectPersonPopup.close()
  177. }
  178. }
  179. }
  180. </script>
  181. <style lang="scss" scoped>
  182. @import './index.rpx.css';
  183. </style>