Administrator
2022-01-12 21c7375b7b38ebf2c8a2ca8fbf6fe9fb4f28250f
src/views/securityGuard/securityGuard.vue
@@ -16,10 +16,12 @@
    <el-col :span="24">
      <basic-container
        :class="[
          $store.state.control.windowWidth >= 1024 ? 'tooRowSearch' : '',
          $store.state.control.windowWidth >= 1024 ? 'tooRowSearch1' : '',
        ]"
      >
        <avue-crud
          class="tablesss"
          :key="option.height"
          :option="option"
          :search.sync="search"
          :table-loading="loading"
@@ -168,7 +170,7 @@
              :type="type"
              v-if="permission.securityGuard_delete && row.status != 2"
              @click.stop="rowStatus(row)"
              >离职登记
              >离职
            </el-button>
            <el-button
              icon="el-icon-edit"
@@ -397,6 +399,7 @@
    </el-col>
    <div
      :class="[
        'downSFZ',
        $store.state.control.windowWidth >= 1024
          ? 'downSFZqudong'
          : 'downSFZqudongS',
@@ -435,10 +438,12 @@
  getUserPractitionersInfo,
  updatePaperTime,
  getzhiwen, //指纹
  checkAccountByUser,
} from "@/api/system/user";
import { securityApply } from "@/api/accreditationRecords/accreditationRecords";
import { getList } from "@/api/securityGuard/securityGuard";
import { getDeptLazyTree } from "@/api/system/dept";
import { getInformationDetails } from "@/api/securityUnit/securityUnit";
import { getRoleTree, getRoleDetail } from "@/api/system/role";
import { mapGetters } from "vuex";
import website from "@/config/website";
@@ -446,7 +451,7 @@
import { securityFormPageColumn } from "./data";
import { mapState } from "vuex";
import Qs from "qs";
import { MessageBox } from 'element-ui';
import { MessageBox } from "element-ui";
//加载指纹类
import Client from "./Client";
@@ -531,6 +536,35 @@
    function trim(str) {
      return str.replace(/(^\s*)|(\s*$)/g, "");
    }
    /**
     * 身份证号码账号校验
     */
    let useBack = "";
    function checkAccount(idCard, callback) {
      var data = {
        cardid: idCard,
      };
      if (window.deptIdss) {
        data["deptId"] = window.deptIdss;
      }
      //调用接口校验
      if (useBack != idCard) {
        useBack = idCard;
        checkAccountByUser(data)
          .then((res) => {
            useBack = "ok";
            callback();
          })
          .catch((error) => {
            callback("当前身份证号码已录入!");
          });
      } else if (useBack == "ok") {
        callback();
      } else {
        console.log("cf");
        callback(new Error("当前身份证号码已录入!"));
      }
    }
    const validatePassCardid = (rule, value, callback) => {
      let ok = false;
      if (value.length == 18) {
@@ -550,7 +584,15 @@
      }
      if (ok) {
        callback();
        // console.log(this.nowCell,123456);
        if(this.type==1 || this.nowCell==2){
          //修改不校验身份证hao
          callback();
        }else{
          //调用接口进行账户重复校验
          checkAccount(value, callback);
        }
      } else {
        callback(new Error("身份证错误"));
      }
@@ -601,7 +643,16 @@
        callback();
      }
    };
    // let table = document.getElementsByClassName("tablesss");
    // let heard = table[0].getElementsByClassName("avue-crud__search");
    // let usNum =
    //   this.windowWidth <= 1376 && this.windowHeight <= 778 ? 170 : 332;
    // // that.option.height = +h - (+heard[0].clientHeight + 332);
    // let optionHeight = +this.windowHeight - (+heard[0].clientHeight + +usNum);
    return {
      sort: "",
      type:2,
      sortName: "",
      nowCell: "", //空为手动,2为身份证设备读取
      // 表格数据
      defaults: {},
@@ -747,7 +798,10 @@
        },
      },
      choiceList: [],
      deptIdss: "",
      option: {
        searchIndex: 5, //收缩展示数量
        searchIcon: true, //搜索是否收缩
        height: "auto",
        calcHeight: 80,
        tip: true,
@@ -766,6 +820,7 @@
        },
        indexWidth: 55,
        searchMenuSpan: 6,
        stripe: true,
        border: true,
        delBtn: true,
@@ -916,10 +971,10 @@
                },
                canvasOption: {
                  text: " ",
                  ratio: 0.1,
                  ratio: 1.0,
                },
                action: "/api/blade-resource/oss/endpoint/put-files",
                tip: "上传身份证一寸近期彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不超过500kb",
                tip: "上传近期一寸彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不小于30kb,不超过500kb",
                span: 12,
                // row: true,
                prop: "avatar",
@@ -986,7 +1041,7 @@
                rules: [
                  {
                    required: true,
                    message: "请选择",
                    message: "请选择是否有持证",
                    trigger: "blur",
                  },
                ],
@@ -995,23 +1050,33 @@
                label: "保安员证编号",
                prop: "securitynumber",
                hide: true,
                display: true,
                rules: [
                  {
                    required: false,
                    message: "请输入保安员证编号",
                    trigger: "blur",
                  },
                ],
              },
              // {
              //   label: "发证日期",
              //   prop: "paperTime",
              //   hide: true,
              //   type: "date",
              //   format: "yyyy-MM-dd",
              //   valueFormat: "yyyy-MM-dd",
              // },
              {
                label: "电子邮箱",
                label: "保安证书照片",
                prop: "email",
                type: "upload",
                listType: "picture-img",
                display: true,
                propsHttp: {
                  res: "data",
                  url: "url",
                },
                canvasOption: {
                  text: " ",
                  ratio: 1.0,
                },
                action: "/api/blade-resource/oss/endpoint/put-files",
                tip: "上传jpg,png格式图片,大小不超过2M",
                span: 12,
              },
              // {
              //     label: "籍贯",
              //     prop: "nativeplace",
              // },
              {
                label: "民族",
                prop: "nation",
@@ -1254,9 +1319,59 @@
          },
        ],
      },
      tablevisible: true,
      isNotChangeSize: true, //取消表格loging
    };
  },
  watch: {
    windowHeight() {
      let that = this;
      that.isNotChangeSize = false; //取消表格loging
      let d = {
        fn: function (h) {
          let table = document.getElementsByClassName("tablesss");
          let heard = table[0].getElementsByClassName("avue-crud__search");
          let usNum =
            that.windowWidth <= 1376 || that.windowHeight <= 778 ? 170 : 302;
          // // that.option.height = +h - (+heard[0].clientHeight + 332);
          // alert(h);
          let doit = (height) => {
            let hs = height || h;
            // alert(hs);
            // alert(heard[0].clientHeight);
            // alert(usNum);
            that.option.height = +hs - (+heard[0].clientHeight + +usNum);
            that.$nextTick(() => {
              that.refreshChange();
              setTimeout(() => {
                let d = {
                  that: this,
                  otherclass: ["downSFZ"],
                  haveOpen: true,
                };
                //刷新表格后再次调整按钮
                that.$store.dispatch("TABLE_CHANGEBUTPOSITION", d);
                that.isNotChangeSize = true; //恢复表格loging
              }, 10);
            });
          };
          if (that.option.height == "auto") {
            //解决第一次未渲染成功会报错的问题
            setTimeout(() => {
              // console.log(
              //   document
              //     .getElementsByClassName("tablesss")[0]
              //     .getElementsByClassName("avue-crud__search")
              // );
              doit(window.innerHeight);
            }, 150);
          } else {
            doit();
          }
        },
      };
      this.$store.dispatch("WHchangeHight", d);
    },
    radio() {
      if (this.radio) {
        this.SFZloding = true;
@@ -1275,6 +1390,46 @@
        this.initData(this.form.tenantId);
      }
    },
    "form.deptId": {
      handler(val) {
        if (val) {
          window.deptIdss = val;
        }
      },
      immediate: true,
    },
    "form.hold": {
      handler(val) {
        var securitynumbercolumn = this.findObject(
          this.option.group,
          "securitynumber"
        );
        var emailcolumn = this.findObject(this.option.group, "email");
        // console.log(val,1234);
        if (val == 1) {
          securitynumbercolumn.display = true;
          securitynumbercolumn.rules = [
            {
              required: true,
              message: "请输入保安员证编号",
              trigger: "blur",
            },
          ];
          emailcolumn.display = true;
        } else {
          securitynumbercolumn.display = false;
          securitynumbercolumn.rules = [
            {
              required: false,
              message: "请输入保安员证编号",
              trigger: "blur",
            },
          ];
          emailcolumn.display = false;
        }
      },
      immediate: true,
    },
    "form.fingerprint"() {
      let that = this;
      if (this.form.fingerprint != undefined) {
@@ -1292,9 +1447,7 @@
            isoks: isoks,
          });
        }
        setTimeout(() => {
          // if()
        var doZhiwen = () => {
          if (!this.form.id) {
            sets(false);
            return;
@@ -1315,7 +1468,16 @@
              }
            }
          });
        }, 1800);
        };
        setTimeout(() => {
          // var iframeDom = document.getElementById("zhiwen");
          //   console.log(iframeDom,111111);
          //   iframeDom.onload = function () {
          //     doZhiwen();
          //   };
          doZhiwen();
        }, 2800);
      } else {
        that.isopen = false;
      }
@@ -1331,7 +1493,7 @@
    },
  },
  computed: {
    ...mapGetters(["userInfo", "permission"]),
    ...mapGetters(["userInfo", "permission", "windowHeight", "windowWidth"]),
    permissionList() {
      return {
        addBtn: this.vaildData(this.permission.securityGuard_add, false),
@@ -1419,6 +1581,15 @@
    }
  },
  mounted() {
    // let d = {
    //   that: this,
    //   otherclass: ["downSFZ"],
    //   haveOpen: true,
    //   flowHeight: 332,
    // };
    // this.$store.dispatch("TABLE_CHANGEBUTPOSITION", d);
    // console.log((this.$refs.crud._props.option.height = 200));
    this.changeButsPosition("TABLE_CHANGEBUTPOSITION");
    // this.option.column[0].hide = true
    // 非保安单位模式默认加载管理组数据
    if (!website.tenantMode) {
@@ -1434,6 +1605,17 @@
    // this.olondSFZ(); //检查身份证设备是否存在
  },
  methods: {
    changeButsPosition(val) {
      let d = {
        that: this,
        otherclass: ["downSFZ"],
        haveOpen: true,
        from: "mounted",
      };
      // 开始就适应高度
      this.$store.commit("setWindowSizeHeightAdd");
      this.$store.dispatch("TABLE_CHANGEBUTPOSITION", d);
    },
    openccc() {
      console.log(this.zhiwenImg);
      // console.log(this.zhiwenChart);
@@ -1722,11 +1904,18 @@
      };
      updatePaperTime(data);
    },
    rowClickSelf(row) {
      this.$router.push({
        path: "/securityUnitChild",
        query: { fromSecunityGuardId: row },
      });
    rowClickSelf(deptId) {
      var data = {
        departmentid:deptId
      }
      getInformationDetails(data).then((res) => {
        var obj = res.data.data;
        var data = JSON.stringify(obj);
        this.$router.push({
          path: "/securityUnitChild",
          query: { data: data },
        });
      })
    },
    nodeClick(data) {
      this.treeDeptId = data.id;
@@ -1789,7 +1978,7 @@
          return securityApply(data);
        })
        .then(() => {
          // this.$refs.crud.toggleSelection();
          this.$refs.crud.toggleSelection();
          this.$message({
            type: "success",
            message: "操作成功!",
@@ -1827,7 +2016,7 @@
          return securityApply(data);
        })
        .then(() => {
          // this.$refs.crud.toggleSelection();
          this.$refs.crud.toggleSelection();
          this.$message({
            type: "success",
            message: "操作成功!",
@@ -2089,6 +2278,8 @@
    },
    selectionClear() {
      // this.selectionList = [];
      this.sort = "";
      this.sortName = "";
      // this.$refs.crud.toggleSelection();
    },
    handleDelete() {
@@ -2337,6 +2528,12 @@
      var that = this;
      // console.log(type, 123);
      this.beginSFZ();
      if (["edit"].includes(type)) {
        this.type = 1;
      }
      if (["add"].includes(type)) {
        this.type = 2;
      }
      if (["edit", "view"].includes(type)) {
        getUser(this.form.id).then((res) => {
          this.form = res.data.data;
@@ -2390,9 +2587,30 @@
    },
    //排序
    sortChange(value) {
      console.log(value, 51151515);
      // console.log(value, 51151515);
      if (value.order == "ascending") {
        this.sort = "asc";
      }
      if (value.order == "descending") {
        this.sort = "desc";
      }
      this.sortName = value.prop;
      //字段匹配
      if (value.prop == "sexs") {
        this.sortName = "sex";
      }
      if (value.prop == "examinationType") {
        this.sortName = "examination_type";
      }
      if (value.prop == "userType") {
        this.sortName = "user_type";
      }
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      if (this.isNotChangeSize) {
        this.loading = true;
      }
      params = this.search;
      var that = this;
      //获取当前登录人员的角色信息
@@ -2469,6 +2687,13 @@
              "/api/blade-system/dept/security_lazy-tree";
          }
          if (this.sort) {
            params["sort"] = this.sort;
          }
          if (this.sortName) {
            params["sortName"] = this.sortName;
          }
          let values = {
            ...params,
          };
@@ -2478,7 +2703,6 @@
            ...that.query,
          };
          that.loading = true;
          getList(page.currentPage, page.pageSize, values).then((res) => {
            const data = res.data.data;
            that.page.total = data.total;
@@ -2565,23 +2789,29 @@
    //照片上传拦截
    uploadBefore(file, done, loading, column) {
      //如果你想修改file文件,由于上传的file是只读文件,必须复制新的file才可以修改名字,完后赋值到done函数里,如果不修改的话直接写done()即可
      if (file.type.indexOf("image/") == -1) {
        MessageBox.alert("上传图片格式错误,请上传图片类型,如:JPG,PNG后缀的文件。")
        loading();
        return false;
      }
      let data = window.URL.createObjectURL(new Blob([file]));
      this.filename = file;
      this.option.img = data;
      //判断文件大小
      const isLt1M = file.size >= 30*1024 && file.size <= 500*1024;
      if (!isLt1M) {
        MessageBox.alert("上传图片大小必须大于30KB,且小于500KB!")
        loading();
        return false;
      //判断角色
      if (this.userInfo.role_name != "administrator") {
        if (file.type.indexOf("image/") == -1) {
          MessageBox.alert(
            "上传图片格式错误,请上传图片类型,如:JPG,PNG后缀的文件。"
          );
          loading();
          return false;
        }
        let data = window.URL.createObjectURL(new Blob([file]));
        this.filename = file;
        this.option.img = data;
        //判断文件大小
        const isLt1M = file.size >= 30 * 1024 && file.size <= 500 * 1024;
        if (!isLt1M) {
          MessageBox.alert("上传图片大小必须大于30KB,且小于500KB!");
          loading();
          return false;
        }
        done();
        return isLt1M;
      }
      done();
      return isLt1M;
    },
  },
};