Blame view

src/components/oa/selectStaff.vue 4.2 KB
a99eb7a5   wuxw   开发完成办公下功能
1
  <template>
18300670   wuxw   工作单功能处理中
2
3
4
    <el-dialog
      :title="$t('selectStaff.title')"
      :visible.sync="visible"
a99eb7a5   wuxw   开发完成办公下功能
5
      width="70%"
18300670   wuxw   工作单功能处理中
6
      top="5vh"
d4a6b78f   wuxw   OA 中考勤功能开发完成
7
    >
a99eb7a5   wuxw   开发完成办公下功能
8
9
      <el-row :gutter="20">
        <el-col :span="12" class="border-right">
18300670   wuxw   工作单功能处理中
10
11
12
13
14
15
16
17
          <div class="text-center section-title">
            {{ $t('selectStaff.orgInfo') }}
          </div>
          <div class="org-tree-container">
            <org-tree-show
              ref="orgTree"
              :call-back-listener="'selectStaff'"
            />
a99eb7a5   wuxw   开发完成办公下功能
18
          </div>
a99eb7a5   wuxw   开发完成办公下功能
19
        </el-col>
a99eb7a5   wuxw   开发完成办公下功能
20
        <el-col :span="12">
18300670   wuxw   工作单功能处理中
21
22
          <div class="text-center section-title">
            {{ $t('selectStaff.staffInfo') }}
a99eb7a5   wuxw   开发完成办公下功能
23
          </div>
d4a6b78f   wuxw   OA 中考勤功能开发完成
24
          <div class="staff-list">
18300670   wuxw   工作单功能处理中
25
26
27
28
29
30
            <div
              v-for="(item, index) in selectStaffInfo.staffs"
              :key="index"
              class="staff-item"
              :class="{ 'selected': selectStaffInfo.curStaffId === item.staffId }"
              @click="_changeStaff(item)"
d4a6b78f   wuxw   OA 中考勤功能开发完成
31
            >
a99eb7a5   wuxw   开发完成办公下功能
32
              <div>
d4a6b78f   wuxw   OA 中考勤功能开发完成
33
                <i class="el-icon-user"></i>
18300670   wuxw   工作单功能处理中
34
                {{ item.name }}
a99eb7a5   wuxw   开发完成办公下功能
35
              </div>
18300670   wuxw   工作单功能处理中
36
              <div>{{ item.tel }}</div>
a99eb7a5   wuxw   开发完成办公下功能
37
38
39
40
            </div>
          </div>
        </el-col>
      </el-row>
18300670   wuxw   工作单功能处理中
41
42
43
44
45
      <div
        v-if="selectStaffInfo.staff.from === 'bpmn' || 
              selectStaffInfo.staff.from === 'purchase' || 
              selectStaffInfo.staff.from === 'contract'"
        slot="footer"
d4a6b78f   wuxw   OA 中考勤功能开发完成
46
47
        class="dialog-footer"
      >
18300670   wuxw   工作单功能处理中
48
49
50
51
52
53
        <el-button @click="_firstUser">
          {{ $t('selectStaff.submitter') }}
        </el-button>
        <el-button @click="_customUser">
          {{ $t('selectStaff.dynamicAssign') }}
        </el-button>
a99eb7a5   wuxw   开发完成办公下功能
54
55
56
57
58
      </div>
    </el-dialog>
  </template>
  
  <script>
18300670   wuxw   工作单功能处理中
59
  import { queryStaffInfos } from '@/api/oa/editWorkApi'
d4a6b78f   wuxw   OA 中考勤功能开发完成
60
  import OrgTreeShow from './OrgTreeShow'
a99eb7a5   wuxw   开发完成办公下功能
61
62
63
64
65
66
67
68
  
  export default {
    name: 'SelectStaff',
    components: {
      OrgTreeShow
    },
    data() {
      return {
d4a6b78f   wuxw   OA 中考勤功能开发完成
69
        visible: false,
18300670   wuxw   工作单功能处理中
70
71
72
73
74
75
        selectStaffInfo: {
          staffs: [],
          curStaffId: '',
          curStaffName: '',
          staff: {}
        }
a99eb7a5   wuxw   开发完成办公下功能
76
77
      }
    },
a99eb7a5   wuxw   开发完成办公下功能
78
79
    methods: {
      open(staff) {
18300670   wuxw   工作单功能处理中
80
        this.selectStaffInfo.staff = staff || {}
d4a6b78f   wuxw   OA 中考勤功能开发完成
81
82
83
84
        this.visible = true
        this.$nextTick(() => {
          this.$refs.orgTree.refreshTree()
        })
a99eb7a5   wuxw   开发完成办公下功能
85
      },
18300670   wuxw   工作单功能处理中
86
87
88
89
90
91
92
93
94
95
      _changeStaff(item) {
        this.selectStaffInfo.staff.staffId = item.userId
        this.selectStaffInfo.staff.staffName = item.userName
        this.selectStaffInfo.staff.staffTel = item.tel
        this.visible = false
        if (typeof this.selectStaffInfo.staff.call === 'function') {
          this.selectStaffInfo.staff.call(this.selectStaffInfo.staff)
        }
      },
      async loadStaff(org) {
a99eb7a5   wuxw   开发完成办公下功能
96
97
98
        try {
          const params = {
            page: 1,
18300670   wuxw   工作单功能处理中
99
            rows: 50,
a99eb7a5   wuxw   开发完成办公下功能
100
101
102
            row: 50,
            orgId: org.orgId
          }
18300670   wuxw   工作单功能处理中
103
104
105
106
          const { data } = await queryStaffInfos(params)
          this.selectStaffInfo.staffs = data.staffs
          if (data.staffs.length > 0) {
            this.selectStaffInfo.curStaffId = data.staffs[0].orgId
a99eb7a5   wuxw   开发完成办公下功能
107
108
          }
        } catch (error) {
18300670   wuxw   工作单功能处理中
109
          console.error('加载员工失败:', error)
a99eb7a5   wuxw   开发完成办公下功能
110
111
        }
      },
18300670   wuxw   工作单功能处理中
112
113
114
      _firstUser() {
        this.selectStaffInfo.staff.staffId = '${startUserId}'
        this.selectStaffInfo.staff.staffName = this.$t('selectStaff.submitter')
d4a6b78f   wuxw   OA 中考勤功能开发完成
115
        this.visible = false
18300670   wuxw   工作单功能处理中
116
117
118
        if (typeof this.selectStaffInfo.staff.call === 'function') {
          this.selectStaffInfo.staff.call(this.selectStaffInfo.staff)
        }
a99eb7a5   wuxw   开发完成办公下功能
119
      },
18300670   wuxw   工作单功能处理中
120
121
122
      _customUser() {
        this.selectStaffInfo.staff.staffId = '${nextUserId}'
        this.selectStaffInfo.staff.staffName = this.$t('selectStaff.dynamicAssign')
d4a6b78f   wuxw   OA 中考勤功能开发完成
123
        this.visible = false
18300670   wuxw   工作单功能处理中
124
125
126
        if (typeof this.selectStaffInfo.staff.call === 'function') {
          this.selectStaffInfo.staff.call(this.selectStaffInfo.staff)
        }
a99eb7a5   wuxw   开发完成办公下功能
127
      }
18300670   wuxw   工作单功能处理中
128
129
130
    },
    created() {
      this.$on('selectStaff', 'switchOrg', this.loadStaff)
a99eb7a5   wuxw   开发完成办公下功能
131
132
133
134
135
136
    }
  }
  </script>
  
  <style lang="scss" scoped>
  .border-right {
18300670   wuxw   工作单功能处理中
137
    border-right: 1px solid #eee;
a99eb7a5   wuxw   开发完成办公下功能
138
139
  }
  
18300670   wuxw   工作单功能处理中
140
141
142
  .section-title {
    font-weight: bold;
    margin-bottom: 15px;
a99eb7a5   wuxw   开发完成办公下功能
143
144
  }
  
18300670   wuxw   工作单功能处理中
145
146
147
148
  .org-tree-container {
    padding: 10px;
    height: 500px;
    overflow-y: auto;
a99eb7a5   wuxw   开发完成办公下功能
149
150
  }
  
d4a6b78f   wuxw   OA 中考勤功能开发完成
151
  .staff-list {
18300670   wuxw   工作单功能处理中
152
153
    padding: 10px;
    height: 500px;
a99eb7a5   wuxw   开发完成办公下功能
154
    overflow-y: auto;
a99eb7a5   wuxw   开发完成办公下功能
155
156
157
158
159
  }
  
  .staff-item {
    padding: 10px;
    margin-bottom: 5px;
a99eb7a5   wuxw   开发完成办公下功能
160
161
    border-radius: 4px;
    cursor: pointer;
a99eb7a5   wuxw   开发完成办公下功能
162
163
164
    &:hover {
      background-color: #f5f7fa;
    }
a99eb7a5   wuxw   开发完成办公下功能
165
166
    &.selected {
      background-color: #ecf5ff;
18300670   wuxw   工作单功能处理中
167
      color: #409eff;
a99eb7a5   wuxw   开发完成办公下功能
168
169
    }
  }
18300670   wuxw   工作单功能处理中
170
171
172
173
  
  .dialog-footer {
    text-align: right;
  }
a99eb7a5   wuxw   开发完成办公下功能
174
  </style>