user-selector.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <picker :range="userList" range-key="name" @change="bindPickerChangeUser" :value="indexUser">
  3. <view class="uni-input">{{userList[indexUser].name}}</view>
  4. </picker>
  5. </template>
  6. <script>
  7. import { getUserList } from '@/api/user.js'
  8. export default {
  9. name: 'UserSelector',
  10. props: {
  11. defaultVal: {
  12. type: Number,
  13. default: undefined
  14. }
  15. },
  16. data() {
  17. return {
  18. indexUser: 0,
  19. accountId: undefined,
  20. userList: [{ name: '' }],
  21. userSelObj: {}
  22. }
  23. },
  24. computed: {},
  25. watch: {
  26. defaultVal(val) {
  27. this.accountId = val
  28. }
  29. },
  30. created() {
  31. this.initUserListData()
  32. },
  33. mounted() {
  34. this.initUserListData()
  35. },
  36. methods: {
  37. // 初始化用户列表
  38. initUserListData() {
  39. getUserList().then((resp) => {
  40. const { code, data, msg } = resp
  41. if (code === 0) {
  42. this.userList = data
  43. } else {
  44. this.$message.error(msg)
  45. }
  46. }).catch((error) => {
  47. console.log(error)
  48. })
  49. },
  50. // 执行人选择
  51. handleSelectUser(data) {
  52. this.userList.forEach((node) => {
  53. if (node.children) {
  54. node.children.forEach((a) => {
  55. if (a.accountId === data) {
  56. this.setVal(a)
  57. return
  58. }
  59. })
  60. }
  61. })
  62. },
  63. // 返回值
  64. setVal(obj) {
  65. this.$emit('setUserInfo', obj)
  66. }
  67. }
  68. }
  69. </script>