index.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <z-paging ref="paging" safe-area-inset-bottom v-model="list" @query="query">
  3. <template #top>
  4. <ut-navbar title="选择企业负责人" :fixed="false" border></ut-navbar>
  5. <view class="pd-20">
  6. <ut-search margin="0" height="68rpx" fontSize="26rpx" placeholder="请输入企业负责人姓名" border v-model="form.keyword" @search="onRefresh"></ut-search>
  7. </view>
  8. </template>
  9. <view class="base-content pd-20">
  10. <view :class="{ active: item.id === checkedId }" v-for="(item, index) in list" :key="item.id" @click="clickItem(item)" class="bg-fff mb-10 pd-20 select-item-card d-flex">
  11. <view class="mr-20">
  12. <ut-image :src="item.userInfo?.avatar" width="100rpx" height="100rpx"></ut-image>
  13. </view>
  14. <view class="flex1">
  15. <view class="f-s-30 c-#333 f-w-600">{{ item?.userInfo?.name }}</view>
  16. <view class="f-s-28 c-#999">手机号:{{ item.userInfo?.phone }}</view>
  17. </view>
  18. </view>
  19. </view>
  20. </z-paging>
  21. </template>
  22. <script setup lang="ts">
  23. import { useClientRequest } from '@/utils/request';
  24. const paging = ref<any>(null);
  25. const list = ref<any[]>([]);
  26. const form = ref({
  27. keyword: '',
  28. });
  29. const query = async (pageNum: number, pageSize: number) => {
  30. const res = await useClientRequest.get('/plt-api/app/company/members', {
  31. ...form.value,
  32. pageNum: pageNum,
  33. pageSize: pageSize,
  34. });
  35. if (res.code == 200) {
  36. paging.value.complete(res.rows || []);
  37. }
  38. };
  39. const checkedId = ref(null);
  40. const clickItem = (item: any) => {
  41. checkedId.value = item.id;
  42. uni.$emit('selectCpyMember', item);
  43. uni.navigateBack();
  44. };
  45. const onRefresh = () => {
  46. try {
  47. paging.value?.reload();
  48. } catch (e) {
  49. console.error('Error refreshing address list:', e);
  50. }
  51. };
  52. </script>
  53. <style lang="scss" scoped>
  54. .select-item-card {
  55. box-shadow: 0rpx 2rpx 8rpx rgba(0, 0, 0, 0.1);
  56. border: 1rpx solid #e8e8e8;
  57. &.active {
  58. border-color: #4456fb;
  59. }
  60. }
  61. </style>