index.vue 9.8 KB
<template>
  <div class="timedTask from-clues">
    <div class="from-clues-header">
      <el-form ref="ruleForm" :model="form" label-width="100px">
        <el-form-item>
          <Breadcrumb />
        </el-form-item>
        <el-row class="mb-5">
          <!-- 按钮操作 -->
          <el-col :span="2" class="btnColRight">
            <el-form-item>
              <btn nativeType="cx" @click="handleAdd">添加人员</btn>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </div>
    <div class="from-clues-content">
      <lb-table
        :pagination="false"
        @size-change="handleSizeChange"
        @p-current-change="handleCurrentChange"
        :column="tableData.columns"
        :data="tableData.data"
        :expand-row-keys="keyList"
        row-key="dictid">
      </lb-table>
    </div>
    <EditDialog ref="dialogForm" @ok="reloadTableData" />
  </div>
</template>
<script>
  import {
    getUuid,
    judgeSort,
    realMove,
    findParents,
    removeTreeListItem,
  } from "@/utils/operation";
  import {
    resetPassword,
    getUserList,
  } from "@/api/personnelManage";
  import { api, deleteAction } from '@/api/manageApi'
  import data from "./data";
  import { deleteDomStr } from '@/utils/proDomStr'
  import tableMixin from "@/mixins/tableMixin.js";
  import EditDialog from "./edit-dialog.vue";
  import {updateOrder} from "@/api/orders"
  export default {
    name: "menus",
    mixins: [tableMixin],
    components: {
      EditDialog,
    },
    data () {
      return {
        taskData: null,
        keyList: [],
        form: {
          job_name: "",
          currentPage: 1,
        },
        queryParam: {},
        selectType: "0",
        queryName: "",
        organizationId: "", // 组织机构ID
        departmentId: "", // 部门ID
        departmentList: [], // 部门列表
        levelList: [], // 职务级别
        sexList: [],
        typeOptions: [
          {
            value: "0",
            label: "姓名",
          },
          {
            value: "1",
            label: "工号",
          },
          {
            value: "2",
            label: "部门",
          },
          {
            value: "3",
            label: "机构",
          },
        ],

        selectionList: [],
        tableData: {
          columns: [
            {
              label: "序号",
              type: "index",
              width: "50",
              index: this.indexMethod,
            },
          ]
            .concat(data.columns())
            .concat([
              {
                label: "负责人",
                render: (h, scope) => {
                  return (
                    <i v-show={scope.row.isDuty !== null} class="el-icon-check" />
                  )
                }
              },
              {
                label: "排序",
                width: 200,
                render: (h, scope) => {
                  return (
                    <div>
                      <el-button
                        type="text"
                        disabled={scope.row.isTop}
                        onClick={() => {
                          this.updateOrder(scope.row,'TOP');
                        }}
                      >
                        置顶
                      </el-button>
                      <el-button
                        type="text"
                        disabled={scope.row.isTop}
                        onClick={() => {
                          this.updateOrder(scope.row,'UP');
                        }}
                      >
                        上移
                      </el-button>
                      <el-button
                        type="text"
                        disabled={scope.row.isBottom}
                        onClick={() => {
                          this.updateOrder(scope.row,'DOWN');
                        }}
                      >
                        下移
                      </el-button>
                      <el-button
                        type="text"
                        disabled={scope.row.isBottom}
                        onClick={() => {
                          this.updateOrder(scope.row,'BOTTOM');
                        }}
                      >
                        置底
                      </el-button>
                    </div>
                  );
                },
              },
              {
                label: "操作",
                width: 380,
                render: (h, scope) => {
                  return (
                    <div>
                      <el-button
                        type="text"
                        size="mini"
                        icon="el-icon-video-pause"
                        onClick={() => {
                          this.resetPassword(scope.row.id);
                        }}
                      >
                        重置
                      </el-button>
                      <el-button
                        type="text"
                        size="mini"
                        icon="el-icon-edit"
                        onClick={() => {
                          this.handleEdit(scope.row);
                        }}
                      >
                        修改
                      </el-button>
                      <el-button
                        type="text"
                        size="mini"
                        icon="el-icon-delete"
                        style="color:#F56C6C"
                        onClick={() => {
                          this.handleDelete(scope.row.id, scope.row.name);
                        }}
                      >
                        删除
                      </el-button>
                    </div>
                  );
                },
              },
            ]),
          data: [],
        },
      };
    },
    created () {
      this.getTableList();
    },
    computed: {
      departmentid () {
        return this.$store.state.user.userInfo;
      },
    },
    methods: {
      handleAdd () {
        this.$refs.dialogForm.adds();
        this.$refs.dialogForm.title = "添加";
      },
      getTableList () {
        this.loading = true;
        this.queryParam = {
          organizationId: this.departmentid.organizationId,
          departmentId: this.departmentid.departmentId,
        };
        getUserList(this.queryParam).then((res) => {
          console.log("人员列表", res);
          if (res.status === 1) {
            this.loading = false;
            this.tableData.data = res.content;
            this.tableData.data = judgeSort(this.tableData.data);
          } else {
            this.$message.error({ message: res.message, showClose: true });
          }
        });
      },

      // 重置用户密码
      resetPassword (data) {
        const ids = []
        if (data instanceof Array) {
          data.forEach((item) => {
            ids.push(item.id)
          })
        } else {
          ids.push(data)
        }
        if (ids.length === 0) {
          this.$message({
            message: '请选择需要重置密码的用户!',
            showClose: true
          })
          return
        }
        this.$confirm(
          `<div  class="customer-message-wrapper">
              <h5 class="title">确定要重置密码吗</h5>
               <p class="result">执行后,数据将
                 <span >无法恢复</span>
                </p>
        </div>`,
          '执行确认',
          {
            dangerouslyUseHTMLString: true,
            customClass: 'customer-delete',
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
          }
        )
          .then(() => {
            resetPassword(ids).then((res) => {
              if (res.status === 1) {
                this.$message.success({ message: res.message, showClose: true })
                this.getTableList()
              } else {
                this.$message.error({ message: res.message, showClose: true })
              }
            })
          })
          .catch(() => { })
      },
      //排序
      updateOrder(record, operate){
        const findIndex = this.tableData.data.findIndex(item => item.id === record.id)
        let swapId = ''
        if (operate === 'UP') {
          swapId = this.tableData.data[findIndex - 1].id
        } else if (operate === 'DOWN') {
          swapId = this.tableData.data[findIndex + 1].id
        }
        updateOrder('/rest/users', record, operate, swapId).then(res => {
          if (res.status === 1) {
            this.$message.success({ message: res.message, showClose: true })
            this.getTableList();
          } else {
            this.$message.error({ message: res.message, showClose: true })
          }
        })
      },
      // 修改人员信息
      handleEdit (row) {
        this.$refs.dialogForm.edit(row);
        this.$refs.dialogForm.title = "修改";
      },
      // 删除
      handleDelete (id, content) {
        this.$confirm(deleteDomStr(content), '执行确认', {
          dangerouslyUseHTMLString: true,
          customClass: 'customer-delete',
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        })
          .then(() => {
            deleteAction(`${api.users}/${id}`).then((res) => {
              if (res.status === 1) {
                this.$message.success({ message: res.message, showClose: true })
              } else {
                this.$message.error({ message: res.message, showClose: true })
              }
              this.getTableList()
            })
          })
          .catch(() => { })
      },
      // 新增回显
      reloadTableData () {
        this.getTableList()
      },
    },
  };
</script>
<style scoped lang="scss">
  @import "~@/styles/mixin.scss";
  @import "~@/styles/public.scss";
  @import "./index.scss";
</style>