zhongrj
2024-03-27 cc1c0a396698648256c350f6f0fe2cb2f0b02c7e
src/views/securityGuardManagement/register.vue
@@ -1,15 +1,10 @@
/*
 * @Author: Morpheus
 * @Date: 2021-07-05 16:31:54
 * @Last Modified by: liu
 * @Last Modified time: 2021-08-30 11:45:26
 * menu-name 保安员注册查询
 */
/* * @Author: Morpheus * @Date: 2021-07-05 16:31:54 * @Last Modified by: liu *
@Last Modified time: 2021-10-21 15:31:24 * menu-name 保安员注册查询 */
<template>
  <div>
    <el-row class="registersss">
      <el-col :span="3">
        <div class="box">
        <div class="box changeBoxs">
          <el-scrollbar>
            <basic-container>
              <avue-tree
@@ -21,9 +16,17 @@
          </el-scrollbar>
        </div>
      </el-col>
      <el-col :span="21">
        <basic-container>
      <el-col :span="21" class="clearBottomMargin">
        <basic-container
          :class="[
            $store.state.control.screenSize == 1366
              ? 'smallSize'
              : 'normalSize',
            $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : '',
          ]"
        >
          <avue-crud
            class="tablesss"
            :option="option"
            :search.sync="search"
            :table-loading="loading"
@@ -54,50 +57,119 @@
                    <template slot-scope="{row}"
                              slot="deptName">
                        <el-tag>{{row.deptName}}</el-tag>
                    </template>
                    <template slot-scope="{row}"
                              slot="userTypeName">
                        <el-tag>{{row.userTypeName}}</el-tag>
                    </template> -->
            <template slot-scope="{ row }" slot="deptId">
            <template slot-scope="{ row }" slot="age">
              {{ row.age == -1 ? "" : row.age }}
            </template>
            <template slot-scope="{ row }" slot="sex">
              {{
                row.sex == -1
                  ? ""
                  : row.sex == 1
                  ? "男"
                  : row.sex == 2
                  ? "女"
                  : ""
              }}
            </template>
            <template slot-scope="{ row }" slot="deptName">
              <el-tag
                class="rowClickSelf"
                title="点击查看所属公司情况"
                @click="rowClickSelf(row.deptId)"
                >{{ row.$deptId }}</el-tag
                >{{ row.deptName }}</el-tag
              >
            </template>
            <template slot-scope="{ type, size, row }" slot="menu">
              <el-button
                :size="size"
                :type="type"
                class="zhengJian-icon"
                @click.stop="handleRowClick(row)"
                >详情</el-button
              <el-tooltip
                placement="bottom"
                effect="light"
                transition="el-collapse-transition"
                popper-class="caozuolanpopper"
                v-if="$store.state.control.changeMenuSize"
              >
              <el-button
                :size="size"
                :type="type"
                class="zhengJian-icon"
                @click.stop="honor(row)"
                >荣誉录入</el-button
              >
              <el-button
                :size="size"
                :type="type"
                class="zhengJian-icon"
                @click.stop="handleViewCredentials(row)"
                >打印证件</el-button
              >
                <div slot="content">
                  <el-button
                    icon="el-icon-user"
                    :size="size"
                    :type="type"
                    class="zhengJian-icon"
                    @click.stop="handleRowClick(row)"
                    >查看详情</el-button
                  >
                  <br />
                  <el-button
                    icon="el-icon-mobile"
                    :size="size"
                    :type="type"
                    class="zhengJian-icon"
                    @click.stop="honor(row)"
                    >荣誉录入</el-button
                  >
                  <br />
                  <el-button
                    icon="el-icon-printer"
                    :size="size"
                    :type="type"
                    class="zhengJian-icon"
                    :disabled="row.hold != 1"
                    :title="row.hold != 1 ? '暂无证件或已吊销' : ''"
                    @click.stop="handleViewCredentials(row)"
                    >打印证件</el-button
                  >
              <el-button
                icon="icon-zhengjian"
                :size="size"
                :type="type"
                class="zhengJian-icon"
                @click.stop="handleCredentials(row)"
                >证件吊销</el-button
              >
                  <br />
                  <el-button
                    icon="el-icon-brush"
                    :size="size"
                    :type="type"
                    class="zhengJian-icon"
                    :disabled="row.hold != 1"
                    :title="row.hold != 1 ? '暂无证件或已吊销' : ''"
                    @click.stop="handleCredentials(row)"
                    >证件吊销</el-button
                  >
                </div>
                <el-button icon="el-icon-s-operation" :size="size" :type="type"
                  >操作
                </el-button>
              </el-tooltip>
              <div v-if="!$store.state.control.changeMenuSize">
                <el-button
                  :size="size"
                  :type="type"
                  class="zhengJian-icon"
                  @click.stop="handleRowClick(row)"
                  >详情</el-button
                >
                <el-button
                  :size="size"
                  :type="type"
                  class="zhengJian-icon"
                  @click.stop="honor(row)"
                  >荣誉录入</el-button
                >
                <el-button
                  :size="size"
                  :type="type"
                  class="zhengJian-icon"
                  :disabled="row.hold != 1"
                  :title="row.hold != 1 ? '暂无证件或已吊销' : ''"
                  @click.stop="handleViewCredentials(row)"
                  >打印证件</el-button
                >
                <el-button
                  icon="icon-zhengjian"
                  :size="size"
                  :type="type"
                  class="zhengJian-icon"
                  :disabled="row.hold != 1"
                  :title="row.hold != 1 ? '暂无证件或已吊销' : ''"
                  @click.stop="handleCredentials(row)"
                  >证件吊销</el-button
                >
              </div>
            </template>
          </avue-crud>
          <el-dialog
@@ -155,19 +227,30 @@
    </el-dialog>
    <div class="baoanzheng" v-if="dialogVisiblecertificates">
      <div class="baz-main">
      <!-- 保安员证 -->
      <baoanz
        :data="objVisiblecertificates"
        v-if="dialogVisiblecertificates"
      ></baoanz>
      <!-- <div class="baz-main">
        <div class="baz-m-body" ref="baoanzheng">
          <div class="bmb-heard">保安员证</div>
          <!-- <img src="/img/mock/card/card-1.jpg" alt="" /> -->
          <div class="img">
            <div v-if="!objVisiblecertificates.myPicture">暂无照片</div>
            <img :src="objVisiblecertificates.myPicture" alt="" v-else />
          </div>
          <div class="imgs">
            <div v-if="erweima == ''">暂无二维码</div>
            <img :src="erweima" alt="" v-else />
          </div>
          <div class="bmb-b">
            姓名:<span class="bmb-b-s">{{
              objVisiblecertificates.realName
            }}</span>
          </div>
          <div class="bmb-b">
            性别:<span class="bmb-b-s">{{
              objVisiblecertificates.sexName
            }}</span>
            性别:<span class="bmb-b-s">{{ objVisiblecertificates.$sex }}</span>
          </div>
          <div class="bmb-b">
            编号:<span class="bmb-b-s">{{
@@ -175,10 +258,11 @@
            }}</span>
          </div>
          <div class="bmb-b">
            发证机关:<span class="bmb-b-s" style="margin-right: 15px"
              >南昌市公安局</span
            >发证日期:<span class="bmb-b-s">{{
              objVisiblecertificates.createTime.slice(0, 10)
            发证机关:<span class="bmb-b-s">南昌市公安局</span>
          </div>
          <div class="bmb-b">
            发证日期:<span class="bmb-b-s">{{
              objVisiblecertificates.paperTime.slice(0, 10)
            }}</span>
          </div>
        </div>
@@ -186,7 +270,7 @@
          <el-button type="primary" @click="Print">打 印</el-button>
          <el-button type="primary" @click="closePrint"> 取 消 </el-button>
        </span>
      </div>
      </div> -->
    </div>
  </div>
</template>
@@ -202,9 +286,13 @@
import { mapGetters } from "vuex";
import website from "@/config/website";
import { getToken } from "@/util/auth";
import { addhonor } from "@/api/register/honor";
import { addhonor, getER } from "@/api/register/honor";
import baoanz from "./baoanz.vue";
import { getInformationDetails } from "@/api/securityCompany/security";
export default {
  components: {
    baoanz,
  },
  data() {
    const validatePass = (rule, value, callback) => {
      if (value === "") {
@@ -222,9 +310,12 @@
        callback();
      }
    };
    let menuSize = this.$store.state.control.changeMenuSize ? 90 : 310;
    return {
      dialogVisiblecertificates: false,
      objVisiblecertificates: {},
      erweima: "", //二维码
      objf: {},
      optionf: {
@@ -287,6 +378,7 @@
        pageSize: 10,
        currentPage: 1,
        total: 0,
        ...this.$store.state.control.changePageSize,
      },
      init: {
@@ -303,16 +395,42 @@
        lazy: true,
        treeLoad: function (node, resolve) {
          const parentId = node.level === 0 ? 0 : node.data.id;
          getDeptLazyTree(parentId).then((res) => {
            resolve(
              res.data.data.map((item) => {
                return {
                  ...item,
                  leaf: !item.hasChildren,
                };
              })
            );
          });
          if (parentId == 0) {
            getDeptLazyTree(parentId).then((res) => {
              resolve(
                res.data.data.map((item) => {
                  return {
                    ...item,
                    leaf: !item.hasChildren,
                  };
                })
              );
            });
          } else if (parentId == "1372091709474910209") {
            getDeptLazyTree(parentId).then((res) => {
              resolve(
                res.data.data[0].children.map((item) => {
                  return {
                    ...item,
                    leaf: !item.hasChildren,
                  };
                })
              );
            });
          } else {
            getDeptLazyTree(parentId).then((res) => {
              res.data.data = [];
              resolve(
                res.data.data.map((item) => {
                  return {
                    ...item,
                    leaf: !item.hasChildren,
                  };
                })
              );
            });
          }
        },
        addBtn: false,
        menu: false,
@@ -343,19 +461,20 @@
        //dialogType: 'drawer',
        dialogClickModal: false,
        // 操作栏宽度
        menuWidth: 310,
        menuWidth: menuSize,
        ...this.$store.state.control.clearOtherBut,
        column: [
          {
            label: "姓名",
            prop: "realName",
            search: true,
            searchSpan: 3,
            width: 60,
            width: 69,
            searchLabelWidth: 50,
            display: false,
          },
          {
            label: "所属保安公司",
            label: "企业名称",
            searchLabelWidth: "110",
            // prop: "deptName",
            prop: "deptId",
@@ -367,16 +486,25 @@
              value: "id",
            },
            slot: true,
            hide:true,
            searchSpan: 5,
            display: false,
            overHidden: true,
            search: true,
          },
          {
            label: "企业名称",
            prop: "deptName",
            slot: true,
            display: false,
            overHidden: true,
            width: 198,
          },
          {
            label: "性别",
            prop: "sex",
            width: 55,
            slot: true,
            type: "select",
            dicData: [
              {
@@ -399,8 +527,8 @@
            prop: "cardid",
            search: true,
            searchLabelWidth: 90,
            searchSpan: 4,
            minWidth: 140,
            searchSpan: 5,
            minWidth: 165,
            display: false,
          },
@@ -432,12 +560,14 @@
            label: "年龄",
            prop: "age",
            width: 55,
            slot: true,
            display: false,
          },
          {
            label: "学历",
            prop: "education",
            display: false,
            hide: true,
            width: 90,
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=educationType",
            props: {
@@ -457,7 +587,7 @@
          {
            label: "联系电话",
            prop: "phone",
            minWidth: 95,
            minWidth: 110,
            display: false,
          },
          {
@@ -472,7 +602,7 @@
            search: true,
            searchLabelWidth: 90,
            minWidth: 105,
            searchSpan: 4,
            searchSpan: 5,
            addDisplay: false,
            editDisplay: false,
            // hide: true,
@@ -519,14 +649,28 @@
            prop: "hold",
            slot: true,
            search: true,
            searchSpan: 3,
            width: 72,
            searchSpan: 4,
            width: 100,
            display: false,
            dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage",
            props: {
              label: "dictValue",
              value: "dictKey",
            },
            dicData: [
              {
                label: "是",
                value: "1",
              },
              {
                label: "否",
                value: "2",
              },
              {
                label: "已吊销",
                value: "3",
              },
            ],
            // dicUrl: "/api/blade-system/dict-biz/dictionary?code=equipage",
            // props: {
            //   label: "dictValue",
            //   value: "dictKey",
            // },
            type: "select",
            rules: [
              {
@@ -647,8 +791,10 @@
    },
    "excelForm.isCovered"() {
      if (this.excelForm.isCovered !== "") {
        const column = this.findObject(this.excelOption.column, "excelFile");
        column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
        try {
          const column = this.findObject(this.excelOption.column, "excelFile");
          column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
        } catch {}
      }
    },
  },
@@ -676,14 +822,23 @@
    if (!website.tenantMode) {
      this.initData(website.tenantId);
    }
    this.$store.commit("setWindowSizeHeightAdd");
  },
  methods: {
    rowClickSelf(row) {
      console.log(row, "baoan");
      this.$router.push({
        path: "/securityCompany/index",
        query: { fromSecunityGuardId: row },
      });
    rowClickSelf(deptId) {
      var data = {
        departmentid:deptId
      }
      getInformationDetails(data).then((res) => {
        var obj = res.data.data;
        obj["name"] = "保安公司详细信息";
        var data = JSON.stringify(obj);
        this.$router.push({
          path: "/securityCompany/index",
          query: { data: data },
        });
      })
    },
    Print() {
      this.$Print(this.$refs.baoanzheng);
@@ -696,18 +851,30 @@
      this.dialogVisible = false;
    },
    submitf(form, done) {
      console.log(form);
      // console.log(form);
      // this.$message.success(JSON.stringify(form));
      addhonor(form).then((res) => {
        console.log(res);
      });
      addhonor(form).then(
        (res) => {
          // console.log(res);
          this.$message({
            type: "success",
            message: "操作成功!",
          });
        },
        (error) => {
          this.$message({
            type: "info",
            message: "操作失败",
          });
        }
      );
      this.objf = {};
      this.dialogVisible = false;
      done();
    },
    errorf(err) {
      this.$message.success("请查看控制台");
      console.log(err);
      // console.log(err);
    },
    handleClose(done) {
      this.objf = {};
@@ -722,13 +889,11 @@
        honor: "",
        honortime: "",
      };
      console.log(this.objf);
      console.log(row);
      // console.log(this.objf);
      // console.log(row);
      this.dialogVisible = true;
    },
    nodeClick(data) {
      //   this.treeDeptId = data.id;
      // console.log(data, 55555);
      if (data.title != "南昌市公安局") {
        this.jurisdiction = data.id;
      } else {
@@ -739,16 +904,22 @@
    },
    initData(tenantId) {
      getRoleTree(tenantId).then((res) => {
        const column = this.findObject(this.option.group, "roleId");
        column.dicData = res.data.data;
        try {
          const column = this.findObject(this.option.group, "roleId");
          column.dicData = res.data.data;
        } catch {}
      });
      getDeptTree(tenantId).then((res) => {
        const column = this.findObject(this.option.group, "deptId");
        column.dicData = res.data.data;
        try {
          const column = this.findObject(this.option.group, "deptId");
          column.dicData = res.data.data;
        } catch {}
      });
      getPostList(tenantId).then((res) => {
        const column = this.findObject(this.option.group, "postId");
        column.dicData = res.data.data;
        try {
          const column = this.findObject(this.option.group, "postId");
          column.dicData = res.data.data;
        } catch {}
      });
    },
@@ -780,11 +951,11 @@
    searchChange(params, done) {
      this.query = params;
      this.page.currentPage = 1;
      var deptId;
      // var deptId;
      if (params.deptId) {
        deptId = params.deptId;
        this.query["deptId"] = params.deptId;
      }
      this.onLoad(this.page, params, deptId);
      this.onLoad(this.page, params);
      done();
    },
    selectionChange(list) {
@@ -835,28 +1006,29 @@
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}, deptId) {
    onLoad(page, params = {}) {
      this.loading = true;
      // console.log(this.jurisdiction,33333);
      params["jurisdiction"] = this.jurisdiction;
      getListSecurity(
        page.currentPage,
        page.pageSize,
        Object.assign(params, this.query),
        deptId
        Object.assign(params, this.query)
      ).then((res) => {
        const data = res.data.data;
        this.page.total = data.total;
        var d = data.records;
        var date = new Date();
        var datayear = date.getFullYear();
        for (const key in d) {
          var year = d[key].cardid.slice(6, 10);
          d[key]["age"] = +datayear - +year;
          // d[key].securitynumber = "赣洪202100009";
        }
        // var d = data.records;
        // var date = new Date();
        // var datayear = date.getFullYear();
        // for (const key in d) {
        //   var year = d[key].cardid.slice(6, 10);
        //   d[key]["age"] = +datayear - +year;
        //   // d[key].securitynumber = "赣洪202100009";
        // }
        this.data = data.records;
        console.log(this.data);
        // console.log(this.data);
        this.loading = false;
        this.$store.commit("setWindowSizeHeightAdd");
        this.selectionClear();
      });
    },
@@ -906,40 +1078,47 @@
      // console.log($);
      // this.$Print("#certificatess");
      this.objVisiblecertificates = obj;
      console.log(this.objVisiblecertificates);
      // console.log(this.objVisiblecertificates);
      getER(this.objVisiblecertificates.securitynumber).then((res) => {
        this.erweima = res.data;
        // console.log(res.data);
      });
    },
    // 证件吊销事件
    handleCredentials(row) {
      if (row.hold == 1) {
      // console.log(row);
      // return;
      if (row.hold == 2) {
        this.$message({
          type: "info",
          message: "证件未拥有!",
        });
      } else if (row.hold == 2) {
      } else if (row.hold == 3) {
        this.$message({
          type: "info",
          message: "证件已吊销!",
        });
      } else {
      } else if (row.hold == 1) {
        this.$confirm("是否吊销该人员的证件?", "提示", {
          confirmButtonText: "是",
          cancelButtonText: "否",
          type: "warning",
        })
          .then(() => {
            updateHold(2, row.cardid).then((res) => {
              console.log(res);
            updateHold(3, row.cardid).then((res) => {
              // console.log(res);
              this.$message({
                type: "success",
                message: "删除成功!",
                message: "吊销成功!",
              });
              this.refreshChange();
            });
          })
          .catch(() => {
            this.$message({
              type: "info",
              message: "已取消删除",
            });
            // this.$message({
            //   type: "info",
            //   message: "已取消删除",
            // });
          });
      }
    },
@@ -947,9 +1126,9 @@
};
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.box {
  height: 800px;
  height: auto;
}
.el-scrollbar {
@@ -985,13 +1164,91 @@
  align-items: center;
  justify-content: center;
}
// .baz-main {
//   position: relative;
//   top: 15px;
//   // width: 441px;
//   // height: 358px;
//   width: 491px;
//   height: 468px;
//   // background-color: #004ca7;
//   background-color: #fff;
//   display: flex;
//   align-items: center;
//   justify-content: center;
//   flex-direction: column;
// }
// .baz-m-body {
//   width: 461px;
//   height: 308px;
//   background-image: url("/img/register/bazbj.png");
//   background-size: 100% 100%;
//   .bmb-heard {
//     font-size: 2rem;
//     width: 100%;
//     text-align: center;
//     letter-spacing: 1rem;
//     margin-bottom: 40px;
//     position: relative;
//     top: 20px;
//   }
//   img {
//     width: 130px;
//     height: 130px;
//     border-radius: 130px;
//     position: absolute;
//     top: 110px;
//     right: 60px;
//   }
//   .bmb-b {
//     padding-left: 20px;
//     box-sizing: border-box;
//     height: 50px;
//     margin-left: 10px;
//     width: 100%;
//     font-size: 1rem;
//     font-weight: 400;
//     .bmb-b-s {
//       display: inline-block;
//       width: 110px;
//       font-size: 1.1rem;
//       font-weight: 600;
//     }
//   }
// }
// .PrintBut {
//   margin-top: 15px;
// }
// .rowClickSelf {
//   &:hover {
//     cursor: pointer;
//   }
// }
// .baoanzheng {
//   // position: fixed;
//   position: relative;
//   // top: 0;
//   top: 0;
//   // left: -10%;
//   left: 0;
//   // height: 0;
//   width: 100%;
//   height: calc(100% - 100px);
//   // background-color: rgba(0, 0, 0, 0.5);
//   background-color: #fff;
//   z-index: 9000;
//   display: flex;
//   align-items: center;
//   justify-content: center;
// }
.baz-main {
  position: relative;
  top: 15px;
  // width: 441px;
  // height: 358px;
  width: 491px;
  height: 468px;
  width: 750px;
  height: 550px;
  // background-color: #004ca7;
  background-color: #fff;
  display: flex;
@@ -1000,49 +1257,69 @@
  flex-direction: column;
}
.baz-m-body {
  width: 461px;
  height: 308px;
  width: 750px;
  height: 550px;
  background-image: url("/img/register/bazbj.png");
  background-size: 100% 100%;
  .bmb-heard {
    font-size: 2rem;
    font-size: 4rem;
    width: 100%;
    text-align: center;
    letter-spacing: 1rem;
    letter-spacing: 1.4rem;
    margin-bottom: 40px;
    padding-left: 10px;
    position: relative;
    top: 20px;
  }
  img {
    width: 130px;
    height: 130px;
    border-radius: 130px;
  .img {
    width: 152px;
    height: 205px;
    border-radius: 10px;
    position: absolute;
    // border: 1px solid rgba($color: #888888, $alpha: 0.5);
    top: 110px;
    right: 60px;
    right: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    img {
      width: 100%;
      height: 100%;
    }
  }
  .imgs {
    width: 110px;
    height: 110px;
    border-radius: 10px;
    position: absolute;
    // border: 1px solid rgba($color: #888888, $alpha: 0.5);
    top: 330px;
    right: 103px;
    display: flex;
    align-items: center;
    justify-content: center;
    img {
      width: 100%;
      height: 100%;
    }
  }
  .bmb-b {
    padding-left: 20px;
    box-sizing: border-box;
    height: 50px;
    margin-left: 10px;
    height: 3.9rem;
    margin-left: 3rem;
    width: 100%;
    font-size: 1rem;
    font-weight: 400;
    font-size: 2rem;
    font-weight: 300;
    .bmb-b-s {
      display: inline-block;
      width: 110px;
      font-size: 1.1rem;
      font-weight: 600;
      width: 20rem;
      font-size: 2rem;
      font-weight: 300;
    }
  }
}
.PrintBut {
  margin-top: 15px;
}
.rowClickSelf {
  &:hover {
    cursor: pointer;
  }
}
</style>