wk-field-dept.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <view class="wk-field wk-field-dept" @click.stop="handleChooseDept">
  3. <view v-if="_label" class="wk-field__label">
  4. <view v-if="field.isNull === 1" class="line" />
  5. {{ _label }}
  6. </view>
  7. <view class="wk-field__body">
  8. <view class="wk-field__body-core">
  9. {{ valueStr }}
  10. </view>
  11. <text class="wk wk-arrow-right icon-right" />
  12. </view>
  13. </view>
  14. </template>
  15. <script>
  16. import mixins from './mixins'
  17. export default {
  18. name: 'WkFieldDept',
  19. mixins: [mixins],
  20. data() {
  21. return {
  22. guid: null,
  23. formValue: []
  24. }
  25. },
  26. computed: {
  27. valueStr() {
  28. const arr = this.formValue || []
  29. return arr.map(o => o.label || o.name).join(',')
  30. }
  31. },
  32. created() {
  33. this.guid = this.$guid()
  34. },
  35. methods: {
  36. handleChooseDept() {
  37. if (this.field.disabled) {
  38. if (this.config && this.config.disabledMsg) {
  39. this.$toast(this.config.disabledMsg)
  40. }
  41. return
  42. }
  43. const bridge = getApp().globalData.selectedValBridge
  44. bridge.dept = {
  45. guid: this.guid,
  46. title: '选择' + this.field.name,
  47. defaultVal: this.formValue || []
  48. }
  49. uni.$on('selected-dept', this.selectedDept)
  50. this.$Router.navigateTo('/pages_common/selectList/dept')
  51. },
  52. selectedDept(data) {
  53. if (this.guid === data.guid) {
  54. this.formValue = data.data
  55. this.$emit('input', this.formValue)
  56. this.$emit('change', {
  57. index: this.index,
  58. field: this.field,
  59. value: this.formValue
  60. })
  61. }
  62. uni.$off('selected-dept')
  63. }
  64. }
  65. }
  66. </script>
  67. <style scoped lang="scss">
  68. @import './wkField.scss';
  69. .wk-field-dept {}
  70. </style>