Browse Source

Merge branch 'level' into ol_12_30

wolyshaw 4 years ago
parent
commit
0548c86015

+ 9 - 0
src/helpers/utils.js

@@ -0,0 +1,9 @@
+export const array2object = (list = [], k = 'id', v) => {
+  const data = {}
+  if (list) {
+    for (const item of list) {
+      data[item[k]] = v ? item[v] : item
+    }
+  }
+  return data
+}

+ 19 - 0
src/views/categroyManager/insideSetting/api.js

@@ -0,0 +1,19 @@
+import request2 from '@/utils/request2'
+
+// 员工离职
+export const employeeLevel = data => {
+  return request2({
+    url: '/api-web/employee/level',
+    method: 'post',
+    data
+  })
+}
+
+// 获取交接信息
+export const employeeLevelDetail = data => {
+  return request2({
+    url: '/api-web/employee/levelDetail',
+    method: 'get',
+    params: data
+  })
+}

+ 96 - 0
src/views/categroyManager/insideSetting/modals/handover.vue

@@ -0,0 +1,96 @@
+<template>
+  <div>
+    <el-form ref="form" inline :model="form">
+      <template v-for="(item, key) in form">
+        <select-user
+          v-if="item.length > 0"
+          :key="key"
+          :name="key"
+          :item="item"
+          :branchsyId="branchsyId"
+        />
+      </template>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="$listeners.close">取 消</el-button>
+      <el-button @click="submit" type="primary">确 定</el-button>
+    </span>
+  </div>
+</template>
+<script>
+import { array2object } from '@/helpers/utils'
+import { employeeLevelDetail, employeeLevel } from '../api'
+import selectUser from './select-user'
+export default {
+  props: ['detail'],
+  components: {
+    'select-user': selectUser
+  },
+  data() {
+    return {
+      list: [],
+      form: {
+        repairOrgans: [],
+        directorOrgans: [],
+        educationOrgans: [],
+        teamTeacherOrgans: [],
+      }
+    }
+  },
+  computed: {
+    branchsyId() {
+      return array2object(this.selects.branchs, 'id')
+    }
+  },
+  mounted() {
+    this.$store.dispatch('setBranchs')
+    this.FetchDetail()
+  },
+  methods: {
+    async submit() {
+      this.$refs.form.validate(async valid => {
+        if (valid) {
+          let list = []
+          for (const key in this.form) {
+            if (Object.hasOwnProperty.call(this.form, key)) {
+              const item = this.form[key];
+              list = list.concat(item.map(row => ({...row, roleName: key})))
+            }
+          }
+          await employeeLevel(list)
+          this.$message.success('提交成功')
+          this.$listeners.submited()
+        }
+      })
+    },
+    async FetchDetail() {
+      try {
+        const res = await employeeLevelDetail({
+          userId: this.detail.id
+        })
+        this.list = res.data
+        for (const key in res.data) {
+          if (Object.hasOwnProperty.call(res.data, key)) {
+            const type = res.data[key];
+            for (const item of type) {
+              this.form[key].push({
+                organId: item,
+                transferUserId: '',
+                levelUserId: this.detail.id
+              })
+            }
+          }
+        }
+        this.form = this.form
+      } catch (error) {}
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.dialog-footer{
+  text-align: right;
+  display: block;
+  padding-bottom: 20px;
+}
+</style>

+ 66 - 0
src/views/categroyManager/insideSetting/modals/select-user.vue

@@ -0,0 +1,66 @@
+<template>
+  <div>
+    <el-alert type="info">{{formatName}}</el-alert>
+    <div class="content">
+      <el-row v-for="(row, index) in item" :key="row.organId">
+        <el-col :span="6">
+          <el-form-item :label="branchsyId[row.organId] && branchsyId[row.organId].name"></el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item
+            label="交接人"
+            :prop="`${name}.${index}.transferUserId`"
+            :rules="[{
+              required: true, message: '请选择交接人'
+            }]"
+          >
+            <remote-search :commit='"setTeachers"' @change="val => change(val, row)" :value="row.transferUserId" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-button
+            type="text"
+            v-if="index == 0"
+            :disabled="!row.transferUserId"
+            @click="quickSetting(row.transferUserId)"
+          >快速设置</el-button>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+<script>
+import { employeeLevelDetail, employeeLevel } from '../api'
+export default {
+  props: ['item', 'name', 'branchsyId'],
+  computed: {
+    formatName() {
+      const types = {
+        repairOrgans: '维修技师',
+        directorOrgans: '乐队指导',
+        educationOrgans: '教务老师',
+        teamTeacherOrgans: '运营主管',
+      }
+      return types[this.name]
+    }
+  },
+  methods: {
+    quickSetting(id) {
+      this.item.forEach(row => {
+        if (!row.transferUserId) {
+          row.transferUserId = id
+        }
+      })
+    },
+    change(val, row) {
+      row.transferUserId = val
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.content{
+  padding: 0 24px;
+  padding-top: 24px;
+}
+</style>

+ 25 - 4
src/views/categroyManager/insideSetting/staffManager.vue

@@ -125,6 +125,7 @@
           </el-table-column>
           <el-table-column align='center'
                            width="250px"
+                           fixed="right"
                            label="操作">
             <template slot-scope="scope">
               <el-button @click="roleOperation('update', scope.row)"
@@ -136,8 +137,8 @@
               <el-button @click="onStaffOperation('LOCK_UNLOCK', scope.row)"
                          v-permission="'employee/employeeOperate'"
                          type="text">{{ scope.row.lockFlag == 1 ? '解冻' : '冻结' }}</el-button>
-              <el-button @click="onStaffOperation('DEMISSION', scope.row)"
-                         v-permission="'employee/employeeOperate'"
+              <el-button @click="handover(scope.row)"
+                         v-permission="'employee/level'"
                          type="text">{{ scope.row.demissionDate ? '复职' : '离职' }}</el-button>
             </template>
           </el-table-column>
@@ -261,6 +262,18 @@
                    type="primary">确 定</el-button>
       </span>
     </el-dialog>
+    <el-dialog
+      title="工作交接"
+      :visible.sync="handoverVisible"
+      width="700px"
+    >
+      <handover
+        v-if="handoverVisible"
+        :detail="detail"
+        @close="handoverVisible = false"
+        @submited="getList"
+      />
+    </el-dialog>
     <el-dialog title="教务交接"
                width="400px"
                destroy-on-close
@@ -300,11 +313,13 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
+import { permission } from "@/utils/directivePage";
 import { queryEmployByOrganId, employeeOperate, getUserRole, employeeAdd, employeeUpdate, hasCourseGroupRelation, updateEducationTeacherId } from '@/api/systemManage'
 import { findEducationTeacher } from '@/api/specialSetting'
 import { findEducationUsers } from '@/api/buildTeam'
 import Tooltip from '@/components/Tooltip/index'
 import { isvalidPhone } from '@/utils/validate'
+import handover from './modals/handover'
 let validPhone = (rule, value, callback) => {
   if (!value) {
     callback(new Error('请输入电话号码'))
@@ -316,7 +331,7 @@ let validPhone = (rule, value, callback) => {
 }
 export default {
   name: 'staffManager',
-  components: { pagination, Tooltip },
+  components: { pagination, Tooltip, handover },
   data () {
     return {
       tableList: [],
@@ -333,6 +348,8 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      detail: null,
+      handoverVisible: false,
       roleStatus: false,
       formActionTitle: 'create',
       roleList: [], // 角色列表
@@ -375,7 +392,11 @@ export default {
     this.getRoleList()
   },
   methods: {
-
+    permission,
+    handover(row) {
+      this.detail = row
+      this.handoverVisible = true
+    },
     onBranchCheckAll () {
       this.form.organIdLists = []