Blame view

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