groupDetail.vue 5.4 KB

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