XiaoRuby
2023-08-26 0bbf0c962af64624f375db6875d003814995640e
8-26人员管理组织架构对接完成
已修改6个文件
750 ■■■■ 文件已修改
src/api/laboratory/organizational.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/util/requestUtil.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/index.vue 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/laboratory/organizational/index.vue 212 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/laboratory/personnel/index.vue 383 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/standardLibrary/index.vue 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/laboratory/organizational.js
@@ -2,6 +2,10 @@
const Api = {
    getOrganizational: "/organizational/list", // 四级树
    getTableInitialization: "/organizational/table", // 表格数据接口
    organizationalAdd: "/organizational/add", // 添加部门
    organizationalUpdate: "/organizational/add", // 修改部门
    organizationalDelete: "/organizational/delete", // 删除部门
}
export function getOrganizationalApi() {
    return request({
@@ -9,3 +13,39 @@
        method: 'get'
    })
}
export function getTableInitializationApi(departmentId) {
    return request({
        url: Api.getTableInitialization,
        method: 'get',
        params: {
            departmentId
        }
    })
}
export function organizationalAddApi(formData){
    return request({
        url: Api.organizationalAdd,
        method: 'post',
        data: formData
    })
}
export function organizationalUpdateApi(formData){
    return request({
        url: Api.organizationalUpdate + '?id=' + formData.id,
        method: 'put',
        data: formData
    })
}
export function organizationalDeleteApi(id){
    return request({
        url: Api.organizationalDelete,
        method: 'delete',
        params: {
            ids: id.toString()
        }
    })
}
src/api/util/requestUtil.js
@@ -16,6 +16,14 @@
    })
}
export function put(path, data) {
    return request({
        url: path,
        method: 'put',
        data
    })
}
export function wpost(path, params) {
    return request({
        url: path,
src/views/basicData/index.vue
@@ -136,13 +136,14 @@
      <el-table
        :data="tableData"
        style="width: 100%; margin-bottom: 20px"
        row-key="name"
        row-key="id"
        border
        height="calc(100vh - 250px)"
        default-expand-all
        ref="multipleTable"
        @select="selectTr"
        @select-all="selectAll"
        @selection-change="handleSelectionChange"
        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
      >
        <el-table-column type="selection" label="序号"> </el-table-column>
@@ -344,20 +345,6 @@
      this.isAllSelect = !this.isAllSelect;
      let data = this.tableData;
      this.toggleSelect(data, this.isAllSelect, "all");
      // 自定义
      if (this.isAllSelect) {
        val.forEach((i) => {
          if (i.id !== undefined) {
            this.deleteList.push(i.id);
          } else {
            i.children.forEach((c) => {
              this.deleteList.push(c.id);
            });
          }
        });
      } else {
        this.deleteList.splice(0, this.deleteList.length);
      }
    },
    //选择某行
    selectTr(selection, row) {
@@ -366,33 +353,6 @@
        this.isAllSelect = row.isChecked;
        this.toggleSelect(row, row.isChecked, "tr");
      });
      if (row.isChecked === true) {
        if (row.children !== undefined) {
          row.children.forEach((i) => {
            this.deleteList.push(i.id);
          });
        } else {
          this.deleteList.push(row.id);
        }
      } else if (row.isChecked === false) {
        if (row.children !== undefined) {
          row.children.forEach((i) => {
            this.deleteList.findIndex((c, index) => {
              if (c === i.id) {
                this.deleteList.splice(index, 1);
                return;
              }
            });
          });
        }
        this.deleteList.findIndex((c, index) => {
          if (c === row.id) {
            this.deleteList.splice(index, 1);
            return;
          }
        });
      }
    },
    //递归子级
    toggleSelect(data, flag, type) {
@@ -426,6 +386,15 @@
        }
      });
    },
    handleSelectionChange(val) {
      this.deleteList = []
      val.forEach((v) => {
        if(v.id !== undefined) {
          this.deleteList.push(v.id)
        }
      })
      console.log(`output->this.deleteList`,this.deleteList)
    },
    // 表格树全部选中配置  结束
    deleteListClick() {
      deleteListApi(this.deleteList).then((res) => {
src/views/laboratory/organizational/index.vue
@@ -23,9 +23,15 @@
            type="primary"
            size="small"
            icon="el-icon-circle-plus-outline"
            @click="dialogVisible = true"
            >新增</el-button
          >
          <el-button size="small" icon="el-icon-delete-solid">删除</el-button>
          <el-button
            size="small"
            icon="el-icon-delete-solid"
            @click="listDeleteClick"
            >删除</el-button
          >
        </div>
      </div>
      <div class="table-main-div">
@@ -39,27 +45,84 @@
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="55"> </el-table-column>
          <el-table-column label="日期" width="120">
            <template slot-scope="scope">{{ scope.row.date }}</template>
          </el-table-column>
          <el-table-column prop="name" label="姓名" width="120">
          </el-table-column>
          <el-table-column prop="address" label="地址" show-overflow-tooltip>
          <el-table-column
            label="序号"
            type="index"
            width="70"
          ></el-table-column>
          <el-table-column prop="department" label="部门"> </el-table-column>
          <el-table-column label="操作">
            <template scope="scope">
              <el-button type="text" size="mini" @click="updateClick(scope)"
                >编辑</el-button
              >
              <el-button type="text" size="mini" @click="deleteClick(scope)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <el-dialog
      :title="isUpdate ? '更新部门名称' : '新增部门'"
      :visible.sync="dialogVisible"
      width="30%"
    >
      <el-form
        :model="formData"
        :rules="rules"
        ref="ruleForm"
        class="elFormClass"
      >
        <el-form-item label="上级部门:" prop="name" style="padding-left: 10px">
          <el-input
            v-model="treeNodeData.department"
            :disabled="true"
            style="width: 81.3%"
          >
          </el-input>
        </el-form-item>
        <el-form-item
          label="部门名称:"
          prop="department"
          style="padding-top: 20px"
        >
          <el-input
            placeholder="请输入部门名称"
            v-model="formData.department"
            clearable
            style="width: 80%"
          >
          </el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="saveForm">{{
          isUpdate ? "更 新" : "新 增"
        }}</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { getOrganizationalApi } from "@/api/laboratory/organizational";
import {
  getOrganizationalApi,
  getTableInitializationApi,
  organizationalAddApi,
  organizationalUpdateApi,
  organizationalDeleteApi,
} from "@/api/laboratory/organizational";
export default {
  name: "Organizational",
  data() {
    return {
      filterText: "",
      dialogVisible: false,
      msg: "",
      isUpdate: false,
      data: [],
      // tree树默认值配置
      defaultProps: {
@@ -67,28 +130,24 @@
        label: "department",
        id: "id",
      },
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄",
      formData: {
        fatherId: "",
        department: "",
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 弄",
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 弄",
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 弄",
        },
      // 新增按钮里面禁止输入框数据
      disabledInputShow: "",
      // 保存点击节点数据
      treeNodeData: {},
      // 多选删除
      listDelete: [],
      // 表格数据
      tableData: [],
      rules: {
        department: [
          { required: true, message: "请输入活动名称", trigger: "blur" },
          { min: 1, max: 25, message: "长度在 1 到 5 个字符", trigger: "blur" },
      ],
      },
    };
  },
  methods: {
@@ -101,6 +160,13 @@
    treeInitialization() {
      getOrganizationalApi().then((res) => {
        this.data = res.data;
        // 初始化默认msg提示路径为第一节点名称
        this.msg = res.data[0].department;
        // 初始化调用表格接口
        this.tableInitialization(res.data[0].id);
        // 初始化保存第一节点数据
        this.treeNodeData.department = res.data[0].department;
        this.treeNodeData.id = res.data[0].id;
      });
    },
    // 获取树路径
@@ -115,10 +181,14 @@
    // 点击树节点
    handleNodeClick(data, node, element) {
      this.getParentData(node.parent, node.data.department);
      console.log(`output->this.msg`, this.msg);
      console.log(`output->data`, data);
      console.log(`output->node`, node);
      console.log(`output->element`, element);
      // 由于点击第一节点无法触发getParentData里面的判断,只能额外判断
      if (node.data.id === 0) {
        this.msg = node.data.department;
      }
      // 点击节点数据存储下来
      this.treeNodeData = node.data;
      // 点击触发该函数,更新表格数据
      this.tableInitialization(node.data.id);
    },
    // 改变多选框状态
    toggleSelection(rows) {
@@ -132,7 +202,71 @@
    },
    // 点击多选框以后的操作
    handleSelectionChange(val) {
      this.multipleSelection = val;
      this.listDelete = []
      val.forEach((v) => {
        this.listDelete.push(v.id);
        });
    },
    // 初始化表格数据
    tableInitialization(departmentId) {
      getTableInitializationApi(departmentId).then((res) => {
        this.tableData = res.data;
      });
    },
    // 更新与新增表单
    saveForm() {
      this.formData.fatherId = this.treeNodeData.id;
      this.$refs.ruleForm.validate((valid) => {
        if (valid) {
          if (!this.isUpdate) {
            organizationalAddApi(this.formData).then((res) => {
              this.$message({
                message: res.message,
                type: "success",
              });
              this.treeInitialization();
              this.dialogVisible = false;
            });
          } else {
            organizationalUpdateApi(this.formData).then((res) => {
              this.$message({
                message: res.message,
                type: "success",
              });
              this.treeInitialization();
              this.dialogVisible = false;
            });
          }
        }
      });
    },
    // 点击编辑触发
    updateClick(scope) {
      this.dialogVisible = true;
      this.isUpdate = true;
      this.formData.id = scope.row.id;
      this.formData.fatherId = this.treeNodeData.id;
      this.formData.department = scope.row.department;
    },
    // 表格中的删除按钮
    deleteClick(scope) {
      organizationalDeleteApi(scope.row.id).then((res) => {
        this.$message({
          message: res.message,
          type: "success",
        });
        this.treeInitialization();
      });
    },
    // 头部多选删除
    listDeleteClick() {
      organizationalDeleteApi(this.listDelete).then((res) => {
        this.$message({
          message: res.message,
          type: "success",
        });
        this.treeInitialization();
      });
    },
  },
  mounted() {
@@ -141,6 +275,15 @@
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
    dialogVisible: {
      handler(newVal, oldVal) {
        if (newVal == false) {
          this.isUpdate = false;
          this.formData = {};
          this.$refs.ruleForm.resetFields();
        }
      },
    },
  },
};
@@ -187,4 +330,7 @@
  font-weight: 500;
  color: #999999;
}
.elFormClass .el-form-item__error {
  padding-left: 90px;
}
</style>
src/views/laboratory/personnel/index.vue
@@ -10,74 +10,174 @@
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="getData()">查询</el-button>
            <el-button type="primary" plain @click="resetData()">重置</el-button>
            <el-button type="primary" plain @click="resetData()"
              >重置</el-button
            >
            <!-- <el-button type="text">高级搜索<i class="el-icon-arrow-down el-icon--right" /></el-button> -->
          </el-form-item>
        </el-form>
      </div>
      <div class="serve-btn">
        <el-button type="primary" icon="el-icon-plus" @click="dialogFormVisible = true">新增人员</el-button>
        <el-button
          type="primary"
          icon="el-icon-plus"
          @click="dialogFormVisible = true"
          >新增人员</el-button
        >
        <el-dialog title="新增人员" :visible.sync="dialogFormVisible" width="30%">
          <el-form :model="form" :rules="rules">
            <el-form-item label="账号" :label-width="formLabelWidth" prop="account">
        <el-dialog
          :title="isUpdate == true ? '更新人员信息' : '新增人员'"
          :visible.sync="dialogFormVisible"
          width="30%"
        >
          <el-form :model="form" ref="form" :rules="rules">
            <el-form-item
              label="账号"
              :label-width="formLabelWidth"
              prop="account"
            >
              <el-input v-model="form.account" autocomplete="off" />
            </el-form-item>
            <el-form-item label="年龄" :label-width="formLabelWidth">
              <el-input v-model="form.age" autocomplete="off" />
            </el-form-item>
            <el-form-item label="邮箱" :label-width="formLabelWidth" prop="email">
            <el-form-item
              label="邮箱"
              :label-width="formLabelWidth"
              prop="email"
            >
              <el-input v-model="form.email" autocomplete="off" />
            </el-form-item>
            <el-form-item label="名字" :label-width="formLabelWidth" prop="name">
            <el-form-item
              label="名字"
              :label-width="formLabelWidth"
              prop="name"
            >
              <el-input v-model="form.name" autocomplete="off" />
            </el-form-item>
            <el-form-item label="电话" :label-width="formLabelWidth" prop="phone">
            <el-form-item
              label="电话"
              :label-width="formLabelWidth"
              prop="phone"
            >
              <el-input v-model="form.phone" autocomplete="off" />
            </el-form-item>
            <el-form-item label="权限" :label-width="formLabelWidth" prop="role_id">
              <el-input v-model="form.role_id" autocomplete="off" />
            <el-form-item
              label="部门"
              :label-width="formLabelWidth"
              required
              prop="organizationId"
            >
              <el-cascader
                style="width: 100%"
                :options="options"
                :props="myProp"
                v-model="form.organizationId"
                clearable
              ></el-cascader>
            </el-form-item>
            <el-form-item
              label="权限"
              :label-width="formLabelWidth"
              prop="roleId"
            >
              <el-input v-model="form.roleId" autocomplete="off" />
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button @click="dialogFormVisible = false">取 消</el-button>
            <el-button type="primary" @click="submitForm()">确 定</el-button>
            <el-button type="primary" @click="submitForm()">{{
              isUpdate == true ? "更 新" : "确 定"
            }}</el-button>
          </div>
        </el-dialog>
      </div>
    </div>
    <div class="content-main">
      <div class="personner-table">
        <el-table ref="personnerlTable" :max-height="700" :cell-style="{ textAlign: 'center' }"
          :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }"
          :data="personnerlTable" style="width: 100%">
        <el-table
          ref="personnerlTable"
          height="calc(100vh - 240px)"
          border
          :cell-style="{ textAlign: 'center' }"
          :header-cell-style="{
            border: '0px',
            background: '#f5f7fa',
            color: '#606266',
            boxShadow: 'inset 0 1px 0 #ebeef5',
            textAlign: 'center',
          }"
          @filter-change="fnFilterChangeInit"
          :data="personnerlTable"
          style="width: 100%"
        >
          <el-table-column prop="username" label="角色名称" min-width="120" />
          <el-table-column prop="roleName" label="角色权限" min-width="120" />
          <el-table-column prop="age" label="年龄" min-width="150" />
          <el-table-column prop="age" label="年龄" min-width="150">
            <template scope="scope">
              {{
                scope.row.age === "" || scope.row.age === undefined
                  ? "---"
                  : scope.row.age
              }}
            </template>
          </el-table-column>
          <el-table-column prop="department" label="部门" min-width="150" />
          <el-table-column prop="createTime" label="创建时间" min-width="180" />
          <el-table-column prop="phone" label="电话" min-width="200" />
          <el-table-column prop="email" label="邮箱" min-width="200" />
          <el-table-column prop="jobState" label="在职状态" min-width="120"
            :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" :filter-method="filterTag"
            filter-placement="bottom-end">
          <el-table-column prop="phone" label="电话" min-width="200">
            <template scope="scope">
              {{ scope.row.phone === "" ? "---" : scope.row.phone }}
            </template>
          </el-table-column>
          <el-table-column prop="email" label="邮箱" min-width="200">
            <template scope="scope">
              {{ scope.row.email === "" ? "---" : scope.row.email }}
            </template>
          </el-table-column>
          <el-table-column
            prop="jobState"
            label="在职状态"
            min-width="120"
            :filters="[
              { text: '在职', value: 1 },
              { text: '离岗', value: 0 },
            ]"
            column-key="status"
            :filter-method="filterTag"
            filter-placement="bottom-end"
          >
            <template slot-scope="scope">
              <el-tag :type="scope.row.jobState === 0 ? 'danger' : 'success'" disable-transitions>{{
                scope.row.jobState === 0 ? '离岗' : '在职' }}</el-tag>
              <el-tag
                :type="scope.row.jobState === 0 ? 'danger' : 'success'"
                disable-transitions
                >{{ scope.row.jobState === 0 ? "离岗" : "在职" }}</el-tag
              >
            </template>
          </el-table-column>
          <el-table-column label="操作" min-width="120">
            <template slot-scope="scope">
              <el-button type="text" size="small" @click="handleClick(scope.row)">编辑</el-button>
              <!-- <el-button type="text" size="small">编辑</el-button> -->
              <el-button
                type="text"
                size="small"
                @click="handleClick(scope.row)"
                >编辑</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <div>
          <!-- 分页器 -->
          <el-pagination :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper" :total="this.personnerlTable.length"
            @size-change="handleSizeChange" @current-change="handleCurrentChange" />
          <el-pagination
            :current-page="currentPage"
            :page-sizes="[10, 15, 20, 25]"
            :page-size="pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
          />
        </div>
      </div>
    </div>
@@ -85,15 +185,14 @@
</template>
<script>
import { get, post } from '@/api/util/requestUtil';
import urlInfo from '../../../api/urlEnum/personnel.js'
import { get, post, put } from "@/api/util/requestUtil";
import urlInfo from "../../../api/urlEnum/personnel.js";
import { getOrganizationalApi } from "@/api/laboratory/organizational";
export default {
  data() {
    return {
      keyword: '',
      personnerlTable: [
      ],
      keyword: "",
      personnerlTable: [],
      filteredpersonnerlTable: [],
      currentindex: 1,
      currentPage: 1, // 当前页码
@@ -102,108 +201,214 @@
      personData: [], // 用来存放接口传过来的人员列表数据
      dialogFormVisible: false,
      form: {
        account: '',
        age: '',
        email: '',
        name: '',
        phone: '',
        role_id: ''
        account: "",
        age: "",
        email: "",
        name: "",
        phone: "",
        organizationId: "",
        roleId: "",
      },
      formLabelWidth: '100px',
      myProp: {
        value: "id",
        label: "department",
        checkStrictly: true, //允许选择任意一节
      },
      formLabelWidth: "100px",
      rules: {
        account: [
          {
            required: true, message: '请输入账号', trigger: 'blur'
          }
            required: true,
            message: "请输入账号",
            trigger: "blur",
          },
        ],
        name: [{
          required: true, message: '请输入名字', trigger: 'blur'
        }],
        name: [
          {
            required: true,
            message: "请输入名字",
            trigger: "blur",
          },
        ],
        phone: [
          // { required: true, message: '请输入11位电话号码', trigger: 'blur' },
          { pattern: /^1[34578]\d{9}$/, message: '非法手机号码', trigger: 'blur' }
          {
            pattern: /^1[345789]\d{9}$/,
            message: "非法手机号码",
            trigger: "blur",
          },
        ],
        email: [
          // { required: true, message: '请输入邮箱地址', trigger: 'blur' },
          { type: 'email', message: '非法邮箱地址', trigger: ['blur', 'change'] }
          {
            type: "email",
            message: "非法邮箱地址",
            trigger: ["blur", "change"],
          },
        ],
        role_id: [
          { required: true, message: '请输入权限(0或1)', trigger: 'blur' }
        ]
      }
    }
        organizationId: [
          {
            required: true,
            type: "array",
            message: "请选择部门",
            trigger: "change",
          },
        ],
        roleId: [
          { required: true, message: "请输入权限(0或1)", trigger: "blur" },
        ],
      },
      options: [],
      status: "",
      isUpdate: false,
    };
  },
  mounted() {
    this.getData()
    this.getData();
    this.getTreeData();
  },
  methods: {
    // 每页条数改变时触发 选择一页显示多少行
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`)
      this.currentPage = 1
      this.pageSize = val
      console.log(`每页 ${val} 条`);
      this.currentPage = 1;
      this.pageSize = val;
    },
    filterTag() {
      console.log(11);
    filterTag(value) {
      this.status = "";
      this.status = value;
      return true;
    },
    // 当前页改变时触发 跳转其他页
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`)
      this.currentPage = val
      console.log(`当前页: ${val}`);
      this.currentPage = val;
    },
    async getData() {
      let data = {
        pageNo: 0,
        pageSize: 20,
        name: this.keyword
      }
        pageSize: 10,
        name: this.keyword,
        status: this.status,
      };
      let res = await get(urlInfo.url.list_new_personnel, data);
      this.personnerlTable=res.data.row
      this.total=res.data.total
      this.personnerlTable = res.data.row;
      this.total = res.data.total;
    },
    searchData() {
      this.filteredpersonnerlTable = this.personnerlTable.filter((item) => {
        return item.username === this.keyword
      }
      )
      this.personnerlTable = this.filteredpersonnerlTable
        return item.username === this.keyword;
      });
      this.personnerlTable = this.filteredpersonnerlTable;
    },
    resetData() {
      // console.log("111111")
      this.personnerlTable = this.personData
      this.keyword = ''
      this.personnerlTable = this.personData;
      this.keyword = "";
      this.status = "";
      this.getData();
    },
    // 提交新增人员表单
    submitForm() {
      // Handle form submission here
      // console.log(this.form);
      // POST请求
      this.$refs.form.validate((valid) => {
        if (valid) {
          this.dialogFormVisible = false
          axios.post('/user/add_new_personnel', this.form)
            .then(response => {
              console.log(response)
              // this.dialogVisible = false;
            })
            .catch(error => {
              console.error(error)
            })
          let departmentId = this.form.organizationId;
          this.form.organizationId = departmentId[departmentId.length - 1];
          if (!this.isUpdate) {
            post("/user/add_new_personnel", this.form).then((response) => {
              this.$message({
                message: response.message,
                type: "success",
              });
              this.dialogFormVisible = false;
              this.getData();
            });
        } else {
          console.log('error submit!!')
          return false
            put("/user/update_new_personnel", this.form).then((res) => {
              this.$message({
                message: res.message,
                type: "success",
              });
              this.dialogFormVisible = false;
              this.getData();
            });
        }
      })
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    // 清空Cascader空白
    clearCascaderBlank(list) {
      list.forEach((i) => {
        if (i.children.length === 0) {
          i.children = undefined;
        } else {
          this.clearCascaderBlank(i.children);
  }
      });
    },
    fnFilterChangeInit() {
      this.personData = [];
      this.getData();
    },
    /*
     * @param  list 数据列表
     * @param  id 后端返回的id
     **/
    getParentsById(list, id) {
      for (let i in list) {
        if (list[i].id == id) {
          return [list[i].id];
        }
        if (list[i].children) {
          let node = this.getParentsById(list[i].children, id);
          if (node !== undefined) {
            //查询到把父节把父节点加到数组前面
            node.unshift(list[i].id);
            return node;
          }
        }
      }
    },
    handleClick(row) {
      this.isUpdate = true;
      this.dialogFormVisible = true;
      this.form.name = row.username;
      this.form.roleName = row.roleName;
      this.form.phone = row.phone;
      this.form.id = row.id;
      this.form.email = row.email;
      this.form.organizationId = this.getParentsById(
        this.options,
        row.departmentId
      );
      this.form.age = row.age;
      this.form.account = row.account;
    },
    getTreeData() {
      getOrganizationalApi().then((res) => {
        this.options = res.data[0].children;
        this.clearCascaderBlank(this.options);
      });
    },
  },
  watch: {
    dialogFormVisible: {
      handler(newVal, oldVal) {
        if (newVal == false) {
          this.form = {};
          this.$refs.form.resetFields();
}
      },
    },
  },
};
</script>
<style lang="scss" scoped>
.personnel-main {
  // width: 100%;
  // height: 100%;
  .page-header-search {
src/views/standardLibrary/index.vue
@@ -44,13 +44,14 @@
          <el-table
            :data="tableData"
            style="width: 100%; margin-bottom: 20px"
            row-key="name"
            row-key="id"
            border
            height="calc(100vh - 250px)"
            default-expand-all
            ref="multipleTable"
            @select="selectTr"
            @select-all="selectAll"
            @selection-change="handleSelectionChange"
            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
          >
            <el-table-column type="selection" label="序号"> </el-table-column>
@@ -345,7 +346,6 @@
        this.$message.error("添加失败");
      }
      console.log(res);
      this.$message.success("添加成功");
      this.addTreeForm = {
        addTypeArr: [],
@@ -400,20 +400,6 @@
      this.isAllSelect = !this.isAllSelect;
      let data = this.tableData;
      this.toggleSelect(data, this.isAllSelect, "all");
      // 自定义
      if (this.isAllSelect) {
        val.forEach((i) => {
          if (i.id !== undefined) {
            this.deleteList.push(i.id);
          } else {
            i.children.forEach((c) => {
              this.deleteList.push(c.id);
            });
          }
        });
      } else {
        this.deleteList.splice(0, this.deleteList.length);
      }
    },
    //选择某行
    selectTr(selection, row) {
@@ -422,33 +408,6 @@
        this.isAllSelect = row.isChecked;
        this.toggleSelect(row, row.isChecked, "tr");
      });
      if (row.isChecked === true) {
        if (row.children !== undefined) {
          row.children.forEach((i) => {
            this.deleteList.push(i.id);
          });
        } else {
          this.deleteList.push(row.id);
        }
      } else if (row.isChecked === false) {
        if (row.children !== undefined) {
          row.children.forEach((i) => {
            this.deleteList.findIndex((c, index) => {
              if (c === i.id) {
                this.deleteList.splice(index, 1);
                return;
              }
            });
          });
        }
        this.deleteList.findIndex((c, index) => {
          if (c === row.id) {
            this.deleteList.splice(index, 1);
            return;
          }
        });
      }
    },
    //递归子级
    toggleSelect(data, flag, type) {
@@ -482,6 +441,15 @@
        }
      });
    },
    handleSelectionChange(val) {
      this.deleteList = []
      val.forEach((v) => {
        if(v.id !== undefined){
          this.deleteList.push(v.id)
        }
      })
      console.log(`output->this.deleteList`,this.deleteList)
    },
    // 表格树全部选中配置  结束
    deleteListClick() {
      deleteListApi(this.deleteList).then((res) => {