zhangzengfei
2022-07-20 4a800a8fc83c6bd1f86a8e847b079a51a7532c09
src/pages/library/components/personList.vue
@@ -20,6 +20,7 @@
        </div>
        <div class="right-btns">
          <span style="margin-right: 2px">底库状态(生效/失效)</span>
          <el-switch
            :active-value="1"
            :width="52"
@@ -113,7 +114,6 @@
        tooltip-effect="dark"
        style="width: 100%; overflow: auto"
        :fit="true"
        row-class-name="hover-row"
        cell-class-name="cell-classname"
        @row-click="pickRow"
        :default-sort="{ prop: 'createTime', order: 'descending' }"
@@ -202,7 +202,7 @@
                <span
                  class="iconfont iconbianjixinxi-09"
                  style="font-size: 24px; cursor: pointer"
                  @click="handleClick(scope.row)"
                  @click="editRow(scope.row)"
                ></span>
              </el-tooltip>
            </fTemplate>
@@ -424,7 +424,7 @@
    <el-drawer title="修改信息" :modal="false" :visible.sync="showInfoDrawer">
      <el-form
        ref="formForEdit"
        :model="form"
        :model="inputPersonForm"
        label-width="100px"
        :rules="rules"
      >
@@ -459,8 +459,8 @@
              </div>
            </div>
            <img
              v-if="`httpImage/` + form.personPicUrl"
              :src="`/httpImage/` + form.personPicUrl"
              v-if="`httpImage/` + inputPersonForm.personPicUrl"
              :src="`/httpImage/` + inputPersonForm.personPicUrl"
              style="
                max-height: 100px;
                width: 100px;
@@ -476,7 +476,7 @@
            <el-form-item label="ID" style="width: 100%; margin-bottom: 20px">
              <el-input
                size="small"
                v-model="form.id"
                v-model="inputPersonForm.id"
                disabled
                placeholder="请输入"
              ></el-input>
@@ -492,7 +492,7 @@
            >
              <el-input
                size="small"
                v-model="form.picDesc"
                v-model="inputPersonForm.picDesc"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
@@ -503,7 +503,7 @@
            <el-form-item label="姓名" style="width: 100%; margin-bottom: 20px">
              <el-input
                size="small"
                v-model="form.personName"
                v-model="inputPersonForm.personName"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
@@ -516,7 +516,7 @@
              prop="sex"
              style="width: 100%; margin-bottom: 20px; text-align: left"
            >
              <el-radio-group v-model="form.sex" class="mt10">
              <el-radio-group v-model="inputPersonForm.sex" class="mt10">
                <el-radio label="男"></el-radio>
                <el-radio label="女"></el-radio>
              </el-radio-group>
@@ -527,11 +527,12 @@
          <el-col :span="20">
            <el-form-item
              label="身份证号"
              prop="idCard"
              style="width: 100%; margin-bottom: 20px"
            >
              <el-input
                size="small"
                v-model="form.idCard"
                v-model="inputPersonForm.idCard"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
@@ -541,11 +542,12 @@
          <el-col :span="20">
            <el-form-item
              label="手机号"
              prop="phoneNum"
              style="width: 100%; margin-bottom: 20px"
            >
              <el-input
                size="small"
                v-model="form.phoneNum"
                v-model="inputPersonForm.phoneNum"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
@@ -560,7 +562,7 @@
            >
              <el-select
                size="small"
                v-model="form.monitorLevel"
                v-model="inputPersonForm.monitorLevel"
                placeholder="请选择"
                style="width: 100%"
              >
@@ -582,7 +584,7 @@
            >
              <el-input
                size="small"
                v-model="form.fromServerId"
                v-model="inputPersonForm.fromServerId"
                disabled
              ></el-input>
            </el-form-item>
@@ -596,7 +598,7 @@
            >
              <el-input
                size="small"
                v-model="form.createTime"
                v-model="inputPersonForm.createTime"
                disabled
              ></el-input>
            </el-form-item>
@@ -607,7 +609,7 @@
            <el-form-item label="其他" style="width: 100%; margin-bottom: 20px">
              <el-input
                size="small"
                v-model="form.reserved"
                v-model="inputPersonForm.reserved"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
@@ -615,19 +617,16 @@
        </el-row>
      </el-form>
      <div class="dialog-footer">
        <!-- {{BaseManageData.personList[1].idCard}} -->
        <el-button
          size="small"
          class="cancel-btn"
          @click="handleClose"
          type="info"
          >取 消</el-button
          >取消</el-button
        >
        <el-button
          size="small"
          class="sure-btn"
          type="primary"
          @click="submit()"
          >确 定</el-button
        <el-button size="small" class="sure-btn" type="primary" @click="submit"
          >确定</el-button
        >
      </div>
    </el-drawer>
@@ -687,6 +686,8 @@
        >
      </span>
    </el-dialog>
    <!-- 确认删除对话框 -->
    <el-dialog
      :visible.sync="askDeleteShow"
      :center="true"
@@ -703,9 +704,12 @@
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="askDeleteShow = false">取 消</el-button>
        <el-button type="primary" @click="handleDel">确 定</el-button>
        <el-button type="primary" @click="handleDel" :loading="delBtnLoading"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog
      title="复制到"
      :visible.sync="copyVisiabled"
@@ -864,13 +868,27 @@
  updateBasePerson,
  deleteBasePersons,
  updateDbTableStatus,
  deleteDbPersonById,
  deleteDBtablesById,
} from "@/api/baseLibrary";
import { getCameraFaceData } from "@/api/es";
import { isIDCard } from "../../../scripts/validate";
import axios from "axios";
import UploadBtn from "./upload";
import fTemplate from "@/components/fTemplate";
import UploadIcon from "@/components/searching/UploadIcon.vue";
function isPhone(rule, value, callback) {
  if (!value) {
    return callback();
  } else if (value.trim()) {
    var pattern = /^1[345789]\d{9}$/;
    if (pattern.test(value)) {
      return callback();
    }
    return callback(new Error("输入的手机号错误"));
  }
}
Date.prototype.Format = function (fmt) {
  var o = {
    "M+": this.getMonth() + 1, //月份
@@ -896,80 +914,19 @@
};
export default {
  data() {
    return {
      timeRange: [
        new Date(2020, 7, 25, 8),
        new Date(new Date().setHours(23, 59, 59)),
      ],
      memberInfo: {
        personName: "",
        sex: "",
        idCard: "",
        reserved: "",
      },
      askDeleteShow: false,
      toDeleteId: "",
      reqCameraParams: {
        startTime: new Date(2020, 7, 25, 8).Format("yyyy-MM-dd HH:mm:ss"),
        endTime: new Date().Format("yyyy-MM-dd HH:mm:ss"),
        thresholdTime: 10,
        faceId: [],
      },
      cameraDetailData: [],
      cameraDetailVisible: false,
      dialogFormVisible: false,
      copyVisiabled: false,
      moveVisiabled: false,
      buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [],
      searchName: "",
      current: 1,
      compare: false,
      pageSize: 10,
      total: 0,
      orderType: "desc",
      orderName: "createTime",
      contentValue: "",
      visible: false,
      showInfoDrawer: false,
      selectedRowKeys: [],
      form: {
        id: "",
        sex: "男",
        personName: "呵呵呵",
        tableId: "",
        picDesc: "",
        idCard: "12312938102143253",
        phoneNum: "18712766787",
        monitorLevel: "one",
        faceUrl: "group2/M00/0A/D7/wKgBnFyjH0-AUE5eAAC8hSMP2Yw110.jpg",
        enable: 0,
        reserved: "",
      },
      rules: {
        picDesc: [
          { required: true, message: "请输入照片标识", trigger: "change" },
        ],
        sex: [{ required: true, message: "请勾选性别", trigger: "change" }],
        monitorLevel: [
          { required: true, message: "请选择人员等级", trigger: "change" },
        ],
      },
      tableData: [],
      oldWidth: "",
      oldHeight: "",
      delType: "",
      faceDataCount: 0,
      // 上传后的弹框显示
      dialogVisible: false,
      // 批量上传后的返回结果
      uploadResult: {
        failList: [],
        successList: [],
        multiFaceList: [],
        noFaceList: [],
      },
    };
  components: {
    UploadBtn,
    fTemplate,
    UploadIcon,
  },
  props: {
    baseObject: {
      default: () => {},
      type: Object,
    },
    syncType: {
      type: String,
    },
  },
  computed: {
    isAdmin() {
@@ -993,6 +950,80 @@
        default:
          return ["", ""];
      }
    },
  },
  data() {
    return {
      timeRange: [
        new Date(2020, 7, 25, 8),
        new Date(new Date().setHours(23, 59, 59)),
      ],
      memberInfo: {
        personName: "",
        sex: "",
        idCard: "",
        reserved: "",
      },
      askDeleteShow: false,
      toDeleteId: "",
      reqCameraParams: {
        startTime: new Date(2020, 7, 25, 8).Format("yyyy-MM-dd HH:mm:ss"),
        endTime: new Date().Format("yyyy-MM-dd HH:mm:ss"),
        thresholdTime: 10,
        faceId: [],
      },
      cameraDetailData: [],
      cameraDetailVisible: false,
      copyVisiabled: false,
      moveVisiabled: false,
      buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [],
      searchName: "",
      current: 1,
      compare: false,
      pageSize: 10,
      total: 0,
      orderType: "desc",
      orderName: "createTime",
      contentValue: "",
      visible: false,
      showInfoDrawer: false,
      selectedRowKeys: [],
      inputPersonForm: {},
      rules: {
        picDesc: [
          { required: true, message: "请输入照片标识", trigger: "change" },
        ],
        sex: [{ required: true, message: "请勾选性别", trigger: "change" }],
        idCard: [{ validator: isIDCard, trigger: "blur" }],
        phoneNum: [{ validator: isPhone, trigger: "blur" }],
        monitorLevel: [
          { required: true, message: "请选择人员等级", trigger: "change" },
        ],
      },
      tableData: [],
      oldWidth: "",
      oldHeight: "",
      delType: "",
      faceDataCount: 0,
      // 上传后的弹框显示
      dialogVisible: false,
      // 批量上传后的返回结果
      uploadResult: {
        failList: [],
        successList: [],
        multiFaceList: [],
        noFaceList: [],
      },
      delBtnLoading: false,
    };
  },
  watch: {
    "BaseManageData.selectBlacks": function (value) {
      this.blackAngWhite();
    },
    "BaseManageData.selectWhites": function (value) {
      this.blackAngWhite();
    },
  },
  methods: {
@@ -1049,34 +1080,6 @@
      this.delType = typ;
      id && (this.toDeleteId = id);
    },
    deleteThis() {
      let token =
        sessionStorage.getItem("loginedInfo") &&
        JSON.parse(sessionStorage.getItem("loginedInfo")).access_token;
      fetch(`/data/api-v/dbperson/deleteDbPersonById?id=${this.toDeleteId}`, {
        method: "GET",
        headers: {
          "Content-Type": "application/json",
          Authorization: token,
        },
      })
        .then((res) => {
          return res.json();
        })
        .then((data) => {
          if (data.success) {
            this.$notify({
              type: "success",
              message: "该人员删除成功!",
            });
            this.askDeleteShow = false;
          }
          this.getPersonList();
        })
        .catch((err) => {});
    },
    sayHello() {},
    getUploadResult(result) {
      this.uploadResult = result.data;
      this.dialogVisible = true;
@@ -1116,20 +1119,23 @@
    edit() {
      this.$emit("changeShow", this.baseObject, this.syncType);
    },
    deleteBase() {
      let token =
        sessionStorage.getItem("loginedInfo") &&
        JSON.parse(sessionStorage.getItem("loginedInfo")).access_token;
      fetch(`/data/api-v/dbtable/deleteDBtablesById?id=${this.baseObject.id}`, {
        method: "GET",
        headers: {
          "Content-Type": "application/json",
          Authorization: token,
        },
      })
        .then((res) => {
          return res.json();
    deleteThis() {
      debugger;
      deleteDbPersonById({ id: this.toDeleteId })
        .then((data) => {
          if (data.success) {
            this.$notify({
              type: "success",
              message: "该人员删除成功!",
            });
          }
          this.getPersonList();
        })
        .catch((err) => {});
    },
    deleteBase() {
      deleteDBtablesById({ id: this.baseObject.id })
        .then((res) => {
          if (res.success) {
            this.$notify({
@@ -1137,6 +1143,7 @@
              message: "底库删除成功!",
            });
          }
          this.$emit("onDelete");
        })
        .catch((err) => {
@@ -1146,17 +1153,40 @@
          });
        });
    },
    async getPersonList() {
      if (this.baseObject.id && this.baseObject.id !== undefined) {
        this.BaseManageData.tableId = this.baseObject.id;
        this.setLoadSearch(this.BaseManageData.queryPersonList());
    async deleteBatch() {
      let ids = [];
      this.selectedRowKeys.map((item, index) => {
        ids.push(item.id);
      });
      let res = await deleteBasePersons({ ids: ids });
      if (res.success) {
        this.$notify({
          type: "success",
          message: "删除成功!",
        });
        this.getPersonList();
      } else {
        this.$notify({
          type: "error",
          message: "删除失败!",
        });
      }
    },
    async getPersonList() {
      console.log(this.baseObject);
      this.$nextTick(() => {
        if (this.baseObject.id && this.baseObject.id !== undefined) {
          this.BaseManageData.tableId = this.baseObject.id;
          this.setLoadSearch(this.BaseManageData.queryPersonList());
        }
      });
    },
    changeDialog(data) {
      data.erFileList.map((item, index) => {
        this.$notify({
          type: "error",
          message: item.errorMsg.message,
          customClass: "PersonListDialog",
        });
      });
    },
@@ -1175,39 +1205,26 @@
      this.BaseManageData.size = val;
      this.getPersonList();
    },
    handleClick(row) {
      this.form = row;
    editRow(row) {
      this.inputPersonForm = { ...row };
      this.showInfoDrawer = true;
    },
    async submit() {
      this.$refs["formForEdit"].validate(async (valid) => {
        if (valid) {
          let { ...json } = this.form;
          let { ...json } = this.inputPersonForm;
          delete json["compareScore"];
          let res = await updateBasePerson(json);
          if (res.success) {
            this.$notify({
              type: "success",
              message: "人员修改成功!",
            });
            this.getPersonList();
            this.$notify.success("人员修改成功!");
            this.showInfoDrawer = false;
          } else {
            this.$notify({
              type: "error",
              message: "人员修改失败,请重试!!",
            });
            this.$notify.error("人员修改失败,请重试!");
          }
        } else {
          return false;
        }
      });
    },
    confirm() {
      this.$confirm({
        title: "Confirm",
        content: "Bla bla ...",
        okText: "确认",
        cancelText: "取消",
      });
    },
    async enable(item) {
@@ -1238,14 +1255,18 @@
    handleSearch() {
      this.getPersonList();
    },
    handleDel() {
    async handleDel() {
      this.delBtnLoading = true;
      if (this.delType == "single") {
        this.deleteThis();
        await this.deleteThis();
      } else if (this.delType == "base") {
        this.deleteBase();
        await this.deleteBase();
      } else if (this.delType == "batch") {
        this.deleteBatch();
        await this.deleteBatch();
      }
      this.delBtnLoading = false;
      this.askDeleteShow = false;
    },
    searchImg() {
      this.$refs.uploadDrag && this.$refs.uploadDrag.uploadStart();
@@ -1276,7 +1297,7 @@
    async updateFace(param) {
      const fd = new FormData();
      fd.append("file", param.file);
      fd.append("id", this.form.id);
      fd.append("id", this.inputPersonForm.id);
      let res = await axios({
        method: "post",
        url: `/data/api-v/dbperson/updateFace`,
@@ -1288,31 +1309,12 @@
        data: fd,
      });
      if (res.data.success) {
        this.form.persoasyncnPicUrl = res.data.data.personPicUrl;
        this.form.faceFeature = res.data.data.faceFeature;
        this.inputPersonForm.persoasyncnPicUrl = res.data.data.personPicUrl;
        this.inputPersonForm.faceFeature = res.data.data.faceFeature;
      }
    },
    uploadSuccess() {},
    uploadError() {},
    async deleteBatch() {
      let ids = [];
      this.selectedRowKeys.map((item, index) => {
        ids.push(item.id);
      });
      let res = await deleteBasePersons(ids);
      if (res.success) {
        this.$notify({
          type: "success",
          message: "删除成功!",
        });
        this.getPersonList();
      } else {
        this.$notify({
          type: "error",
          message: "删除失败!",
        });
      }
    },
    async init() {
      await this.BaseManageData.querySyncTables();
      await this.BaseManageData.queryLocalTables();
@@ -1490,35 +1492,6 @@
  },
  beforeDestroy() {
    window.onresize = null;
  },
  watch: {
    baseObject: {
      handler(newVal, oldVal) {
        this.BaseManageData.cleanData();
        this.getPersonList();
      },
      deep: true,
    },
    "BaseManageData.selectBlacks": function (value) {
      this.blackAngWhite();
    },
    "BaseManageData.selectWhites": function (value) {
      this.blackAngWhite();
    },
  },
  components: {
    UploadBtn,
    fTemplate,
    UploadIcon,
  },
  props: {
    baseObject: {
      default: () => {},
      type: Object,
    },
    syncType: {
      type: String,
    },
  },
};
</script>
@@ -1868,7 +1841,6 @@
      }
      .el-button--small:hover {
        // background: "rgba(#{var(--colorCard-rgb)},10%) !important"  ;
        filter: brightness(92%);
      }
      .el-input__suffix {
@@ -1904,8 +1876,6 @@
        .el-input-number--mini {
          width: 72px;
        }
      }
      .upload-img-box {
      }
      .uploadIconBox .left-section1 .el-input__inner {
        height: 32px;
@@ -2174,7 +2144,7 @@
  }
}
.el-dialog.copy-dialog {
  width: 516px;
  width: 550px;
  border-radius: 24px;
  .el-dialog__header {
    text-align: center;
@@ -2193,6 +2163,7 @@
    color: #5f5f5f;
  }
  .dialog-footer {
    // width: 315px;
    .el-button--info {
      color: #999999;
      background: #fff;
@@ -2229,7 +2200,7 @@
    .items {
      width: 100%;
      min-height: 150px;
      margin-bottom: 20px;
      margin-bottom: 10px;
      .lable {
        font-size: 16px;
        font-weight: bold;
@@ -2238,6 +2209,7 @@
      }
      .baseList {
        height: 100%;
        overflow: auto;
        .base {
          width: 152px;
          padding: 5px 5px 5px 10px;
@@ -2430,4 +2402,8 @@
    }
  }
}
.PersonListDialog {
  width: 360px !important;
}
</style>