| | |
| | | "progressMsg": "" |
| | | }, |
| | | { |
| | | "id": "7dea48a4-8294-4914-85d8-c2bbd4caf550", |
| | | "name": "应用中心-旧", |
| | | "package": "algorithmManage_old", |
| | | "type": "2", |
| | | "url": "/view/ai_c/", |
| | | "title": "应用中心-旧", |
| | | "width": 1243, |
| | | "height": 750, |
| | | "iconBlob": "", |
| | | "icon": "../../images/app-mid/algorithm-store.png", |
| | | "version": "1.0.0", |
| | | "create_time": "2020-10-09 14:00:02", |
| | | "create_by": "", |
| | | "update_time": "", |
| | | "update_by": "", |
| | | "isDelete": 0, |
| | | "isDefault": true, |
| | | "remoteVersion": "", |
| | | "installed": true, |
| | | "isUpgrade": false, |
| | | "progressMsg": "" |
| | | }, |
| | | { |
| | | "id": "2224a376-5436-4323-ad65-c26d95efaa54", |
| | | "name": "摄像机配置", |
| | | "package": "cameraAccess", |
| | |
| | | class="other-btn"
|
| | | round
|
| | | @click="checkDetail(item)"
|
| | | v-if="activeName == '应用中心'&&item.price>0"
|
| | | v-if="activeName == '应用中心' && item.price > 0"
|
| | | >激活</el-button
|
| | | >
|
| | | <el-button
|
| | |
| | | class="update-btn"
|
| | | round
|
| | | @click.stop="actived(item)"
|
| | | v-if="activeName == '应用中心'&&item.price==0"
|
| | | v-if="activeName == '应用中心' && item.price == 0"
|
| | | >安装</el-button
|
| | | >
|
| | | <el-button
|
| | |
| | | goback() {
|
| | | this.inDetail = false;
|
| | | },
|
| | | // isShow(authority) {
|
| | | // return (
|
| | | // this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1
|
| | | // );
|
| | | // },
|
| | | batchUpdate(s) {
|
| | | if (s == "both") {
|
| | | this.batchUpdateSDK();
|
| | |
| | | this.tempList = this.installedList;
|
| | | this.tempDarkList = this.notInstalledList;
|
| | | break;
|
| | |
|
| | | case "更新":
|
| | | this.showQuickPath = false;
|
| | | this.tempList = this.hasNewVersionSdk;
|
| | |
| | | this.tempDarkList = [];
|
| | | }
|
| | | },
|
| | | // closeDial() {
|
| | | // this.productDetailVisible = false;
|
| | | // this.productDetail = {};
|
| | | // this.otherProducts = [];
|
| | | // },
|
| | | checkDetail(item, typ) {
|
| | | this.inDetail = true;
|
| | | this.detailProductID = item.id;
|
| | |
| | | this.detailType = this.activeName == "应用中心" ? "inactive" : "active";
|
| | | }
|
| | | },
|
| | | // checkInWindow(item) {
|
| | | // this.backStack.push([this.productDetail, this.otherProducts]);
|
| | | // this.backDisable = false;
|
| | | // this.checkIsDefOrNot(item.id);
|
| | |
|
| | | // let _this = this;
|
| | | // getAppDetail({ id: item.id }).then((res) => {
|
| | | // _this.productDetail = res.data.detail;
|
| | | // _this.productDetail.iconBlob = item.iconBlob;
|
| | | // this.actId = _this.productDetail.productBaseId;
|
| | | // let flag = false;
|
| | | // const allNeedToNew = [
|
| | | // ...this.hasNewVersionSdk,
|
| | | // ...this.hasNewVersionApp,
|
| | | // ];
|
| | | // for (let i = 0; i < allNeedToNew.length; i++) {
|
| | | // const item = allNeedToNew[i];
|
| | | // if (item.id == _this.productDetail.productBaseId) {
|
| | | // flag = true;
|
| | | // }
|
| | | // }
|
| | | // this.needToUpgradeInWin = flag;
|
| | | // _this.productDetail.isUpgrade = flag;
|
| | |
|
| | | // _this.otherProducts = res.data.randoms;
|
| | | // });
|
| | | // },
|
| | | checkIsDefOrNot(id) {
|
| | | if (id.length > 10) {
|
| | | this.isDefaultApp = false;
|
| | | } else {
|
| | | this.isDefaultApp = true;
|
| | | }
|
| | | this.isDefaultApp = id.length <= 10;
|
| | | },
|
| | | // backwards() {
|
| | | // if (this.backStack.length == 0) {
|
| | | // this.backDisable = true;
|
| | | // return;
|
| | | // }
|
| | | // this.forwardStack.push([this.productDetail, this.otherProducts]);
|
| | | // let item = this.backStack.pop();
|
| | | // this.productDetail = item[0];
|
| | | // this.checkIsDefOrNot(this.productDetail.productBaseId);
|
| | | // this.otherProducts = item[1];
|
| | | // this.forwardDisable = false;
|
| | | // if (this.backStack.length == 0) {
|
| | | // this.backDisable = true;
|
| | | // }
|
| | | // },
|
| | | forwards() {
|
| | | if (this.forwardStack.length == 0) {
|
| | | this.forwardDisable = true;
|
| | |
| | | })
|
| | | .catch((e) => {});
|
| | | },
|
| | | // toActivatePage(item) {
|
| | | // this.checkDetail(item, "inactive");
|
| | | // this.actType = this.activeTab;
|
| | | // this.actId = item.id;
|
| | | // this.actStep = 0;
|
| | | // this.activeCode = "";
|
| | | // this.activedSdkOrApp = this.newActInfo();
|
| | | // },
|
| | | // cancelActivate() {
|
| | | // this.showInputCode = false;
|
| | | // this.activeCode = "";
|
| | | // },
|
| | | newActInfo() {
|
| | | return {
|
| | | activateCode: "",
|
| | |
| | | getUnActivedApp().then((res) => {
|
| | | if (res.code == 200) {
|
| | | this.unActivedAppList = res.data;
|
| | | this.pickTab()
|
| | | this.pickTab();
|
| | | }
|
| | | });
|
| | | },
|
| | |
| | | });
|
| | | }
|
| | | },
|
| | | // checkMyAlgorith() {
|
| | | // this.showActivateSuccess = false;
|
| | | // this.activeName = "已激活";
|
| | | // },
|
| | | onFileUpload(file) {
|
| | | this.patchFile = { ...file };
|
| | | this.fileAdded = true;
|
| | |
| | | version: res.data.apps[0].version,
|
| | | productName: res.data.productName,
|
| | | installContent: res.data.apps[0].installContent,
|
| | | |
| | | };
|
| | | }
|
| | | if (res.data.sdks.length > 0) {
|
| | |
| | | this.$message.error(e.msg);
|
| | | });
|
| | | },
|
| | | // openApp() {
|
| | | // window.parent.postMessage(
|
| | | // { msg: "toOpenApp?" + this.productDetail.productBaseId },
|
| | | // "*"
|
| | | // );
|
| | | // },
|
| | | onFileAdded(f) {
|
| | | this.patchUpdateStatus = "";
|
| | | },
|
| | |
| | | this.notInstalledList = unInstalledList;
|
| | | this.toUpdateArr1 = this.installedList.slice(0, 10);
|
| | | this.hasNewVersionSdk = hasNewVersionList;
|
| | | this.pickTab()
|
| | | this.pickTab();
|
| | | },
|
| | | // unloadSDKinWin() {
|
| | | // let appToUnload;
|
| | | // let sdkToUnload;
|
| | | // if (this.productDetail.productTypeName == "应用") {
|
| | | // appToUnload = this.installedApps.find((item) => {
|
| | | // return item.id == this.productDetail.productBaseId;
|
| | | // });
|
| | | // this.unloadApp(appToUnload);
|
| | | // } else {
|
| | | // sdkToUnload = this.installedList.find((item) => {
|
| | | // return item.id == this.productDetail.productBaseId;
|
| | | // });
|
| | | // this.unloadSdk(sdkToUnload);
|
| | | // }
|
| | | // },
|
| | | // unLoadSdkOrApp(item) {
|
| | | // this.activeTab == "sdk" ? this.unloadSdk(item) : this.unloadApp(item);
|
| | | // },
|
| | | unloadSdk(sdk) {
|
| | | let _this = this;
|
| | | this.$confirm("确定要卸载该算法吗?", "提示")
|
| | |
| | | })
|
| | | .catch((e) => {});
|
| | | },
|
| | |
|
| | | donwloadSDK(item) {
|
| | | let timer = null;
|
| | | item.upgradeLoading = true;
|
| | |
| | | clearInterval(timer);
|
| | | item.upgradeLoading = false;
|
| | | this.downloadItem = "";
|
| | | |
| | |
|
| | | window.parent.postMessage({ msg: "AppUpdate" }, "*");
|
| | | })
|
| | | .catch((err) => {
|
| | |
| | | this.sdkUpgreading = true;
|
| | | },
|
| | | autoRefreshAppAndSdkState() {
|
| | | // 关闭后退出
|
| | | this.getAllApps();
|
| | | this.getAllSdk();
|
| | | if (!this.autoRefresh) {
|
| | | return;
|
| | | }
|
| | | if (this.appUpgreading) {
|
| | | this.getAllApps();
|
| | | }
|
| | | if (this.sdkUpgreading) {
|
| | | this.getAllSdk();
|
| | | }
|
| | | let _this = this;
|
| | | setTimeout(() => {
|
| | | _this.autoRefreshAppAndSdkState();
|
| | | if (this.appUpgreading) {
|
| | | this.getAllApps();
|
| | | }
|
| | | if (this.sdkUpgreading) {
|
| | | this.getAllSdk();
|
| | | }
|
| | | }, 1000);
|
| | | },
|
| | | },
|
| | |
| | | text-align: center;
|
| | | position: relative;
|
| | | .check-btn {
|
| | | background-color:#FFFFFF !important;
|
| | | border-color: #BDBDBD !important;
|
| | | background-color: #ffffff !important;
|
| | | border-color: #bdbdbd !important;
|
| | | color: #333333;
|
| | | }
|
| | | .update-btn {
|
| | |
| | | // dateString:当前时间 |
| | | // compareDateString:需要比较的时间 |
| | | if (this.isEmpty(dateString)) { |
| | | // alert('dateString不能为空') |
| | | return; |
| | | } |
| | | if (this.isEmpty(compareDateString)) { |
| | | // alert('compareDateString不能为空') |
| | | return 1; |
| | | } |
| | | var dateTime = this.dateParse(dateString).getTime(); |
| | |
| | | this.localTableList = this.BaseManageData.localTables; |
| | | this.defaultShow(); |
| | | }, |
| | | handleChange(val) {}, |
| | | async setEnable(item) { |
| | | let res = await updateDbTableStatus({ |
| | | id: item.id, |
| | | enable: item.enable, |
| | | }); |
| | | if (res.success === true) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "底库成功变更生效状态!", |
| | | }); |
| | | } else { |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "底库变更生效状态失败!", |
| | | }); |
| | | } |
| | | }, |
| | | add(type) { |
| | | this.$emit("changeShow", null, type); |
| | | }, |
| | | isDisabled(item) { |
| | | var flag = true; |
| | | if (this.isShow("library:set")) { |
| | | if (item.endTime == "") { |
| | | flag = false; |
| | | } else { |
| | | flag = !this.$moment(new Date()).isBetween( |
| | | item.startTime, |
| | | item.endTime |
| | | ); |
| | | } |
| | | } |
| | | return flag; |
| | | }, |
| | | clickCategory(index, type, item) { |
| | | this.categoryIndex = type + index; |
| | | // 调用切换右侧面板的函数并且切换父组件中isSelected的值让另一个组件清除被选中状态 |
| | | this.clickBase = item; |
| | | this.$emit("getList", item, type); |
| | | }, |
| | | edit(item, type) { |
| | | this.$emit("changeShow", item, type); |
| | | }, |
| | | deleteBase(id) { |
| | | let token = |
| | | sessionStorage.getItem("loginedInfo") && |
| | | JSON.parse(sessionStorage.getItem("loginedInfo")).access_token; |
| | | this.$confirm("提示:确定删除底库?", { |
| | | center: true, |
| | | cancelButtonClass: "comfirm-class-cancle", |
| | | confirmButtonClass: "comfirm-class-sure", |
| | | }).then(() => { |
| | | fetch(`/data/api-v/dbtable/deleteDBtablesById?id=${id}`, { |
| | | method: "GET", |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | Authorization: token, |
| | | }, |
| | | }) |
| | | .then((res) => { |
| | | return res.json(); |
| | | }) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "底库删除成功!", |
| | | }); |
| | | } |
| | | this.init(); |
| | | }) |
| | | .catch((err) => { |
| | | this.$notify({ |
| | | type: "error", |
| | | message: err, |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | // 默认显示第一个库的数据 |
| | | defaultShow() { |
| | |
| | | return false; |
| | | } |
| | | }, |
| | | dateCompare(dateString, compareDateString) { |
| | | // dateString:当前时间 |
| | | // compareDateString:需要比较的时间 |
| | | if (this.isEmpty(dateString)) { |
| | | return; |
| | | } |
| | | if (this.isEmpty(compareDateString)) { |
| | | return 1; |
| | | } |
| | | var dateTime = this.dateParse(dateString).getTime(); |
| | | var compareDateTime = this.dateParse(compareDateString).getTime(); |
| | | if (compareDateTime > dateTime) { |
| | | return 1; |
| | | } else if (compareDateTime === dateTime) { |
| | | return 0; |
| | | } else { |
| | | return -1; |
| | | } |
| | | }, |
| | | // dateCompare(dateString, compareDateString) { |
| | | // // dateString:当前时间 |
| | | // // compareDateString:需要比较的时间 |
| | | // if (this.isEmpty(dateString)) { |
| | | // return; |
| | | // } |
| | | // if (this.isEmpty(compareDateString)) { |
| | | // return 1; |
| | | // } |
| | | // var dateTime = this.dateParse(dateString).getTime(); |
| | | // var compareDateTime = this.dateParse(compareDateString).getTime(); |
| | | // if (compareDateTime > dateTime) { |
| | | // return 1; |
| | | // } else if (compareDateTime === dateTime) { |
| | | // return 0; |
| | | // } else { |
| | | // return -1; |
| | | // } |
| | | // }, |
| | | }, |
| | | props: { |
| | | listWidth: { |
| | |
| | | font-size: 14px; |
| | | } |
| | | .out-div { |
| | | max-height: 100%; |
| | | max-height: 100%; height: 100%; |
| | | .el-collapse-item__wrap { |
| | | will-change: height; |
| | | background-color: #fff; |
| | |
| | | <template> |
| | | <div class="table-parent"> |
| | | <el-row class style="margin: 20px"> |
| | | <!-- <el-col :span="4" class="tl"> |
| | | <b class="f14">{{this.baseObject.tableName}}</b> |
| | | </el-col> |
| | | <el-col :span="2"> |
| | | <b class="f14">{{this.baseObject.bwType === '1'?'黑名单':'白名单'}}</b> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <b class="f14">有效时间:{{this.baseObject.startTime}}--{{this.baseObject.endTime?this.baseObject.endTime:'永久有效'}}</b> |
| | | </el-col>--> |
| | | <div class="tl"> |
| | | <span class="f14" style="color: #000000">{{ |
| | | this.baseObject.tableName ? this.baseObject.tableName + "/ " : "" |
| | | }}</span> |
| | | <span class="f14" style="color: #000000">{{ |
| | | this.baseObject.bwType === "1" |
| | | ? "黑名单/ " |
| | | : "白名单/ " |
| | | }}</span> |
| | | <span class="f14" style="color: #000000" |
| | | >有效时间:{{ this.baseObject.startTime }}--{{ |
| | | this.baseObject.endTime ? this.baseObject.endTime : "永久有效" |
| | | }}</span |
| | | > |
| | | <el-row> |
| | | <div class="base-tip"> |
| | | <div class="left-tips"> |
| | | <span class="ku-name">{{ this.baseObject.tableName }}</span> |
| | | <span |
| | | class="list" |
| | | :class=" |
| | | this.baseObject.bwType === '1' ? 'black-list' : 'white-list' |
| | | " |
| | | >{{ this.baseObject.bwType === "1" ? "黑名单" : "白名单" }}</span |
| | | > |
| | | <span class="ok-time" |
| | | >有效时间:{{ this.baseObject.startTime }}--{{ |
| | | this.baseObject.endTime ? this.baseObject.endTime : "永久有效" |
| | | }}</span |
| | | > |
| | | </div> |
| | | |
| | | <div class="right-btns"> |
| | | <el-switch |
| | | :active-value="1" |
| | | :width="52" |
| | | :inactive-value="0" |
| | | v-model="baseObject.enable" |
| | | active-color="#4E94FF" |
| | | inactive-color="#BBBBBB" |
| | | style="margin-right: 10px" |
| | | :disabled="isDisabled(baseObject)" |
| | | @change="setEnable(baseObject)" |
| | | > |
| | | </el-switch> |
| | | |
| | | <el-tooltip content="删除" placement="top" popper-class="atooltip"> |
| | | <span |
| | | class="iconfont iconfont-wrap iconshanchuku-09" |
| | | v-if="isShow('library:set')" |
| | | @click.stop="askDelete('base')" |
| | | ></span> |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip content="编辑" placement="top" popper-class="atooltip"> |
| | | <span |
| | | class="iconfont iconfont-wrap iconbianjiku-09" |
| | | @click.stop="edit" |
| | | v-if="isShow('library:set')" |
| | | ></span> |
| | | </el-tooltip> |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | <el-row class style="margin: 40px 0 40px 20px"> |
| | | <el-col :span="6"> |
| | | <el-input |
| | | placeholder="姓名/性别/身份证号/手机号" |
| | | autocomplete="off" |
| | | width="100%" |
| | | size="small" |
| | | v-model="BaseManageData.contentValue" |
| | | @keyup.enter.native="handleSearch" |
| | | ></el-input> |
| | | </el-col> |
| | | <el-col :span="2"> |
| | | <el-button size="small" type="primary" @click="handleSearch" |
| | | >搜索</el-button |
| | | > |
| | | </el-col> |
| | | <el-col :offset="8" :span="3"> |
| | | <fTemplate authority="library:set"> |
| | | <el-button |
| | | |
| | | <div style="display: flex" class="border-tabl"> |
| | | <div class="head-search"> |
| | | <div class="desc"> |
| | | 本库共有 |
| | | <span class="nums">{{ BaseManageData.total }}条</span> |
| | | 数据 |
| | | </div> |
| | | <div class="right-group"> |
| | | <el-input |
| | | placeholder="姓名/性别/身份证号/手机号" |
| | | autocomplete="off" |
| | | width="100%" |
| | | size="small" |
| | | class="ml10" |
| | | type="danger" |
| | | @click="deleteBatch" |
| | | v-if="isShow('library:set')" |
| | | >批量删除</el-button |
| | | v-model="BaseManageData.contentValue" |
| | | @keyup.enter.native="handleSearch" |
| | | ></el-input> |
| | | <el-button size="small" type="primary" @click="handleSearch" |
| | | >搜索</el-button |
| | | > |
| | | </fTemplate> |
| | | </el-col> |
| | | <el-col :span="2"> |
| | | <div class="text-left"> |
| | | <el-button size="small" class="ml10" type="primary" @click="addCar" |
| | | >添加车辆</el-button |
| | | |
| | | <el-tooltip |
| | | content="批量删除" |
| | | placement="top" |
| | | popper-class="atooltip" |
| | | > |
| | | <el-drawer |
| | | title="车辆信息" |
| | | :modal="false" |
| | | :destroy-on-close="true" |
| | | :append-to-body="true" |
| | | :visible.sync="addDrawer" |
| | | :direction="direction" |
| | | :before-close="handleClose1" |
| | | <fTemplate authority="library:set"> |
| | | <span |
| | | class="iconfont iconfont-wrap iconpiliangshanchu-09" |
| | | @click="askDelete('batch')" |
| | | v-if="isShow('library:set')" |
| | | ></span> |
| | | </fTemplate> |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip |
| | | content="添加车辆" |
| | | placement="top" |
| | | popper-class="atooltip" |
| | | > |
| | | <div class="drawerSpace"> |
| | | <div class="uploadLine"> |
| | | <div class="car-picture"> |
| | | <el-upload |
| | | action |
| | | :http-request="uploadCar" |
| | | accept="image/*" |
| | | list-type="picture-card" |
| | | :file-list="form.carUrls" |
| | | :before-remove="handleRemoveCarPic" |
| | | > |
| | | <i class="el-icon-plus" style="margin-top: 25px"></i> |
| | | <div>上传车辆照片</div> |
| | | </el-upload> |
| | | </div> |
| | | <div class="person-picture"> |
| | | <el-upload |
| | | action |
| | | :http-request="uploadPerson" |
| | | list-type="picture-card" |
| | | accept="image/*" |
| | | :limit="1" |
| | | :file-list="form.faceUrl" |
| | | :on-remove="handleRemoveFacePic" |
| | | > |
| | | <i class="el-icon-plus" style="margin-top: 25px"></i> |
| | | <div>上传车主照片</div> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <el-form |
| | | ref="formForCar" |
| | | :model="form" |
| | | label-width="100px" |
| | | style="margin-top: 20px; margin-bottom: 50px" |
| | | :rule="rules" |
| | | > |
| | | <el-form-item label="*车牌号:"> |
| | | <el-input |
| | | placeholder="请输入车牌号" |
| | | v-model="form.carNo" |
| | | class="inputWidth" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车辆类型:"> |
| | | <el-select |
| | | v-model="form.carType" |
| | | placeholder="请选择车辆类型" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.CARTYPE" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车辆品牌:"> |
| | | <el-select |
| | | v-model="form.carBrand" |
| | | placeholder="请选择车辆品牌" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.BRAND" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车身颜色:"> |
| | | <el-select |
| | | v-model="form.carColor" |
| | | placeholder="请选择车身颜色" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.nColor" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车主姓名:"> |
| | | <el-input |
| | | v-model="form.personName" |
| | | class="inputWidth" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车主性别:"> |
| | | <el-radio-group v-model="form.sex"> |
| | | <el-radio label="男"></el-radio> |
| | | <el-radio label="女"></el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="身份证号:"> |
| | | <el-input v-model="form.idCard" class="inputWidth"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="手机号:"> |
| | | <el-input |
| | | v-model="form.phoneNum" |
| | | class="inputWidth" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="其他:"> |
| | | <el-input |
| | | v-model="form.reserved" |
| | | class="inputWidth" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item style="text-align: tight"> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitCar" |
| | | style="margin-left: 120px" |
| | | >保存</el-button |
| | | > |
| | | <el-button @click="resetForm">取消</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-drawer> |
| | | <span |
| | | class="iconfont iconfont-wrap icontianjiacheliang-09" |
| | | @click="addCar" |
| | | ></span> |
| | | </el-tooltip> |
| | | |
| | | <el-tooltip |
| | | content="批量上传车牌" |
| | | placement="top" |
| | | popper-class="atooltip" |
| | | > |
| | | <span |
| | | class="iconfont iconfont-wrap iconshangchuanchepai-09" |
| | | @click="addBatch" |
| | | ></span> |
| | | </el-tooltip> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <div class="text-left"> |
| | | <el-button size="small" class="ml10" type="primary" @click="addBatch" |
| | | >批量上传车牌</el-button |
| | | > |
| | | <el-drawer |
| | | title="上传车牌" |
| | | :modal="false" |
| | | :append-to-body="true" |
| | | :visible.sync="addBatchDrawer" |
| | | :direction="direction" |
| | | :before-close="handleClose2" |
| | | > |
| | | <div class="drawerSpace"> |
| | | <div class="plateAttach"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="25" |
| | | v-model="plates" |
| | | style="width: 90%" |
| | | placeholder="请输入车牌号" |
| | | ></el-input> |
| | | <p> |
| | | 车牌号以逗号或回车键隔开,单次最多支持100条上传,例如:京YAB123,京F34Y87 |
| | | </p> |
| | | <el-button |
| | | type="primary" |
| | | @click="platesBatch" |
| | | style="margin-left: 210px" |
| | | >保存</el-button |
| | | > |
| | | <el-button @click="resetForm('ruleForm')">取消</el-button> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <div style="display: flex" class="border-tabl ml20"> |
| | | </div> |
| | | |
| | | <el-table |
| | | id="multipleTable" |
| | | ref="multipleTable" |
| | | :data="BaseManageData.personList" |
| | | tooltip-effect="dark" |
| | | style="width: 100%" |
| | | style="width: 100%; overflow: auto" |
| | | :fit="true" |
| | | :default-sort="{ prop: 'createTime', order: 'descending' }" |
| | | @selection-change="handleSelectionChange" |
| | | :header-cell-style="{ background: '#f8f8f8', color: '#222222' }" |
| | | :header-cell-style="{ |
| | | background: '#fff', |
| | | color: '#222222', |
| | | padding: '2px 1px', |
| | | borderBottom: 'none', |
| | | }" |
| | | > |
| | | <el-table-column type="selection" width="30"></el-table-column> |
| | | <el-table-column label="序号" width="70" sortable align="center"> |
| | | <template slot-scope="scope">{{ scope.$index + 1 }}</template> |
| | | <el-table-column |
| | | prop="carUrls" |
| | | label="车辆照片" |
| | | width="140" |
| | | show-overflow-tooltip |
| | | sortable |
| | | class="picture" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-carousel |
| | | style="height: 100px" |
| | | :autoplay="false" |
| | | indicator-position="none" |
| | | :arrow="scope.row.carUrls.length > 1 ? 'always' : 'never'" |
| | | > |
| | | <el-carousel-item |
| | | v-for="(item, index) in scope.row.carUrls" |
| | | :key="index" |
| | | > |
| | | <img |
| | | style="width: 100px; height: 100px; object-fit: contain" |
| | | :src="item.url" |
| | | alt |
| | | /> |
| | | </el-carousel-item> |
| | | </el-carousel> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="生效状态" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-switch |
| | | v-model="scope.row.enable" |
| | | :active-value="1" |
| | | :disabled="!isShow('library:set')" |
| | | :inactive-value="0" |
| | | @change="enable(scope.row)" |
| | | ></el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="carNo" |
| | |
| | | align="center" |
| | | width="80" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="carUrls" |
| | | label="车辆照片" |
| | | width="140" |
| | | show-overflow-tooltip |
| | | sortable |
| | | class="picture" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-carousel |
| | | style="height: 100px" |
| | | :autoplay="false" |
| | | indicator-position="none" |
| | | :arrow="scope.row.carUrls.length > 1 ? 'always' : 'never'" |
| | | > |
| | | <el-carousel-item |
| | | v-for="(item, index) in scope.row.carUrls" |
| | | :key="index" |
| | | > |
| | | <img |
| | | style="width: 100px; height: 100px; object-fit: contain" |
| | | :src="item.url" |
| | | alt |
| | | /> |
| | | </el-carousel-item> |
| | | </el-carousel> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="createTime" |
| | | label="入库时间" |
| | |
| | | sortable |
| | | align="center" |
| | | ></el-table-column> |
| | | <!-- <el-table-column prop="reserved" label="其他" align="center"></el-table-column> --> |
| | | <el-table-column label="生效状态" align="center" width="80"> |
| | | <template slot-scope="scope"> |
| | | <el-switch |
| | | v-model="scope.row.enable" |
| | | :active-value="1" |
| | | :disabled="!isShow('library:set')" |
| | | :inactive-value="0" |
| | | @change="enable(scope.row)" |
| | | ></el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="操作" min-width="200" align="center"> |
| | | <template slot-scope="scope"> |
| | | <fTemplate authority="library:set"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="pt5 pb20" style="height: 40px; position: relative"> |
| | | <el-pagination |
| | | @current-change="refrash" |
| | | :current-page="BaseManageData.page" |
| | | :page-size="BaseManageData.size" |
| | | style="position: absolute; right: 10px; bottom: 5px" |
| | | style="margin-top: 10px;" |
| | | layout="total,sizes,prev,pager,next,jumper" |
| | | :total="BaseManageData.total" |
| | | ></el-pagination> |
| | | </div> |
| | |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :visible.sync="askDeleteShow" |
| | | :center="true" |
| | | custom-class="del-dialog" |
| | | > |
| | | <div> |
| | | <div class="suc-icon"> |
| | | <i class="iconfont icongantanhao1"></i> |
| | | </div> |
| | | <div class="tt">{{ delText[0] }}</div> |
| | | <div class="flex-box"> |
| | | <span>{{ delText[1] }}</span> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="askDeleteShow = false">取 消</el-button> |
| | | <el-button type="primary" @click="handleDel">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <el-drawer |
| | | title="车辆信息" |
| | | :modal="false" |
| | | :destroy-on-close="true" |
| | | :append-to-body="true" |
| | | :visible.sync="addDrawer" |
| | | :direction="direction" |
| | | :before-close="handleClose1" |
| | | > |
| | | <div class="drawerSpace"> |
| | | <div class="uploadLine"> |
| | | <div class="car-picture"> |
| | | <el-upload |
| | | action |
| | | :http-request="uploadCar" |
| | | accept="image/*" |
| | | list-type="picture-card" |
| | | :file-list="form.carUrls" |
| | | :before-remove="handleRemoveCarPic" |
| | | > |
| | | <i class="el-icon-plus" style="margin-top: 25px"></i> |
| | | <div>上传车辆照片</div> |
| | | </el-upload> |
| | | </div> |
| | | <div class="person-picture"> |
| | | <el-upload |
| | | action |
| | | :http-request="uploadPerson" |
| | | list-type="picture-card" |
| | | accept="image/*" |
| | | :limit="1" |
| | | :file-list="form.faceUrl" |
| | | :on-remove="handleRemoveFacePic" |
| | | > |
| | | <i class="el-icon-plus" style="margin-top: 25px"></i> |
| | | <div>上传车主照片</div> |
| | | </el-upload> |
| | | </div> |
| | | </div> |
| | | <el-form |
| | | ref="formForCar" |
| | | :model="form" |
| | | label-width="100px" |
| | | style="margin-top: 20px; margin-bottom: 50px" |
| | | :rule="rules" |
| | | > |
| | | <el-form-item label="*车牌号:"> |
| | | <el-input |
| | | placeholder="请输入车牌号" |
| | | v-model="form.carNo" |
| | | class="inputWidth" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车辆类型:"> |
| | | <el-select |
| | | v-model="form.carType" |
| | | placeholder="请选择车辆类型" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.CARTYPE" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车辆品牌:"> |
| | | <el-select |
| | | v-model="form.carBrand" |
| | | placeholder="请选择车辆品牌" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.BRAND" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车身颜色:"> |
| | | <el-select |
| | | v-model="form.carColor" |
| | | placeholder="请选择车身颜色" |
| | | class="inputWidth" |
| | | > |
| | | <el-option |
| | | v-for="item in VideoPhotoData.dictionary.nColor" |
| | | :key="item.value" |
| | | :label="item.name" |
| | | :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车主姓名:"> |
| | | <el-input v-model="form.personName" class="inputWidth"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="车主性别:"> |
| | | <el-radio-group v-model="form.sex"> |
| | | <el-radio label="男"></el-radio> |
| | | <el-radio label="女"></el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="身份证号:"> |
| | | <el-input v-model="form.idCard" class="inputWidth"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="手机号:"> |
| | | <el-input v-model="form.phoneNum" class="inputWidth"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="其他:"> |
| | | <el-input v-model="form.reserved" class="inputWidth"></el-input> |
| | | </el-form-item> |
| | | <el-form-item style="text-align: tight"> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitCar" |
| | | style="margin-left: 120px" |
| | | >保存</el-button |
| | | > |
| | | <el-button @click="resetForm">取消</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </el-drawer> |
| | | |
| | | <el-drawer |
| | | title="上传车牌" |
| | | :modal="false" |
| | | :append-to-body="true" |
| | | :visible.sync="addBatchDrawer" |
| | | :direction="direction" |
| | | :before-close="handleClose2" |
| | | > |
| | | <div class="drawerSpace"> |
| | | <div class="plateAttach"> |
| | | <el-input |
| | | type="textarea" |
| | | :rows="25" |
| | | v-model="plates" |
| | | style="width: 90%" |
| | | placeholder="请输入车牌号" |
| | | ></el-input> |
| | | <p> |
| | | 车牌号以逗号或回车键隔开,单次最多支持100条上传,例如:京YAB123,京F34Y87 |
| | | </p> |
| | | <el-button |
| | | type="primary" |
| | | @click="platesBatch" |
| | | style="margin-left: 210px" |
| | | >保存</el-button |
| | | > |
| | | <el-button @click="resetForm('ruleForm')">取消</el-button> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | | </div> |
| | | </template> |
| | | <script> |
| | |
| | | updateBaseCar, |
| | | deleteBasePersons, |
| | | plateBatch, |
| | | updateDbTableStatus, |
| | | } from "@/api/baseLibrary"; |
| | | import axios from "axios"; |
| | | // import { findByType } from '@/server/video.js' |
| | | import Upload from "./upload"; |
| | | import fTemplate from "@/components/fTemplate"; |
| | | import request from "@/scripts/httpRequest"; |
| | | export default { |
| | | components: { |
| | | // httpImg, |
| | | fTemplate, |
| | | }, |
| | | props: { |
| | | baseObject: { |
| | | default: () => {}, |
| | | type: Object, |
| | | }, |
| | | syncType: { |
| | | type: String, |
| | | }, |
| | | }, |
| | | data() { |
| | |
| | | url: "group2/M00/0A/D7/wKgBnFyjH0-AUE5eAAC8hSMP2Yw110.jpg", |
| | | }, |
| | | ], |
| | | provinces: [ |
| | | { name: "京", value: 1 }, |
| | | { name: "津", value: 2 }, |
| | | { name: "冀", value: 3 }, |
| | | ], |
| | | // provinces: [ |
| | | // { name: "京", value: 1 }, |
| | | // { name: "津", value: 2 }, |
| | | // { name: "冀", value: 3 }, |
| | | // ], |
| | | copyVisiabled: false, |
| | | moveVisiabled: false, |
| | | buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], |
| | | searchName: "", |
| | | current: 1, |
| | | compare: false, |
| | | pageSize: 10, |
| | |
| | | idCard: "", |
| | | phoneNum: "", |
| | | monitorLevel: "one", |
| | | carUrls: [], //{url:"/httpImage/192.168.20.10:6701/818,56d0122c44f069"},{url:"/httpImage/192.168.20.10:6701/818,56d0122c44f069"} |
| | | carUrls: [], |
| | | faceUrl: [], |
| | | faceFeature: "", |
| | | carPicUrls: "", |
| | |
| | | ], |
| | | }, |
| | | tableData: [], |
| | | tableHeight: window.innerHeight - 320, |
| | | multipleSelection: [], |
| | | peoperLevel: [], |
| | | oldWidth: "", |
| | | oldHeight: "", |
| | | // 上传后的弹框显示 |
| | | askDeleteShow: false, |
| | | delType: "", |
| | | toDeleteId: "", |
| | | dialogVisible: false, |
| | | // 批量上传后的返回结果 |
| | | uploadResult: { |
| | | failList: [], |
| | | successList: [], |
| | |
| | | } |
| | | return false; |
| | | }, |
| | | delText() { |
| | | switch (this.delType) { |
| | | case "base": |
| | | return ["删除底库", "确定删除该底库?"]; |
| | | case "single": |
| | | return ["删除人员", "确定删除该底库人员?"]; |
| | | case "batch": |
| | | return ["批量删除", "确定删除该底库选中人员?"]; |
| | | default: |
| | | return ["", ""]; |
| | | } |
| | | }, |
| | | }, |
| | | methods: { |
| | | handleDel() { |
| | | if (this.delType == "single") { |
| | | this.deleteThis(); |
| | | } else if (this.delType == "base") { |
| | | this.deleteBase(); |
| | | } else if (this.delType == "batch") { |
| | | this.deleteBatch(); |
| | | } |
| | | }, |
| | | 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(); |
| | | }) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "底库删除成功!", |
| | | }); |
| | | } |
| | | this.$emit("onDelete"); |
| | | }) |
| | | .catch((err) => { |
| | | this.$notify({ |
| | | type: "error", |
| | | message: err, |
| | | }); |
| | | }); |
| | | }, |
| | | handleRemoveCarPic(file, fileList) { |
| | | var index = fileList.findIndex((item) => { |
| | | if (item.uid == file.uid) { |
| | |
| | | }); |
| | | this.form.carUrls.splice(index, 1); |
| | | }, |
| | | isDisabled(item) { |
| | | var flag = true; |
| | | if (this.isShow("library:set")) { |
| | | if (item.endTime == "") { |
| | | flag = false; |
| | | } else { |
| | | flag = !this.$moment(new Date()).isBetween( |
| | | item.startTime, |
| | | item.endTime |
| | | ); |
| | | } |
| | | } |
| | | return flag; |
| | | }, |
| | | handleRemoveFacePic(file, fileList) { |
| | | this.form.faceUrl.splice(0, 1); |
| | | }, |
| | | beforeUoload() {}, |
| | | edit() { |
| | | this.$emit("changeShow", this.baseObject, this.syncType); |
| | | }, |
| | | // beforeUoload() {}, |
| | | handlePictureCardPreview(file) { |
| | | this.dialogImageUrl = file.url; |
| | | this.dialogVisible = true; |
| | |
| | | idCard: "", |
| | | phoneNum: "", |
| | | monitorLevel: "one", |
| | | carUrls: [], //{url:"/httpImage/192.168.20.10:6701/818,56d0122c44f069"},{url:"/httpImage/192.168.20.10:6701/818,56d0122c44f069"} |
| | | carUrls: [], |
| | | faceUrl: [], |
| | | faceFeature: "", |
| | | carPicUrls: "", |
| | |
| | | reserved: "", |
| | | }), |
| | | done(); |
| | | // this.$confirm('确认关闭?') |
| | | // .then(_ => { |
| | | // done(); |
| | | // }) |
| | | // .catch(_ => {}); |
| | | }, |
| | | handleClose2(done) { |
| | | done(); |
| | | // this.$confirm('确认关闭?') |
| | | // .then(_ => { |
| | | // done(); |
| | | // }) |
| | | // .catch(_ => {}); |
| | | }, |
| | | isShow(authority) { |
| | | if (this.isAdmin) { |
| | |
| | | this.$refs.multipleTable.clearSelection(); |
| | | } |
| | | }, |
| | | deleteThis(id) { |
| | | |
| | | deleteThis() { |
| | | let token = |
| | | sessionStorage.getItem("loginedInfo") && |
| | | JSON.parse(sessionStorage.getItem("loginedInfo")).access_token; |
| | | this.$confirm("提示:确定删除该底库人员?", { |
| | | center: true, |
| | | cancelButtonClass: "comfirm-class-cancle", |
| | | confirmButtonClass: "comfirm-class-sure", |
| | | fetch(`/data/api-v/dbperson/deleteDbPersonById?id=${this.toDeleteId}`, { |
| | | method: "GET", |
| | | headers: { |
| | | "Content-Type": "application/json", |
| | | Authorization: token, |
| | | }, |
| | | }) |
| | | .then((_) => { |
| | | fetch(`/data/api-v/dbperson/deleteDbPersonById?id=${id}`, { |
| | | 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.getCarList(); |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | .then((res) => { |
| | | return res.json(); |
| | | }) |
| | | .catch((_) => {}); |
| | | .then((data) => { |
| | | if (data.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "该人员删除成功!", |
| | | }); |
| | | } |
| | | this.getCarList(); |
| | | }) |
| | | .catch((err) => {}); |
| | | }, |
| | | sayHello() { |
| | | }, |
| | | // sayHello() {}, |
| | | getUploadResult(result) { |
| | | this.uploadResult = result.data; |
| | | this.dialogVisible = true; |
| | |
| | | }); |
| | | }, |
| | | handleClose() { |
| | | //this.getCarList(); |
| | | this.dialogFormVisible = false; |
| | | }, |
| | | handleSelectionChange(val) { |
| | |
| | | personPicUrl: item.personPicUrl, |
| | | reserved: item.reserved, |
| | | }); |
| | | if (res.success === true) { |
| | | if (res.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "底库人员成功变更生效状态!", |
| | |
| | | this.$refs.uploadDrag && this.$refs.uploadDrag.uploadStart(); |
| | | }, |
| | | haveScore(row) { |
| | | if (row.compareScore && row.compareScore !== "") { |
| | | return true; |
| | | return row.compareScore && row.compareScore !== ""; |
| | | }, |
| | | async setEnable(item) { |
| | | debugger; |
| | | let res = await updateDbTableStatus({ |
| | | id: item.id, |
| | | enable: item.enable, |
| | | }); |
| | | if (res.success) { |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "底库成功变更生效状态!", |
| | | }); |
| | | } else { |
| | | return false; |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "底库变更生效状态失败!", |
| | | }); |
| | | } |
| | | }, |
| | | async searchImgList(faceUrl, threshold) { |
| | |
| | | this.total = res.data.total; |
| | | this.compare = true; |
| | | }, |
| | | updateThreshold() {}, |
| | | // updateThreshold() {}, |
| | | async updateFace(param) { |
| | | const fd = new FormData(); |
| | | fd.append("file", param.file); |
| | |
| | | this.form.faceFeature = res.data.data.faceFeature; |
| | | } |
| | | }, |
| | | uploadSuccess() { |
| | | }, |
| | | uploadError() { |
| | | }, |
| | | deleteBatch() { |
| | | if (this.selectedRowKeys.length === 0) { |
| | | async deleteBatch() { |
| | | let ids = []; |
| | | this.selectedRowKeys.map((item, index) => { |
| | | ids.push(item.id); |
| | | }); |
| | | let res = await deleteBasePersons(ids); |
| | | if (res.success) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: "请选择要删除的人员", |
| | | type: "success", |
| | | message: "删除成功!", |
| | | }); |
| | | this.getCarList(); |
| | | } else { |
| | | this.$confirm("提示:确定删除该底库选中人员?", { |
| | | center: true, |
| | | cancelButtonClass: "comfirm-class-cancle", |
| | | confirmButtonClass: "comfirm-class-sure", |
| | | }).then(async (_) => { |
| | | 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.getCarList(); |
| | | } else { |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "删除失败!", |
| | | }); |
| | | } |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "删除失败!", |
| | | }); |
| | | } |
| | | }, |
| | |
| | | this.BaseManageData.queryPersonList(); |
| | | } |
| | | }, |
| | | handleRowStyle({ row, rowIndex }) { |
| | | if (rowIndex === 0) { |
| | | return "background:#222222;"; |
| | | askDelete(typ, id) { |
| | | if (typ == "batch") { |
| | | if (this.selectedRowKeys.length === 0) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: "请选择要删除的人员", |
| | | }); |
| | | return; |
| | | } |
| | | } |
| | | this.askDeleteShow = true; |
| | | this.delType = typ; |
| | | id && (this.toDeleteId = id); |
| | | }, |
| | | blackAngWhite() { |
| | | if (this.BaseManageData.selectBlacks.length > 0) { |
| | |
| | | this.$refs["formForCar"].validate(async (valid) => { |
| | | if (valid) { |
| | | let { ...json } = this.form; |
| | | |
| | | for (let index in json.carUrls) { |
| | | if (index == 0) { |
| | | json.carPicUrls += json.carUrls[index].url.substring(11); |
| | |
| | | display: none; |
| | | } |
| | | .table-parent { |
| | | // position: relative; |
| | | height: 100%; |
| | | overflow: visible !important; |
| | | .picture { |
| | |
| | | padding-left: 8px !important; |
| | | padding-right: 0px !important; |
| | | } |
| | | // .addToBase1 { |
| | | // height: 350px; |
| | | // position: relative; |
| | | // .topLabel { |
| | | // margin-top: 20px; |
| | | // height: 40px; |
| | | // border-bottom: 1px solid #eee; |
| | | // font-family: PingFangSC-Medium; |
| | | // font-size: 20px; |
| | | // font-weight: 600; |
| | | // line-height: 1rem; |
| | | // color: #222222; |
| | | // text-align: left; |
| | | // margin-left: 15px; |
| | | // } |
| | | // .items { |
| | | // width: 100%; |
| | | // height: auto; |
| | | // overflow-y: auto; |
| | | // margin-bottom: 20px; |
| | | // .lable { |
| | | // // width: 15%; |
| | | // margin-top: 10px; |
| | | // // float: left; |
| | | // //font-family: PingFangSC-Medium; |
| | | // font-size: 14px; |
| | | // font-weight: 600; |
| | | // } |
| | | // .baseList { |
| | | // // width: 85%; |
| | | // height: 100%; |
| | | // // float: left; |
| | | // .base { |
| | | // width: calc(33% - 10px); |
| | | // padding: 0px 5px; |
| | | // line-height: 30px; |
| | | // float: left; |
| | | // text-align: left; |
| | | // font-size: 12px !important; |
| | | // .el-checkbox { |
| | | // width: 100%; |
| | | // display: block; |
| | | // overflow: hidden; |
| | | // text-overflow: ellipsis; |
| | | // white-space: nowrap; |
| | | // .el-checkbox__label { |
| | | // display: inline !important; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | .copy, |
| | | .move { |
| | | .el-dialog__body { |
| | |
| | | } |
| | | |
| | | .avatar-uploader { |
| | | max-width: 100px; |
| | | max-width: 100px; |
| | | min-width: 100px; |
| | | min-height: 100px; |
| | | border: 1px solid #eee; |
| | |
| | | v-model="baseObject.enable" |
| | | active-color="#4E94FF" |
| | | inactive-color="#BBBBBB" |
| | | style="margin-right: 25px" |
| | | style="margin-right: 10px" |
| | | :disabled="isDisabled(baseObject)" |
| | | @change="setEnable(baseObject)" |
| | | > |
| | |
| | | </div> |
| | | </div> |
| | | </el-row> |
| | | |
| | | <div class="border-tabl"> |
| | | <div class="head-search"> |
| | | <div class="desc"> |
| | |
| | | :total="BaseManageData.total" |
| | | ></el-pagination> |
| | | </div> |
| | | <!-- <div class="pt5" style="height: 40px; position: relative"> |
| | | <el-pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="refrash" |
| | | :current-page="BaseManageData.page" |
| | | :page-size="BaseManageData.size" |
| | | :page-sizes="[10, 20, 50, 100]" |
| | | style="position: absolute; right: 10px; bottom: 5px" |
| | | layout="total,sizes,prev,pager,next,jumper" |
| | | :total="BaseManageData.total" |
| | | ></el-pagination> |
| | | </div> --> |
| | | <el-dialog |
| | | title="抓拍详情" |
| | | :visible.sync="cameraDetailVisible" |
| | |
| | | idCard: "", |
| | | reserved: "", |
| | | }, |
| | | showPop: true, |
| | | askDeleteShow: false, |
| | | toDeleteId: "", |
| | | reqCameraParams: { |
| | |
| | | ], |
| | | }, |
| | | tableData: [], |
| | | // tableHeight: window.innerHeight - 320, |
| | | // multipleSelection: [], |
| | | // peoperLevel: [], |
| | | oldWidth: "", |
| | | oldHeight: "", |
| | | delType: "", |
| | |
| | | } |
| | | this.getPersonList(); |
| | | }) |
| | | .catch((err) => { |
| | | }); |
| | | .catch((err) => {}); |
| | | }, |
| | | sayHello() { |
| | | }, |
| | | sayHello() {}, |
| | | getUploadResult(result) { |
| | | this.uploadResult = result.data; |
| | | this.dialogVisible = true; |
| | |
| | | data: fd, |
| | | }); |
| | | if (res.data.success) { |
| | | this.form.personPicUrl = res.data.data.personPicUrl; |
| | | this.form.persoasyncnPicUrl = res.data.data.personPicUrl; |
| | | this.form.faceFeature = res.data.data.faceFeature; |
| | | } |
| | | }, |
| | | uploadSuccess() { |
| | | }, |
| | | uploadError() { |
| | | }, |
| | | deleteBatch() { |
| | | if (this.selectedRowKeys.length === 0) { |
| | | 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: "warning", |
| | | message: "请选择要删除的人员", |
| | | type: "success", |
| | | message: "删除成功!", |
| | | }); |
| | | this.getPersonList(); |
| | | } else { |
| | | this.$confirm("提示:确定删除该底库选中人员?", { |
| | | center: true, |
| | | cancelButtonClass: "comfirm-class-cancle", |
| | | confirmButtonClass: "comfirm-class-sure", |
| | | }).then(async (_) => { |
| | | 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: "删除失败!", |
| | | }); |
| | | } |
| | | this.$notify({ |
| | | type: "error", |
| | | message: "删除失败!", |
| | | }); |
| | | } |
| | | }, |
| | |
| | | this.BaseManageData.queryPersonList(); |
| | | } |
| | | }, |
| | | handleRowStyle({ row, rowIndex }) { |
| | | if (rowIndex === 0) { |
| | | return "background:#222222;"; |
| | | } |
| | | }, |
| | | // handleRowStyle({ row, rowIndex }) { |
| | | // if (rowIndex === 0) { |
| | | // return "background:#222222;"; |
| | | // } |
| | | // }, |
| | | blackAngWhite() { |
| | | if (this.BaseManageData.selectBlacks.length > 0) { |
| | | for (let i = 0; i < this.BaseManageData.whiteList.length; i++) { |
| | |
| | | } |
| | | } |
| | | }, |
| | | // tosearch(item) { |
| | | // var curWwwPath = window.document.location.href; |
| | | // var pathname = window.document.location.pathname; |
| | | // var pos = curWwwPath.indexOf(pathname); |
| | | // var localhostPath = curWwwPath.substring(0, pos); //ip+port |
| | | // var href = localhostPath + "/Layout/Searching" |
| | | // let captureId = item.id == "" ? item.personId : item.id |
| | | // var url = item.personPicUrl ? item.personPicUrl : item.personPicUrl |
| | | // var compType = 0 |
| | | // window.open(href + '?showType=findByPic&targetId=' + captureId + '&picSmUrl=' + url + '&compType=' + compType) |
| | | // }, |
| | | tosearch(item) { |
| | | //let captureId = item.id == "" ? item.baseInfo[0].targetId : item.id |
| | | let captureId = item.id == "" ? item.personId : item.id; |
| | |
| | | .el-button--mini { |
| | | padding: 10px 34px; |
| | | font-size: 14px; |
| | | background:var(--colorCard) !important; |
| | | border-color:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | border-color: var(--colorCard) !important; |
| | | width: 150px; |
| | | border-radius: 18px; |
| | | } |
| | |
| | | } |
| | | .iconshanchuku-09 { |
| | | color: #fe6d68; |
| | | margin-right: 10px; |
| | | // margin-right: 10px; |
| | | } |
| | | .iconshanchuku-09:hover { |
| | | background: #fe6d68; |
| | |
| | | } |
| | | .iconbianjiku-09:hover { |
| | | border: 1px solidvar(--colorCard); |
| | | background:var(--colorCard); |
| | | background: var(--colorCard); |
| | | color: #fff; |
| | | } |
| | | } |
| | |
| | | font-size: 14px; |
| | | } |
| | | .el-radio__input.is-checked .el-radio__inner { |
| | | border-color:var(--colorCard); |
| | | background:var(--colorCard); |
| | | border-color: var(--colorCard); |
| | | background: var(--colorCard); |
| | | } |
| | | |
| | | .el-input--small { |
| | |
| | | padding: 11px 65px; |
| | | font-size: 14px; |
| | | border-radius: 18px; |
| | | border-color:var(--colorCard) !important; |
| | | background:var(--colorCard) !important; |
| | | border-color: var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | color: #fff; |
| | | } |
| | | .cancel-btn { |
| | |
| | | } |
| | | .iconpiliangshanchu-09 { |
| | | color: #fe6d68; |
| | | margin-right: 10px; |
| | | margin-left: 20px; |
| | | // margin-right: 10px; |
| | | // margin-left: 20px; |
| | | } |
| | | .iconpiliangshanchu-09:hover { |
| | | background: #fe6d68; |
| | |
| | | .el-button--small { |
| | | padding: 8px 45px; |
| | | font-size: 14px; |
| | | background:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | border-radius: 0px 18px 18px 0px; |
| | | border-color:var(--colorCard) !important; |
| | | border-color: var(--colorCard) !important; |
| | | color: #fff; |
| | | margin-right: 10px; |
| | | } |
| | | .el-input__suffix { |
| | | top: 6px; |
| | |
| | | font-size: 15px; |
| | | } |
| | | } |
| | | .el-table::before { |
| | | visibility: hidden; |
| | | } |
| | | .el-checkbox__input.is-indeterminate .el-checkbox__inner { |
| | | background-color:var(--colorCard); |
| | | border-color:var(--colorCard); |
| | | background-color: var(--colorCard); |
| | | border-color: var(--colorCard); |
| | | } |
| | | .el-checkbox__input.is-checked .el-checkbox__inner { |
| | | background-color:var(--colorCard); |
| | | border-color:var(--colorCard); |
| | | background-color: var(--colorCard); |
| | | border-color: var(--colorCard); |
| | | } |
| | | .el-table th.el-table__cell > .cell { |
| | | background: #f7f8fa; |
| | |
| | | text-align: center; |
| | | font-size: 23px; |
| | | transition: all 0.2s; |
| | | margin-left: 10px; |
| | | } |
| | | .el-dialog__header { |
| | | padding: 20px 0 10px; |
| | |
| | | padding: 8px 15px; |
| | | font-size: 14px; |
| | | border-radius: 3px; |
| | | background:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | border-radius: 16px; |
| | | border-color:var(--colorCard) !important; |
| | | border-color: var(--colorCard) !important; |
| | | width: 128px; |
| | | } |
| | | .el-input--mini .el-input__inner { |
| | |
| | | width: 150px; |
| | | } |
| | | .el-button--primary { |
| | | background:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | padding: 9px 37px; |
| | | color: #fff; |
| | | border: 1px solidvar(--colorCard) !important; |
| | |
| | | width: 150px; |
| | | } |
| | | .el-button--primary { |
| | | background:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | padding: 9px 37px; |
| | | color: #fff; |
| | | border: 1px solidvar(--colorCard) !important; |
| | |
| | | border-radius: 8px; |
| | | margin: 0 5px; |
| | | .el-checkbox__input.is-checked .el-checkbox__inner { |
| | | background-color:var(--colorCard); |
| | | border-color:var(--colorCard); |
| | | background-color: var(--colorCard); |
| | | border-color: var(--colorCard); |
| | | } |
| | | .el-checkbox { |
| | | width: 100%; |
| | |
| | | width: 150px; |
| | | } |
| | | .el-button--primary { |
| | | background:var(--colorCard) !important; |
| | | background: var(--colorCard) !important; |
| | | padding: 9px 37px; |
| | | color: #fff; |
| | | border: 1px solidvar(--colorCard) !important; |
| | |
| | | } |
| | | .el-date-table td.start-date span, |
| | | .el-date-table td.end-date span { |
| | | background-color:var(--colorCard); |
| | | background-color: var(--colorCard); |
| | | } |
| | | .el-date-table td.in-range div { |
| | | background-color:var(--colorCard)17; |
| | | background-color: var(--colorCard) 17; |
| | | } |
| | | .el-button--default { |
| | | background:var(--colorCard); |
| | | background: var(--colorCard); |
| | | padding: 9px 37px; |
| | | color: #fff; |
| | | border: 1px solidvar(--colorCard); |
| | |
| | | } |
| | | } |
| | | & > span:hover { |
| | | background:var(--colorCard); |
| | | background: var(--colorCard); |
| | | color: #fff; |
| | | } |
| | | & > .del-wrap:hover { |
| | |
| | | <car-list |
| | | ref="carList" |
| | | :baseObject="baseObject" |
| | | @changeShow="changeToAdd" |
| | | @onDelete="initBaseList" |
| | | :syncType="syncType" |
| | | v-show="showType == 'car'" |
| | | ></car-list> |
| | | </div> |
| | |
| | | }; |
| | | }, |
| | | methods: { |
| | | clearSelect1() { |
| | | this.$refs.baseLocal.categoryIndex = -1; |
| | | }, |
| | | clearSelect2() { |
| | | this.$refs.baseSync.categoryIndex = -1; |
| | | }, |
| | | getPersonList(item,type) { |
| | | this.baseObject = item; |
| | | this.baseForEdit = item; |
| | |
| | | .s-base-manage { |
| | | box-sizing: border-box; |
| | | background-color: #e9ebf2; |
| | | // min-width: 1315px; |
| | | height: 100%; |
| | | .el-collapse { |
| | | border: none; |
| | |
| | | position: relative; |
| | | background: #fff; |
| | | box-sizing: border-box; |
| | | // border-right: 1px solid #e0e0e0; |
| | | } |
| | | .resize-save { |
| | | position: absolute; |
| | |
| | | |
| | | import ElementUI from 'element-ui'; |
| | | import 'element-ui/lib/theme-chalk/index.css'; |
| | | import "@/assets/css/element-variables.scss"; |
| | | // import "@/assets/css/element-variables.scss"; |
| | | |
| | | import moment from "moment"; |
| | | Vue.prototype.$moment = moment; |