heyujie
2021-12-14 769275515cf9ed5a31a742b455b0a0690b3f5f99
删除ai_c 应用中新修改
3个文件已删除
8个文件已修改
4286 ■■■■ 已修改文件
public/apps.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/ai/index/App.vue 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/ai_c/index/App.vue 2775 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/ai_c/index/api.ts 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/ai_c/index/main.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/components/addBase.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/components/baseList.vue 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/components/carList.vue 905 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/components/personList.vue 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/index/App.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/library/index/main.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/apps.json
@@ -71,29 +71,6 @@
      "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",
src/pages/ai/index/App.vue
@@ -169,7 +169,7 @@
                      class="other-btn"
                      round
                      @click="checkDetail(item)"
                      v-if="activeName == '应用中心'&&item.price>0"
                      v-if="activeName == '应用中心' && item.price > 0"
                      >激活</el-button
                    >
                    <el-button
@@ -178,7 +178,7 @@
                      class="update-btn"
                      round
                      @click.stop="actived(item)"
                      v-if="activeName == '应用中心'&&item.price==0"
                      v-if="activeName == '应用中心' && item.price == 0"
                      >安装</el-button
                    >
                    <el-button
@@ -546,11 +546,6 @@
    goback() {
      this.inDetail = false;
    },
    // isShow(authority) {
    //   return (
    //     this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1
    //   );
    // },
    batchUpdate(s) {
      if (s == "both") {
        this.batchUpdateSDK();
@@ -584,7 +579,6 @@
          this.tempList = this.installedList;
          this.tempDarkList = this.notInstalledList;
          break;
        case "更新":
          this.showQuickPath = false;
          this.tempList = this.hasNewVersionSdk;
@@ -620,11 +614,6 @@
        this.tempDarkList = [];
      }
    },
    // closeDial() {
    //   this.productDetailVisible = false;
    //   this.productDetail = {};
    //   this.otherProducts = [];
    // },
    checkDetail(item, typ) {
      this.inDetail = true;
      this.detailProductID = item.id;
@@ -634,55 +623,9 @@
        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;
@@ -804,18 +747,6 @@
        })
        .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: "",
@@ -853,7 +784,7 @@
      getUnActivedApp().then((res) => {
        if (res.code == 200) {
          this.unActivedAppList = res.data;
          this.pickTab()
          this.pickTab();
        }
      });
    },
@@ -896,10 +827,6 @@
          });
      }
    },
    // checkMyAlgorith() {
    //   this.showActivateSuccess = false;
    //   this.activeName = "已激活";
    // },
    onFileUpload(file) {
      this.patchFile = { ...file };
      this.fileAdded = true;
@@ -917,6 +844,7 @@
                version: res.data.apps[0].version,
                productName: res.data.productName,
                installContent: res.data.apps[0].installContent,
              };
            }
            if (res.data.sdks.length > 0) {
@@ -935,12 +863,6 @@
          this.$message.error(e.msg);
        });
    },
    // openApp() {
    //   window.parent.postMessage(
    //     { msg: "toOpenApp?" + this.productDetail.productBaseId },
    //     "*"
    //   );
    // },
    onFileAdded(f) {
      this.patchUpdateStatus = "";
    },
@@ -975,26 +897,8 @@
      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("确定要卸载该算法吗?", "提示")
@@ -1016,7 +920,6 @@
        })
        .catch((e) => {});
    },
    donwloadSDK(item) {
      let timer = null;
      item.upgradeLoading = true;
@@ -1029,7 +932,7 @@
          clearInterval(timer);
          item.upgradeLoading = false;
          this.downloadItem = "";
          window.parent.postMessage({ msg: "AppUpdate" }, "*");
        })
        .catch((err) => {
@@ -1041,19 +944,18 @@
      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);
    },
  },
@@ -1461,8 +1363,8 @@
              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 {
src/pages/ai_c/index/App.vue
File was deleted
src/pages/ai_c/index/api.ts
File was deleted
src/pages/ai_c/index/main.ts
File was deleted
src/pages/library/components/addBase.vue
@@ -424,11 +424,9 @@
      // dateString:当前时间
      // compareDateString:需要比较的时间
      if (this.isEmpty(dateString)) {
        // alert('dateString不能为空')
        return;
      }
      if (this.isEmpty(compareDateString)) {
        // alert('compareDateString不能为空')
        return 1;
      }
      var dateTime = this.dateParse(dateString).getTime();
src/pages/library/components/baseList.vue
@@ -205,85 +205,14 @@
      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() {
@@ -317,25 +246,25 @@
        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: {
@@ -401,7 +330,7 @@
  font-size: 14px;
}
.out-div {
  max-height: 100%;
  max-height: 100%;    height: 100%;
  .el-collapse-item__wrap {
    will-change: height;
    background-color: #fff;
src/pages/library/components/carList.vue
@@ -1,253 +1,170 @@
<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 + "/&nbsp;" : ""
        }}</span>
        <span class="f14" style="color: #000000">{{
          this.baseObject.bwType === "1"
            ? "黑名单/&nbsp;"
            : "白名单/&nbsp;&nbsp;&nbsp;"
        }}</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"
@@ -297,35 +214,7 @@
          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="入库时间"
@@ -334,18 +223,7 @@
          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">
@@ -415,13 +293,12 @@
          </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>
@@ -608,6 +485,183 @@
        >
      </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>
@@ -616,21 +670,23 @@
  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() {
@@ -651,15 +707,14 @@
          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,
@@ -678,7 +733,7 @@
        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: "",
@@ -700,14 +755,12 @@
        ],
      },
      tableData: [],
      tableHeight: window.innerHeight - 320,
      multipleSelection: [],
      peoperLevel: [],
      oldWidth: "",
      oldHeight: "",
      // 上传后的弹框显示
      askDeleteShow: false,
      delType: "",
      toDeleteId: "",
      dialogVisible: false,
      // 批量上传后的返回结果
      uploadResult: {
        failList: [],
        successList: [],
@@ -727,8 +780,59 @@
      }
      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) {
@@ -737,10 +841,27 @@
      });
      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;
@@ -789,7 +910,7 @@
        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: "",
@@ -802,19 +923,9 @@
        reserved: "",
      }),
        done();
      // this.$confirm('确认关闭?')
      //   .then(_ => {
      //     done();
      //   })
      //   .catch(_ => {});
    },
    handleClose2(done) {
      done();
      // this.$confirm('确认关闭?')
      //   .then(_ => {
      //     done();
      //   })
      //   .catch(_ => {});
    },
    isShow(authority) {
      if (this.isAdmin) {
@@ -834,43 +945,32 @@
        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;
@@ -891,7 +991,6 @@
      });
    },
    handleClose() {
      //this.getCarList();
      this.dialogFormVisible = false;
    },
    handleSelectionChange(val) {
@@ -954,7 +1053,7 @@
        personPicUrl: item.personPicUrl,
        reserved: item.reserved,
      });
      if (res.success === true) {
      if (res.success) {
        this.$notify({
          type: "success",
          message: "底库人员成功变更生效状态!",
@@ -973,10 +1072,24 @@
      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) {
@@ -994,7 +1107,7 @@
      this.total = res.data.total;
      this.compare = true;
    },
    updateThreshold() {},
    // updateThreshold() {},
    async updateFace(param) {
      const fd = new FormData();
      fd.append("file", param.file);
@@ -1014,39 +1127,22 @@
        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: "删除失败!",
        });
      }
    },
@@ -1065,10 +1161,19 @@
        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) {
@@ -1163,7 +1268,6 @@
      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);
@@ -1392,7 +1496,6 @@
  display: none;
}
.table-parent {
  // position: relative;
  height: 100%;
  overflow: visible !important;
  .picture {
@@ -1501,59 +1604,7 @@
  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 {
@@ -1562,7 +1613,7 @@
}
.avatar-uploader {
   max-width: 100px;
  max-width: 100px;
  min-width: 100px;
  min-height: 100px;
  border: 1px solid #eee;
src/pages/library/components/personList.vue
@@ -26,7 +26,7 @@
            v-model="baseObject.enable"
            active-color="#4E94FF"
            inactive-color="#BBBBBB"
            style="margin-right: 25px"
            style="margin-right: 10px"
            :disabled="isDisabled(baseObject)"
            @change="setEnable(baseObject)"
          >
@@ -50,7 +50,6 @@
        </div>
      </div>
    </el-row>
    <div class="border-tabl">
      <div class="head-search">
        <div class="desc">
@@ -301,18 +300,6 @@
        :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"
@@ -1123,7 +1110,6 @@
        idCard: "",
        reserved: "",
      },
      showPop: true,
      askDeleteShow: false,
      toDeleteId: "",
      reqCameraParams: {
@@ -1173,9 +1159,6 @@
        ],
      },
      tableData: [],
      // tableHeight: window.innerHeight - 320,
      // multipleSelection: [],
      // peoperLevel: [],
      oldWidth: "",
      oldHeight: "",
      delType: "",
@@ -1293,11 +1276,9 @@
          }
          this.getPersonList();
        })
        .catch((err) => {
        });
        .catch((err) => {});
    },
    sayHello() {
    },
    sayHello() {},
    getUploadResult(result) {
      this.uploadResult = result.data;
      this.dialogVisible = true;
@@ -1511,43 +1492,28 @@
        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: "删除失败!",
        });
      }
    },
@@ -1566,11 +1532,11 @@
        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++) {
@@ -1597,17 +1563,6 @@
        }
      }
    },
    // 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;
@@ -1829,8 +1784,8 @@
      .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;
      }
@@ -1889,7 +1844,7 @@
      }
      .iconshanchuku-09 {
        color: #fe6d68;
        margin-right: 10px;
        // margin-right: 10px;
      }
      .iconshanchuku-09:hover {
        background: #fe6d68;
@@ -1901,7 +1856,7 @@
      }
      .iconbianjiku-09:hover {
        border: 1px solidvar(--colorCard);
        background:var(--colorCard);
        background: var(--colorCard);
        color: #fff;
      }
    }
@@ -1944,8 +1899,8 @@
        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 {
@@ -1977,8 +1932,8 @@
          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 {
@@ -2035,8 +1990,8 @@
      }
      .iconpiliangshanchu-09 {
        color: #fe6d68;
        margin-right: 10px;
        margin-left: 20px;
        // margin-right: 10px;
        // margin-left: 20px;
      }
      .iconpiliangshanchu-09:hover {
        background: #fe6d68;
@@ -2046,10 +2001,11 @@
      .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;
@@ -2102,13 +2058,16 @@
      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;
@@ -2150,6 +2109,7 @@
  text-align: center;
  font-size: 23px;
  transition: all 0.2s;
  margin-left: 10px;
}
.el-dialog__header {
  padding: 20px 0 10px;
@@ -2223,9 +2183,9 @@
    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 {
@@ -2293,7 +2253,7 @@
      width: 150px;
    }
    .el-button--primary {
      background:var(--colorCard) !important;
      background: var(--colorCard) !important;
      padding: 9px 37px;
      color: #fff;
      border: 1px solidvar(--colorCard) !important;
@@ -2350,7 +2310,7 @@
      width: 150px;
    }
    .el-button--primary {
      background:var(--colorCard) !important;
      background: var(--colorCard) !important;
      padding: 9px 37px;
      color: #fff;
      border: 1px solidvar(--colorCard) !important;
@@ -2402,8 +2362,8 @@
          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%;
@@ -2463,7 +2423,7 @@
      width: 150px;
    }
    .el-button--primary {
      background:var(--colorCard) !important;
      background: var(--colorCard) !important;
      padding: 9px 37px;
      color: #fff;
      border: 1px solidvar(--colorCard) !important;
@@ -2535,13 +2495,13 @@
  }
  .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);
@@ -2573,7 +2533,7 @@
    }
  }
  & > span:hover {
    background:var(--colorCard);
    background: var(--colorCard);
    color: #fff;
  }
  & > .del-wrap:hover {
src/pages/library/index/App.vue
@@ -28,6 +28,9 @@
          <car-list
            ref="carList"
            :baseObject="baseObject"
            @changeShow="changeToAdd"
            @onDelete="initBaseList"
            :syncType="syncType"
            v-show="showType == 'car'"
          ></car-list>
        </div>
@@ -74,12 +77,6 @@
    };
  },
  methods: {
    clearSelect1() {
      this.$refs.baseLocal.categoryIndex = -1;
    },
    clearSelect2() {
      this.$refs.baseSync.categoryIndex = -1;
    },
    getPersonList(item,type) {
      this.baseObject = item;
      this.baseForEdit = item;
@@ -152,7 +149,6 @@
.s-base-manage {
  box-sizing: border-box;
  background-color: #e9ebf2;
  // min-width: 1315px;
  height: 100%;
  .el-collapse {
    border: none;
@@ -178,7 +174,6 @@
    position: relative;
    background: #fff;
    box-sizing: border-box;
    // border-right: 1px solid #e0e0e0;
  }
  .resize-save {
    position: absolute;
src/pages/library/index/main.ts
@@ -3,7 +3,7 @@
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;