| | |
| | | </div> |
| | | |
| | | <div class="right-btns"> |
| | | <span style="margin-right: 2px">底库状态(生效/失效)</span> |
| | | <el-switch |
| | | :active-value="1" |
| | | :width="52" |
| | |
| | | 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' }" |
| | |
| | | <span |
| | | class="iconfont iconbianjixinxi-09" |
| | | style="font-size: 24px; cursor: pointer" |
| | | @click="handleClick(scope.row)" |
| | | @click="editRow(scope.row)" |
| | | ></span> |
| | | </el-tooltip> |
| | | </fTemplate> |
| | |
| | | <el-drawer title="修改信息" :modal="false" :visible.sync="showInfoDrawer"> |
| | | <el-form |
| | | ref="formForEdit" |
| | | :model="form" |
| | | :model="inputPersonForm" |
| | | label-width="100px" |
| | | :rules="rules" |
| | | > |
| | |
| | | </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; |
| | |
| | | <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> |
| | |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="form.picDesc" |
| | | v-model="inputPersonForm.picDesc" |
| | | placeholder="请输入" |
| | | ></el-input> |
| | | </el-form-item> |
| | |
| | | <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> |
| | |
| | | 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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | > |
| | | <el-select |
| | | size="small" |
| | | v-model="form.monitorLevel" |
| | | v-model="inputPersonForm.monitorLevel" |
| | | placeholder="请选择" |
| | | style="width: 100%" |
| | | > |
| | |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="form.fromServerId" |
| | | v-model="inputPersonForm.fromServerId" |
| | | disabled |
| | | ></el-input> |
| | | </el-form-item> |
| | |
| | | > |
| | | <el-input |
| | | size="small" |
| | | v-model="form.createTime" |
| | | v-model="inputPersonForm.createTime" |
| | | disabled |
| | | ></el-input> |
| | | </el-form-item> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <!-- 确认删除对话框 --> |
| | | <el-dialog |
| | | :visible.sync="askDeleteShow" |
| | | :center="true" |
| | |
| | | </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" |
| | |
| | | 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, //月份 |
| | |
| | | }; |
| | | |
| | | 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() { |
| | |
| | | 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: { |
| | |
| | | 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; |
| | |
| | | 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({ |
| | |
| | | message: "底库删除成功!", |
| | | }); |
| | | } |
| | | |
| | | this.$emit("onDelete"); |
| | | }) |
| | | .catch((err) => { |
| | |
| | | }); |
| | | }); |
| | | }, |
| | | 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", |
| | | }); |
| | | }); |
| | | }, |
| | |
| | | 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) { |
| | |
| | | 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(); |
| | |
| | | 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`, |
| | |
| | | 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(); |
| | |
| | | }, |
| | | 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> |
| | |
| | | } |
| | | |
| | | .el-button--small:hover { |
| | | // background: "rgba(#{var(--colorCard-rgb)},10%) !important" ; |
| | | filter: brightness(92%); |
| | | } |
| | | .el-input__suffix { |
| | |
| | | .el-input-number--mini { |
| | | width: 72px; |
| | | } |
| | | } |
| | | .upload-img-box { |
| | | } |
| | | .uploadIconBox .left-section1 .el-input__inner { |
| | | height: 32px; |
| | |
| | | } |
| | | } |
| | | .el-dialog.copy-dialog { |
| | | width: 516px; |
| | | width: 550px; |
| | | border-radius: 24px; |
| | | .el-dialog__header { |
| | | text-align: center; |
| | |
| | | color: #5f5f5f; |
| | | } |
| | | .dialog-footer { |
| | | // width: 315px; |
| | | .el-button--info { |
| | | color: #999999; |
| | | background: #fff; |
| | |
| | | .items { |
| | | width: 100%; |
| | | min-height: 150px; |
| | | margin-bottom: 20px; |
| | | margin-bottom: 10px; |
| | | .lable { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | |
| | | } |
| | | .baseList { |
| | | height: 100%; |
| | | overflow: auto; |
| | | .base { |
| | | width: 152px; |
| | | padding: 5px 5px 5px 10px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .PersonListDialog { |
| | | width: 360px !important; |
| | | } |
| | | </style> |