heyujie
2021-12-07 4ff29e301de38488db0ff04f0209c99e37cf30b4
src/pages/library/components/personList.vue
@@ -1,13 +1,56 @@
<template>
  <div class="table-parent">
    <el-row style="margin-top:20px">
    <el-row>
      <div class="base-tip">
        <span>{{this.baseObject.tableName?this.baseObject.tableName + '/&nbsp;':''}}</span>
        <span>{{this.baseObject.bwType === '1'?'黑名单/&nbsp;':'白名单/&nbsp;&nbsp;&nbsp;'}}</span>
        <span>有效时间:{{this.baseObject.startTime}}--{{this.baseObject.endTime?this.baseObject.endTime:'永久有效'}}</span>
        <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: 25px"
            :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="deleteBase"
            ></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 0px">
    <!-- <el-row class style="margin: 40px 0 40px 0px">
      <el-col :span="6">
        <el-input
          placeholder="姓名/性别/身份证号/手机号"
@@ -21,7 +64,9 @@
        </el-input>
      </el-col>
      <el-col :span="2">
        <el-button size="small" type="primary" @click="handleSearch">搜索</el-button>
        <el-button size="small" type="primary" @click="handleSearch"
          >搜索</el-button
        >
      </el-col>
      <el-col :offset="11" :span="3">
        <fTemplate authority="library:set">
@@ -31,12 +76,13 @@
            type="danger"
            @click="deleteBatch"
            v-if="isShow('library:set')"
          >批量删除</el-button>
            >批量删除</el-button
          >
        </fTemplate>
      </el-col>
      <el-col :span="2">
        <div class="text-left">
          <upload
          <UploadBtn
            limitTypes=".jpg,.png,.jpeg"
            limitSize
            uploadBtntext="上传照片"
@@ -46,35 +92,106 @@
            :isDrag="true"
            @addFilesBaBackFN="changeDialog"
            @successFN="getUploadResult"
            :idJson="{tableId:baseObject.id}"
            :idJson="{ tableId: baseObject.id }"
          />
        </div>
      </el-col>
    </el-row>
    <div style="display:flex;" class="border-tabl ml20">
    </el-row> -->
    <div 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"
            v-model="BaseManageData.contentValue"
            @keyup.enter.native="handleSearch"
          >
            <upload-icon slot="suffix"></upload-icon>
          </el-input>
          <el-button size="small" type="primary" @click="handleSearch"
            >搜索</el-button
          >
          <el-tooltip
            content="批量删除"
            placement="top"
            popper-class="atooltip"
          >
            <span
              class="iconfont iconfont-wrap iconpiliangshanchu-09"
              title="删除"
              @click="deleteBatch"
              v-if="isShow('library:set')"
            ></span>
          </el-tooltip>
          <el-tooltip
            content="上传照片"
            placement="top"
            popper-class="atooltip"
          >
            <UploadBtn
              limitTypes=".jpg,.png,.jpeg"
              limitSize
              uploadBtntext="上传照片"
              uploadBtnIcon
              v-if="isShow('library:set')"
              uploadBtnSize="small"
              :isDrag="true"
              @addFilesBaBackFN="changeDialog"
              @successFN="getUploadResult"
              :idJson="{ tableId: baseObject.id }"
            />
          </el-tooltip>
        </div>
      </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'}"
        :default-sort="{ prop: 'createTime', order: 'descending' }"
        @selection-change="handleSelectionChange"
        :header-cell-style="{background:'#f8f8f8',color:'#222222'}"
        :header-cell-style="{ background: '#f8f8f8', color: '#222222' }"
      >
        <el-table-column type="selection" width="30"></el-table-column>
        <el-table-column label="序号" width="60" sortable align="center">
          <template slot-scope="scope">{{scope.$index+1}}</template>
        </el-table-column>
        <el-table-column prop="personPicUrl" label="照片" align="center" width="120">
        <!-- <el-table-column label="序号" width="60" sortable align="center">
          <template slot-scope="scope">{{ scope.$index + 1 }}</template>
        </el-table-column> -->
        <el-table-column
          prop="personPicUrl"
          label="照片"
          align="center"
          width="120"
        >
          <template slot-scope="scope">
            <img
              :src="'/httpImage/'+scope.row.personPicUrl"
              style="width:84px;height:84px;object-fit:contain;"
              :src="'/httpImage/' + scope.row.personPicUrl"
              style="width: 84px; height: 84px; object-fit: contain"
              alt
            />
            <p class="text-center fb f16" v-show="haveScore(scope.row)">{{scope.row.compareScore}}%</p>
            <p class="text-center fb f16" v-show="haveScore(scope.row)">
              {{ scope.row.compareScore }}%
            </p>
          </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
@@ -85,7 +202,13 @@
          sortable
          align="center"
        ></el-table-column>
        <el-table-column prop="sex" label="性别" width="70" sortable align="center"></el-table-column>
        <el-table-column
          prop="sex"
          label="性别"
          width="70"
          sortable
          align="center"
        ></el-table-column>
        <el-table-column
          prop="idCard"
          label="身份证号"
@@ -102,7 +225,12 @@
          sortable
          align="center"
        ></el-table-column>
        <el-table-column prop="monitorLevel" label="等级" align="center" width="80"></el-table-column>
        <el-table-column
          prop="monitorLevel"
          label="等级"
          align="center"
          width="80"
        ></el-table-column>
        <el-table-column
          prop="createTime"
          label="入库时间"
@@ -112,58 +240,78 @@
          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">
              <el-tooltip content="编辑" placement="top" popper-class="atooltip">
              <el-tooltip
                content="编辑"
                placement="top"
                popper-class="atooltip"
              >
                <span
                  class="iconfont iconbianji iconStyle1"
                  style="font-size:15px;"
                  class="iconfont iconfont-wrap iconbianji"
                  style="font-size: 15px"
                  @click="handleClick(scope.row)"
                ></span>
              </el-tooltip>
            </fTemplate>
            <el-tooltip content="查找此人" placement="top" popper-class="atooltip">
              <span class="iconfont iconsousuoren iconStyle1" @click="tosearch(scope.row)"></span>
            <el-tooltip
              content="查找此人"
              placement="top"
              popper-class="atooltip"
            >
              <span
                class="iconfont iconsousuoren"
                @click="tosearch(scope.row)"
              ></span>
            </el-tooltip>
            <el-tooltip content="查看详情" placement="top" popper-class="atooltip">
              <span class="iconfont iconsousuoren iconStyle1" @click="showDetail(scope.row)"></span>
            <el-tooltip
              content="查看详情"
              placement="top"
              popper-class="atooltip"
            >
              <span
                class="iconfont iconsousuoren"
                @click="showDetail(scope.row)"
              ></span>
            </el-tooltip>
            <fTemplate authority="library:set">
              <el-tooltip content="复制" placement="top" popper-class="atooltip">
              <el-tooltip
                content="复制"
                placement="top"
                popper-class="atooltip"
              >
                <span
                  class="iconfont iconfuzhi iconStyle1"
                  class="iconfont iconfuzhi"
                  title="复制"
                  @click="copyClick(scope.row)"
                ></span>
              </el-tooltip>
            </fTemplate>
            <fTemplate authority="library:set">
              <el-tooltip content="移动" placement="top" popper-class="atooltip">
              <el-tooltip
                content="移动"
                placement="top"
                popper-class="atooltip"
              >
                <span
                  class="iconfont iconyidongzhi iconStyle1"
                  style="font-size:15px;"
                  class="iconfont iconyidongzhi"
                  style="font-size: 15px"
                  title="移动"
                  @click="moveClick(scope.row)"
                ></span>
              </el-tooltip>
            </fTemplate>
            <fTemplate authority="library:set">
              <el-tooltip content="删除" placement="top" popper-class="atooltip">
              <el-tooltip
                content="删除"
                placement="top"
                popper-class="atooltip"
              >
                <span
                  class="iconfont iconshanchu iconStyle1"
                  style="color:#E74C3C;"
                  class="iconfont iconshanchuku-09"
                  style="color: #e74c3c"
                  @click="deleteThis(scope.row.id)"
                  title="删除"
                ></span>
@@ -172,20 +320,34 @@
          </template>
        </el-table-column>
      </el-table>
    </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"
        :page-sizes="[10, 20, 50, 100]"
        style="margin-top: 10px"
        layout="total,sizes,prev,pager,next,jumper"
        :total="BaseManageData.total"
      ></el-pagination>
    </div>
    <el-dialog title="抓拍详情" :visible.sync="cameraDetailVisible" okText="确定">
    <!-- <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"
      okText="确定"
    >
      <div class="top-bar">
        <el-date-picker
          size="mini"
@@ -197,11 +359,18 @@
          start-placeholder="开始时间"
          end-placeholder="结束时间"
        ></el-date-picker>
        <div style="margin:0 10px;display:flex;">
          <span style="width:68px;">停留时长:</span>
          <el-input size="mini" style="width: 80px;" v-model.number="reqCameraParams.thresholdTime"></el-input>s
        <div style="margin: 0 10px; display: flex">
          <span style="width: 68px">停留时长:</span>
          <el-input
            size="mini"
            style="width: 80px"
            v-model.number="reqCameraParams.thresholdTime"
          ></el-input
          >s
        </div>
        <el-button size="mini" type="primary" @click="postCameraData">查询</el-button>
        <el-button size="mini" type="primary" @click="postCameraData"
          >查询</el-button
        >
      </div>
      <div class="member-info">
@@ -209,46 +378,76 @@
        <ul>
          <li>
            <span>姓名:</span>
            <span>{{memberInfo.personName}}</span>
            <span>{{ memberInfo.personName }}</span>
          </li>
          <li>
            <span>性别:</span>
            <span>{{memberInfo.sex}}</span>
            <span>{{ memberInfo.sex }}</span>
          </li>
          <li>
            <span>身份证号:</span>
            <span>{{memberInfo.idCard}}</span>
            <span>{{ memberInfo.idCard }}</span>
          </li>
          <li>
            <span>意图:</span>
            <span>{{memberInfo.reserved}}</span>
            <span>{{ memberInfo.reserved }}</span>
          </li>
        </ul>
      </div>
      <el-table :data="cameraDetailData" border>
        <el-table-column prop="faceImg" label="抓拍实景" width="160" align="center">
        <el-table-column
          prop="faceImg"
          label="抓拍实景"
          width="160"
          align="center"
        >
          <template slot-scope="scope">
            <div>
              <img
                v-if="scope.row.faceImg"
                :src="`/httpImage/`+scope.row.faceImg"
                style="max-height:84px;width:84px;object-fit:contain;background:rgba(0,0,0,0.35);"
                :src="`/httpImage/` + scope.row.faceImg"
                style="
                  max-height: 84px;
                  width: 84px;
                  object-fit: contain;
                  background: rgba(0, 0, 0, 0.35);
                "
                class="avatar"
              />
            </div>
          </template>
        </el-table-column>
        <el-table-column prop="cameraName" label="摄像机名称" width="100" align="center"></el-table-column>
        <el-table-column prop="startTime" label="开始时间" align="center"></el-table-column>
        <el-table-column prop="endTime" label="结束时间" align="center"></el-table-column>
        <el-table-column prop="stayTime" label="停留时长" width="99" align="center">
        <el-table-column
          prop="cameraName"
          label="摄像机名称"
          width="100"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="startTime"
          label="开始时间"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="endTime"
          label="结束时间"
          align="center"
        ></el-table-column>
        <el-table-column
          prop="stayTime"
          label="停留时长"
          width="99"
          align="center"
        >
          <template slot-scope="scope">
            <span>{{scope.row.stayTime}} 秒</span>
            <span>{{ scope.row.stayTime }} 秒</span>
          </template>
        </el-table-column>
      </el-table>
      <p style="text-align:right; font-size: 14px;">共{{faceDataCount}}条数据</p>
      <p style="text-align: right; font-size: 14px">
        共{{ faceDataCount }}条数据
      </p>
    </el-dialog>
    <el-dialog
      title="修改信息"
@@ -258,7 +457,12 @@
      :before-close="handleClose"
      cancelText="取消"
    >
      <el-form ref="formForEdit" :model="form" label-width="120px" :rules="rules">
      <el-form
        ref="formForEdit"
        :model="form"
        label-width="120px"
        :rules="rules"
      >
        <div class="flex-center mb10">
          <el-upload
            class="avatar-uploader"
@@ -270,38 +474,73 @@
            :on-error="uploadError"
          >
            <div class="mask1">
              <div slot="trigger" class="flex-center" style="position:absolute;top:120px;">
              <div
                slot="trigger"
                class="flex-center"
                style="position: absolute; top: 120px"
              >
                <p
                  style="background:rgba(0,0,0,0.35);width:150px;line-height:30px;color:#fff;font-size:13px;opacity:1;"
                >点击修改照片</p>
                  style="
                    background: rgba(0, 0, 0, 0.35);
                    width: 150px;
                    line-height: 30px;
                    color: #fff;
                    font-size: 13px;
                    opacity: 1;
                  "
                >
                  点击修改照片
                </p>
              </div>
            </div>
            <img
              v-if="`httpImage/`+form.personPicUrl"
              :src="`/httpImage/`+form.personPicUrl"
              style="max-height:150px;width:150px;object-fit:contain;background:rgba(0,0,0,0.35);"
              v-if="`httpImage/` + form.personPicUrl"
              :src="`/httpImage/` + form.personPicUrl"
              style="
                max-height: 150px;
                width: 150px;
                object-fit: contain;
                background: rgba(0, 0, 0, 0.35);
              "
              class="avatar"
            />
          </el-upload>
        </div>
        <el-row>
          <el-col :span="20">
            <el-form-item label="ID" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.id" disabled placeholder="请输入"></el-input>
            <el-form-item label="ID" style="width: 100%; margin-bottom: 10px">
              <el-input
                size="small"
                v-model="form.id"
                disabled
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="照片标识" prop="picDesc" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.picDesc" placeholder="请输入"></el-input>
            <el-form-item
              label="照片标识"
              prop="picDesc"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-input
                size="small"
                v-model="form.picDesc"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="姓名" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.personName" placeholder="请输入"></el-input>
            <el-form-item label="姓名" style="width: 100%; margin-bottom: 10px">
              <el-input
                size="small"
                v-model="form.personName"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
@@ -310,7 +549,7 @@
            <el-form-item
              label="性别"
              prop="sex"
              style="width:100%;margin-bottom: 8px; text-align: left"
              style="width: 100%; margin-bottom: 8px; text-align: left"
            >
              <el-radio-group v-model="form.sex" class="mt10">
                <el-radio label="男"></el-radio>
@@ -321,26 +560,44 @@
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="身份证号" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.idCard" placeholder="请输入"></el-input>
            <el-form-item
              label="身份证号"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-input
                size="small"
                v-model="form.idCard"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="手机号" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.phoneNum" placeholder="请输入"></el-input>
            <el-form-item
              label="手机号"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-input
                size="small"
                v-model="form.phoneNum"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="人员等级" prop="monitorLevel" style="width:100%;margin-bottom: 10px;">
            <el-form-item
              label="人员等级"
              prop="monitorLevel"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-select
                size="small"
                v-model="form.monitorLevel"
                placeholder="请选择"
                style="width:100%"
                style="width: 100%"
              >
                <el-option
                  v-for="item in VideoPhotoData.dictionary.MONITORLEVEL"
@@ -354,47 +611,98 @@
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="入库位置" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.fromServerId" disabled placeholder="请输入"></el-input>
            <el-form-item
              label="入库位置"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-input
                size="small"
                v-model="form.fromServerId"
                disabled
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="入库时间" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.createTime" disabled placeholder="请输入"></el-input>
            <el-form-item
              label="入库时间"
              style="width: 100%; margin-bottom: 10px"
            >
              <el-input
                size="small"
                v-model="form.createTime"
                disabled
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="20">
            <el-form-item label="其他" style="width:100%;margin-bottom: 10px;">
              <el-input size="small" v-model="form.reserved" placeholder="请输入"></el-input>
            <el-form-item label="其他" style="width: 100%; margin-bottom: 10px">
              <el-input
                size="small"
                v-model="form.reserved"
                placeholder="请输入"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="handleClose" type="info">取 消</el-button>
        <el-button size="small" type="primary" @click="submit()">确 定</el-button>
        <el-button size="small" @click="handleClose" type="info"
          >取 消</el-button
        >
        <el-button size="small" type="primary" @click="submit()"
          >确 定</el-button
        >
      </div>
    </el-dialog>
    <el-dialog title="提示" :visible.sync="dialogVisible" :close="getPersonList" width="30%">
    <el-dialog
      title="提示"
      :visible.sync="dialogVisible"
      :close="getPersonList"
      width="30%"
    >
      <div>
        <div class="tl">
          <span>上传成功的数量:{{uploadResult.successList.length}}</span>
          <span>上传成功的数量:{{ uploadResult.successList.length }}</span>
        </div>
        <div class="flex-box mt10">
          <span>上传失败的数量:{{uploadResult.failList.length}}</span>
          <div class="ml20" v-for="(i,index) in uploadResult.failList" :key="index">{{i}}</div>
          <span>上传失败的数量:{{ uploadResult.failList.length }}</span>
          <div
            class="ml20"
            v-for="(i, index) in uploadResult.failList"
            :key="index"
          >
            {{ i }}
          </div>
        </div>
        <div class="flex-box mt10">
          <span>包含多张人脸的图片数量:{{uploadResult.multiFaceList.length}}</span>
          <div class="ml20" v-for="(i,index) in uploadResult.multiFaceList" :key="index">{{i}}</div>
          <span
            >包含多张人脸的图片数量:{{
              uploadResult.multiFaceList.length
            }}</span
          >
          <div
            class="ml20"
            v-for="(i, index) in uploadResult.multiFaceList"
            :key="index"
          >
            {{ i }}
          </div>
        </div>
        <div class="flex-box mt10">
          <span>不含人脸的图片数量:{{uploadResult.noFaceList.length}}</span>
          <div class="ml20" v-for="(i,index) in uploadResult.noFaceList" :key="index">{{i}}</div>
          <span>不含人脸的图片数量:{{ uploadResult.noFaceList.length }}</span>
          <div
            class="ml20"
            v-for="(i, index) in uploadResult.noFaceList"
            :key="index"
          >
            {{ i }}
          </div>
        </div>
      </div>
    </el-dialog>
@@ -413,13 +721,21 @@
            <p>黑名单 ></p>
          </div>
          <div class="baseList">
            <el-checkbox-group v-model="BaseManageData.selectBlacks" @change="blackAngWhite">
              <div class="base" v-for="(item, index) in BaseManageData.blackList" :key="index">
            <el-checkbox-group
              v-model="BaseManageData.selectBlacks"
              @change="blackAngWhite"
            >
              <div
                class="base"
                v-for="(item, index) in BaseManageData.blackList"
                :key="index"
              >
                <el-checkbox
                  :label="item.value"
                  :title="item.title"
                  :disabled="item.disabled"
                >{{item.title}}</el-checkbox>
                  >{{ item.title }}</el-checkbox
                >
              </div>
            </el-checkbox-group>
          </div>
@@ -429,13 +745,21 @@
            <p>白名单 ></p>
          </div>
          <div class="baseList">
            <el-checkbox-group v-model="BaseManageData.selectWhites" @change="blackAngWhite">
              <div class="base" v-for="(item, index) in BaseManageData.whiteList" :key="index">
            <el-checkbox-group
              v-model="BaseManageData.selectWhites"
              @change="blackAngWhite"
            >
              <div
                class="base"
                v-for="(item, index) in BaseManageData.whiteList"
                :key="index"
              >
                <el-checkbox
                  :label="item.value"
                  :title="item.title"
                  :disabled="item.disabled"
                >{{item.title}}</el-checkbox>
                  >{{ item.title }}</el-checkbox
                >
              </div>
            </el-checkbox-group>
          </div>
@@ -443,7 +767,9 @@
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="copyClose" type="info">取 消</el-button>
        <el-button size="small" type="primary" @click="copySubmit()">确 定</el-button>
        <el-button size="small" type="primary" @click="copySubmit()"
          >确 定</el-button
        >
      </div>
    </el-dialog>
@@ -466,12 +792,17 @@
              @change="blackAngWhite"
              :max="1"
            >
              <div class="base" v-for="(item, index) in BaseManageData.blackList" :key="index">
              <div
                class="base"
                v-for="(item, index) in BaseManageData.blackList"
                :key="index"
              >
                <el-checkbox
                  :label="item.value"
                  :title="item.title"
                  :disabled="item.disabled"
                >{{item.title}}</el-checkbox>
                  >{{ item.title }}</el-checkbox
                >
              </div>
            </el-checkbox-group>
          </div>
@@ -486,12 +817,17 @@
              @change="blackAngWhite"
              :max="1"
            >
              <div class="base" v-for="(item, index) in BaseManageData.whiteList" :key="index">
              <div
                class="base"
                v-for="(item, index) in BaseManageData.whiteList"
                :key="index"
              >
                <el-checkbox
                  :label="item.value"
                  :title="item.title"
                  :disabled="item.disabled"
                >{{item.title}}</el-checkbox>
                  >{{ item.title }}</el-checkbox
                >
              </div>
            </el-checkbox-group>
          </div>
@@ -499,51 +835,68 @@
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="moveClose" type="info">取 消</el-button>
        <el-button size="small" type="primary" @click="moveSubmit()">确 定</el-button>
        <el-button size="small" type="primary" @click="moveSubmit()"
          >确 定</el-button
        >
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { updateBasePerson, deleteBasePersons } from "@/api/baseLibrary";
import {
  updateBasePerson,
  deleteBasePersons,
  updateDbTableStatus,
} from "@/api/baseLibrary";
import { getCameraFaceData } from "@/api/es";
import axios from "axios";
// import { findByType } from '@/server/video.js'
import Upload from "./upload";
import UploadBtn from "./upload";
import fTemplate from "@/components/fTemplate";
import UploadIcon from "@/components/searching/UploadIcon.vue";
Date.prototype.Format = function (fmt) {
  var o = {
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "H+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    "S": this.getMilliseconds() //毫秒
    "M+": this.getMonth() + 1, //月份
    "d+": this.getDate(), //日
    "H+": this.getHours(), //小时
    "m+": this.getMinutes(), //分
    "s+": this.getSeconds(), //秒
    "q+": Math.floor((this.getMonth() + 3) / 3), //季度
    S: this.getMilliseconds(), //毫秒
  };
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (this.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
  return fmt;
}
};
export default {
  data() {
    return {
      timeRange: [new Date(2020, 7, 25, 8), new Date(new Date().setHours(23, 59, 59))],
      timeRange: [
        new Date(2020, 7, 25, 8),
        new Date(new Date().setHours(23, 59, 59)),
      ],
      memberInfo: {
        personName: '',
        sex: '',
        idCard: '',
        reserved: ''
        personName: "",
        sex: "",
        idCard: "",
        reserved: "",
      },
      reqCameraParams: {
        startTime: new Date(2020, 7, 25, 8).Format("yyyy-MM-dd HH:mm:ss"),
        endTime: new Date().Format("yyyy-MM-dd HH:mm:ss"),
        thresholdTime: 10,
        faceId: []
        faceId: [],
      },
      cameraDetailData: [],
      cameraDetailVisible: false,
@@ -573,16 +926,16 @@
        monitorLevel: "one",
        faceUrl: "group2/M00/0A/D7/wKgBnFyjH0-AUE5eAAC8hSMP2Yw110.jpg",
        enable: 0,
        reserved: ""
        reserved: "",
      },
      rules: {
        picDesc: [
          { required: true, message: "请输入照片标识", trigger: "submit" }
          { required: true, message: "请输入照片标识", trigger: "submit" },
        ],
        sex: [{ required: true, message: "请勾选性别", trigger: "submit" }],
        monitorLevel: [
          { required: true, message: "请选择人员等级", trigger: "submit" }
        ]
          { required: true, message: "请选择人员等级", trigger: "submit" },
        ],
      },
      tableData: [],
      tableHeight: window.innerHeight - 320,
@@ -594,39 +947,41 @@
      // 上传后的弹框显示
      dialogVisible: false,
      // 批量上传后的返回结果
      uploadResult: { failList: [], successList: [], multiFaceList: [], noFaceList: [] }
      uploadResult: {
        failList: [],
        successList: [],
        multiFaceList: [],
        noFaceList: [],
      },
    };
  },
  computed: {
    isAdmin() {
      if (
        sessionStorage.getItem('userInfo') &&
        sessionStorage.getItem('userInfo') !== ''
        sessionStorage.getItem("userInfo") &&
        sessionStorage.getItem("userInfo") !== ""
      ) {
        let loginName = JSON.parse(sessionStorage.getItem('userInfo')).username
        return (
          loginName === 'superadmin' || loginName === 'basic'
        )
        let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username;
        return loginName === "superadmin" || loginName === "basic";
      }
      return false;
    }
    },
  },
  methods: {
    postCameraData() {
      getCameraFaceData(this.reqCameraParams).then(res => {
      getCameraFaceData(this.reqCameraParams).then((res) => {
        if (res && res.rtnCode == 1) {
          this.cameraDetailData = res.rtnData
          this.faceDataCount = res.rtnData.length
          this.cameraDetailData = res.rtnData;
          this.faceDataCount = res.rtnData.length;
        }
      })
      });
    },
    timeChange(val) {
      this.reqCameraParams.startTime = val[0];
      this.reqCameraParams.endTime = val[1];
    },
    showDetail(row) {
      this.cameraDetailData = []
      this.cameraDetailData = [];
      this.memberInfo.reserved = row.reserved;
      this.memberInfo.idCard = row.idCard;
      this.memberInfo.personName = row.personName;
@@ -636,18 +991,16 @@
    },
    isShow(authority) {
      if (this.isAdmin) {
        return true
      } else if (
        this.buttonAuthority.indexOf(',' + authority + ',') > -1
      ) {
        return true
        return true;
      } else if (this.buttonAuthority.indexOf("," + authority + ",") > -1) {
        return true;
      } else {
        return false
        return false;
      }
    },
    toggleSelection(rows) {
      if (rows) {
        rows.forEach(row => {
        rows.forEach((row) => {
          this.$refs.multipleTable.toggleRowSelection(row);
        });
      } else {
@@ -661,63 +1014,129 @@
      this.$confirm("提示:确定删除该底库人员?", {
        center: true,
        cancelButtonClass: "comfirm-class-cancle",
        confirmButtonClass: "comfirm-class-sure"
        confirmButtonClass: "comfirm-class-sure",
      })
        .then(_ => {
        .then((_) => {
          fetch(`/data/api-v/dbperson/deleteDbPersonById?id=${id}`, {
            method: "GET",
            headers: {
              "Content-Type": "application/json",
              Authorization: token
            }
              Authorization: token,
            },
          })
            .then(res => {
            .then((res) => {
              return res.json();
            })
            .then(data => {
              // console.log(data.data);
            .then((data) => {
              if (data.success) {
                this.$notify({
                  type: "success",
                  message: "该人员删除成功!"
                  message: "该人员删除成功!",
                });
              }
              this.getPersonList();
            })
            .catch(err => {
            .catch((err) => {
              console.log(err);
            });
        })
        .catch(_ => { });
        .catch((_) => {});
    },
    sayHello() {
      console.log("hello");
    },
    getUploadResult(result) {
      // console.log(result, "上传的返回");
      this.uploadResult = result.data;
      this.dialogVisible = true;
      this.getPersonList();
    },
    async setEnable(item) {
      let res = await updateDbTableStatus({
        id: item.id,
        enable: item.enable,
      });
      if (res.success) {
        this.$notify({
          type: "success",
          message: "底库成功变更生效状态!",
        });
      } else {
        this.$notify({
          type: "error",
          message: "底库变更生效状态失败!",
        });
      }
    },
    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;
    },
    edit() {
      this.$emit("changeShow", this.baseObject, this.syncType);
    },
    deleteBase() {
      debugger;
      let id = this.baseObject.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.$emit("onDelete");
          })
          .catch((err) => {
            this.$notify({
              type: "error",
              message: err,
            });
          });
      });
    },
    async getPersonList() {
      // console.log("执行了刷新函数", this.BaseManageData.syncTables[0]);
      if (this.baseObject.id && this.baseObject.id !== undefined) {
        // console.log("底库id", this.baseObject.id);
        this.BaseManageData.tableId = this.baseObject.id;
        // this.BaseManageData.queryPersonList();
        this.setLoadSearch(this.BaseManageData.queryPersonList())
        this.setLoadSearch(this.BaseManageData.queryPersonList());
      }
    },
    changeDialog(data) {
      data.erFileList.map((item, index) => {
        this.$notify({
          type: "error",
          message: item.errorMsg.message
          message: item.errorMsg.message,
        });
      });
    },
    handleClose() {
      //this.getPersonList();
      this.dialogFormVisible = false;
    },
    handleSelectionChange(val) {
@@ -738,24 +1157,24 @@
      this.dialogFormVisible = true;
    },
    async submit() {
      this.$refs["formForEdit"].validate(async valid => {
      this.$refs["formForEdit"].validate(async (valid) => {
        // console.log("通过验证", valid);
        if (valid) {
          let { ...json } = this.form;
          delete (json["compareScore"])
          delete json["compareScore"];
          // console.log("修改的参数:", json);
          let res = await updateBasePerson(json);
          // console.log("保存了", res);
          if (res.success) {
            this.$notify({
              type: "success",
              message: "人员修改成功!"
              message: "人员修改成功!",
            });
            this.dialogFormVisible = false;
          } else {
            this.$notify({
              type: "error",
              message: "人员修改失败,请重试!!"
              message: "人员修改失败,请重试!!",
            });
          }
        } else {
@@ -768,7 +1187,7 @@
        title: "Confirm",
        content: "Bla bla ...",
        okText: "确认",
        cancelText: "取消"
        cancelText: "取消",
      });
    },
    async enable(item) {
@@ -782,17 +1201,17 @@
        phoneNum: item.phoneNum,
        monitorLevel: item.monitorLevel,
        personPicUrl: item.personPicUrl,
        reserved: item.reserved
        reserved: item.reserved,
      });
      if (res.success === true) {
        this.$notify({
          type: "success",
          message: "底库人员成功变更生效状态!"
          message: "底库人员成功变更生效状态!",
        });
      } else {
        this.$notify({
          type: "error",
          message: "底库人员变更生效状态失败!"
          message: "底库人员变更生效状态失败!",
        });
      }
    },
@@ -804,9 +1223,9 @@
    },
    haveScore(row) {
      if (row.compareScore && row.compareScore !== "") {
        return true
        return true;
      } else {
        return false
        return false;
      }
    },
    async searchImgList(faceUrl, threshold) {
@@ -818,7 +1237,7 @@
        faceUrl: faceUrl,
        threshold: threshold,
        orderType: this.orderType,
        orderName: this.orderName
        orderName: this.orderName,
      };
      let res = await getPersonByPhoto(json);
      // console.log("列表查询", json);
@@ -826,7 +1245,7 @@
      this.total = res.data.total;
      this.compare = true;
    },
    updateThreshold() { },
    updateThreshold() {},
    async updateFace(param) {
      const fd = new FormData();
      fd.append("file", param.file);
@@ -836,9 +1255,11 @@
        method: "post",
        url: `/data/api-v/dbperson/updateFace`,
        headers: {
          'Authorization': sessionStorage.getItem('loginedInfo') && JSON.parse(sessionStorage.getItem('loginedInfo')).access_token
          Authorization:
            sessionStorage.getItem("loginedInfo") &&
            JSON.parse(sessionStorage.getItem("loginedInfo")).access_token,
        },
        data: fd
        data: fd,
      });
      if (res.data.success) {
        this.form.personPicUrl = res.data.data.personPicUrl;
@@ -856,14 +1277,14 @@
      if (this.selectedRowKeys.length === 0) {
        this.$notify({
          type: "warning",
          message: "请选择要删除的人员"
          message: "请选择要删除的人员",
        });
      } else {
        this.$confirm("提示:确定删除该底库选中人员?", {
          center: true,
          cancelButtonClass: "comfirm-class-cancle",
          confirmButtonClass: "comfirm-class-sure"
        }).then(async _ => {
          confirmButtonClass: "comfirm-class-sure",
        }).then(async (_) => {
          let ids = [];
          this.selectedRowKeys.map((item, index) => {
            ids.push(item.id);
@@ -874,13 +1295,13 @@
          if (res.success) {
            this.$notify({
              type: "success",
              message: "删除成功!"
              message: "删除成功!",
            });
            this.getPersonList();
          } else {
            this.$notify({
              type: "error",
              message: "删除失败!"
              message: "删除失败!",
            });
          }
        });
@@ -912,25 +1333,25 @@
      if (this.BaseManageData.selectBlacks.length > 0) {
        for (let i = 0; i < this.BaseManageData.whiteList.length; i++) {
          //this.VideoPhotoData.whiteList[i].disabled = true
          this.$set(this.BaseManageData.whiteList[i], 'disabled', true)
          this.$set(this.BaseManageData.whiteList[i], "disabled", true);
        }
      }
      if (this.BaseManageData.selectBlacks.length == 0) {
        for (let i = 0; i < this.BaseManageData.whiteList.length; i++) {
          //this.VideoPhotoData.whiteList[i].disabled = false
          this.$set(this.BaseManageData.whiteList[i], 'disabled', false)
          this.$set(this.BaseManageData.whiteList[i], "disabled", false);
        }
      }
      if (this.BaseManageData.selectWhites.length > 0) {
        for (let i = 0; i < this.BaseManageData.blackList.length; i++) {
          // this.VideoPhotoData.blackList[i].disabled = true
          this.$set(this.BaseManageData.blackList[i], 'disabled', true)
          // this.VideoPhotoData.blackList[i].disabled = true
          this.$set(this.BaseManageData.blackList[i], "disabled", true);
        }
      }
      if (this.BaseManageData.selectWhites.length == 0) {
        for (let i = 0; i < this.BaseManageData.blackList.length; i++) {
          //this.VideoPhotoData.blackList[i].disabled = false
          this.$set(this.BaseManageData.blackList[i], 'disabled', false)
          //this.VideoPhotoData.blackList[i].disabled = false
          this.$set(this.BaseManageData.blackList[i], "disabled", false);
        }
      }
    },
@@ -949,102 +1370,117 @@
    // },
    tosearch(item) {
      //let captureId = item.id == "" ? item.baseInfo[0].targetId : item.id
      let captureId = item.id == "" ? item.personId : item.id
      let imgUrl = item.personPicUrl ? item.personPicUrl : item.personPicUrl
      let captureId = item.id == "" ? item.personId : item.id;
      let imgUrl = item.personPicUrl ? item.personPicUrl : item.personPicUrl;
      let compType = 0;
      let message = 'toSearch?showType=findByPic&targetId=' + captureId + '&picSmUrl=' + imgUrl + '&compType=' + compType;
      window.parent.postMessage({
        msg: message
      }, "*")
      let message =
        "toSearch?showType=findByPic&targetId=" +
        captureId +
        "&picSmUrl=" +
        imgUrl +
        "&compType=" +
        compType;
      window.parent.postMessage(
        {
          msg: message,
        },
        "*"
      );
    },
    copyClick(row) {
      this.BaseManageData.personId = row.id
      this.copyVisiabled = true
      this.BaseManageData.personId = row.id;
      this.copyVisiabled = true;
    },
    moveClick(row) {
      this.BaseManageData.personId = row.id
      this.moveVisiabled = true
      this.BaseManageData.personId = row.id;
      this.moveVisiabled = true;
    },
    copyClose() {
      this.copyVisiabled = false
      this.BaseManageData.personId = ""
      this.BaseManageData.selectBlacks = []
      this.BaseManageData.selectWhites = []
      this.copyVisiabled = false;
      this.BaseManageData.personId = "";
      this.BaseManageData.selectBlacks = [];
      this.BaseManageData.selectWhites = [];
    },
    moveClose() {
      this.moveVisiabled = false
      this.BaseManageData.personId = ""
      this.BaseManageData.selectBlacks = []
      this.BaseManageData.selectWhites = []
      this.moveVisiabled = false;
      this.BaseManageData.personId = "";
      this.BaseManageData.selectBlacks = [];
      this.BaseManageData.selectWhites = [];
    },
    copySubmit() {
      if (this.BaseManageData.selectBlacks.length === 0 && this.BaseManageData.selectWhites.length === 0) {
      if (
        this.BaseManageData.selectBlacks.length === 0 &&
        this.BaseManageData.selectWhites.length === 0
      ) {
        this.$notify({
          title: "注意",
          message: "请选择要复制到的库",
          type: "warning"
        })
        return
          type: "warning",
        });
        return;
      }
      var resp = this.BaseManageData.copyTo()
      resp.then(data => {
      var resp = this.BaseManageData.copyTo();
      resp.then((data) => {
        if (data.success) {
          this.$notify({
            title: "成功",
            message: data.data,
            type: "success"
          })
            type: "success",
          });
        } else {
          this.$notify({
            title: "失败",
            message: data.data,
            type: "error"
          })
            type: "error",
          });
        }
      })
      this.copyVisiabled = false
      this.BaseManageData.personId = ""
      this.BaseManageData.selectBlacks = []
      this.BaseManageData.selectWhites = []
      });
      this.copyVisiabled = false;
      this.BaseManageData.personId = "";
      this.BaseManageData.selectBlacks = [];
      this.BaseManageData.selectWhites = [];
    },
    moveSubmit() {
      if (this.BaseManageData.selectBlacks.length === 0 && this.BaseManageData.selectWhites.length === 0) {
      if (
        this.BaseManageData.selectBlacks.length === 0 &&
        this.BaseManageData.selectWhites.length === 0
      ) {
        this.$notify({
          title: "注意",
          message: "请选择要移动到的库",
          type: "warning"
        })
        return
          type: "warning",
        });
        return;
      }
      var resp = this.BaseManageData.moveTo()
      resp.then(data => {
      var resp = this.BaseManageData.moveTo();
      resp.then((data) => {
        if (data.success) {
          this.$notify({
            title: "成功",
            message: data.data,
            type: "success"
          })
            type: "success",
          });
        } else {
          this.$notify({
            title: "失败",
            message: data.data,
            type: "error"
          })
            type: "error",
          });
        }
        this.moveVisiabled = false
        this.BaseManageData.personId = ""
        this.BaseManageData.selectBlacks = []
        this.BaseManageData.selectWhites = []
        this.BaseManageData.queryPersonList()
      })
        this.moveVisiabled = false;
        this.BaseManageData.personId = "";
        this.BaseManageData.selectBlacks = [];
        this.BaseManageData.selectWhites = [];
        this.BaseManageData.queryPersonList();
      });
    },
    setLoadSearch(fn) {
      this.AuthData.setLoading("multipleTable", this);
      fn.then(_ => {
      fn.then((_) => {
        this.AuthData.closeLoad();
      })
    }
      });
    },
  },
  mounted() {
    this.getPersonList();
@@ -1077,36 +1513,32 @@
        this.BaseManageData.cleanData();
        this.getPersonList();
      },
      deep: true
      deep: true,
    },
    "BaseManageData.selectBlacks": function (value) {
      this.blackAngWhite()
      this.blackAngWhite();
    },
    "BaseManageData.selectWhites": function (value) {
      this.blackAngWhite()
      this.blackAngWhite();
    },
  },
  components: {
    // httpImg,
    Upload,
    UploadBtn,
    fTemplate,
    UploadIcon
    UploadIcon,
  },
  props: {
    baseObject: {
      default: () => { },
      type: Object
    }
  }
      default: () => {},
      type: Object,
    },
    syncType: {
      type: String,
    },
  },
};
</script>
<style lang="scss">
.iconStyle1 {
  font-size: 16px;
  margin-left: 8px;
  cursor: pointer;
  color: #303133;
}
.activeRow {
  background: rgb(245, 247, 250);
}
@@ -1146,15 +1578,87 @@
  display: none;
}
.table-parent {
  // position: relative;
  margin-left: 5px;
  height: 90%;
  height: 100%;
  overflow: visible !important;
  .base-tip {
    text-align: left;
    font-size: 14px;
    color: #000000;
    background: #ffffff;
    border-radius: 8px;
    box-shadow: 0px 0px 6px 1px rgb(143 159 191 / 15%);
    height: 70px;
    line-height: 70px;
    color: rgb(102, 102, 102);
    padding: 0 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    .ku-name {
      font-weight: bold;
      font-size: 16px;
      line-height: 22px;
      color: #5f5f5f;
      margin-right: 10px;
    }
    .right-btns {
      display: flex;
      align-items: center;
      cursor: pointer;
      .el-switch__core {
        height: 26px;
        border-radius: 18px;
      }
      .el-switch__core:after {
        width: 22px;
        height: 22px;
      }
      .el-switch.is-checked .el-switch__core::after {
        margin-left: -22px;
      }
      .iconshanchuku-09 {
        color: #fe6d68;
        margin-right: 10px;
      }
      .iconshanchuku-09:hover {
        background: #fe6d68;
        border: 1px solid #fe6d68;
        color: #fff;
      }
      .iconbianjiku-09 {
        color: rgb(102, 102, 102);
      }
      .iconbianjiku-09:hover {
        border: 1px solid #4e94ff;
        background: #4e94ff;
        color: #fff;
      }
    }
    .ok-time {
      color: #999999;
      font-size: 12px;
      line-height: 17px;
      margin-left: 20px;
    }
    .list {
      border-radius: 9px;
      height: 18px;
      width: 52px;
      display: inline-block;
      line-height: 18px;
      font-weight: bold;
      font-size: 12px;
      text-align: center;
    }
    .white-list {
      background: rgba(36, 178, 156, 0.3);
      color: #24b29c;
    }
    .black-list {
      background: rgba(255, 61, 59, 0.3);
      color: #ff3d3b;
    }
  }
}
@@ -1166,13 +1670,124 @@
.border-tabl {
  border: 1px solid #ebeef5;
  border-bottom: none;
  // border-bottom: none;
  display: flex;
  flex-direction: column;
  border-radius: 8px;
  background: #ffffff;
  padding: 10px;
  margin-top: 8px;
  box-shadow: 0px 0px 6px 1px rgb(143 159 191 / 15%);
  .head-search {
    font-size: 14px;
    line-height: 20px;
    color: #5f5f5f;
    display: flex;
    margin: 15px 10px 20px 10px;
    justify-content: space-between;
    align-items: center;
    .right-group {
      display: flex;
      .el-input--small {
        width: 320px;
      }
      .iconpiliangshanchu-09 {
        color: #fe6d68;
        margin-right: 10px;
        margin-left: 20px;
      }
      .iconpiliangshanchu-09:hover {
        background: #fe6d68;
        border: 1px solid #fe6d68;
        color: #fff;
      }
      .el-button--small {
        padding: 8px 45px;
        font-size: 14px;
        background: #4e94ff !important;
        border-radius: 0px 18px 18px 0px;
        border-color: #4e94ff !important;
      }
      .el-input__suffix {
        top: 6px;
        right: 10px;
      }
      .el-input--small .el-input__inner {
        height: 32px;
        line-height: 33px;
        border: 1px solid #d4d6d9;
        border-radius: 18px 0px 0px 18px;
        width: 320px;
        .el-input__inner::placeholder {
          font-size: 14px;
          line-height: 20px;
          color: #bbbbbb;
        }
      }
      // .compearValue
      .compearValue {
        .el-input-number__decrease,
        .el-input-number__increase {
          background-color: transparent;
          border: none;
          width: fit-content;
          margin-right: 10px;
          margin: 2px 10px 2px 0;
        }
        .el-input-number--mini {
          width: 72px;
        }
      }
      .upload-img-box {
      }
      .uploadIconBox .left-section1 .el-input__inner {
        height: 32px;
        line-height: 32px;
        border: 1px solid #d4d6d9;
        width: inherit;
        border-radius: 16px;
        padding: 0;
        padding-left: 10px;
        text-align: left;
        font-size: 14px;
        color: #5f5f5f;
      }
    }
    .nums {
      font-weight: bold;
      font-size: 15px;
    }
  }
  ::-webkit-scrollbar-thumb {
    border-radius: 6px;
    background-color: #dfdfdf;
  }
  ::-webkit-scrollbar {
    background-color: transparent;
  }
  ::-webkit-scrollbar-track {
    background-color: transparent;
    box-shadow: none;
  }
}
.el-dialog {
  min-width: 515px;
  .el-button--info {
    color: #222;
  }
}
.iconfont-wrap {
  border: 1px solid #d3d5d9;
  box-sizing: border-box;
  border-radius: 8px;
  display: inline-block;
  width: 32px;
  height: 32px;
  cursor: pointer;
  line-height: 32px;
  text-align: center;
  font-size: 23px;
  transition: all 0.2s;
}
.el-dialog__header {
  padding: 20px 0 10px;
@@ -1253,7 +1868,6 @@
      width: 15%;
      margin-top: 10px;
      float: left;
      //font-family: PingFangSC-Medium;
      font-size: 14px;
      font-weight: 600;
    }