<template> 
 | 
  <view class="visit"> 
 | 
    <!-- <view class="head">拜访信息</view> --> 
 | 
    <view class="list"> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text>*</text> 
 | 
          <text>被访人</text> 
 | 
        </view> 
 | 
        <view class="list_item_content" @click="showName = true"> 
 | 
          <text :style="{ color: form1.receptMemberName ? '#000000' : '' }">{{ 
 | 
            form1.receptMemberName ? form1.receptMemberName : "请选择" 
 | 
          }}</text> 
 | 
          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> 
 | 
        </view> 
 | 
      </view> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text>*</text> 
 | 
          <text>入园时间</text> 
 | 
        </view> 
 | 
        <view class="list_item_content" @click="show4 = true"> 
 | 
          <text :style="{ color: form1.starttime ? '#000000' : '' }">{{ 
 | 
            form1.starttime ? form1.starttime : "请选择" 
 | 
          }}</text> 
 | 
          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> 
 | 
        </view> 
 | 
      </view> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text>*</text> 
 | 
          <text>离园时间</text> 
 | 
        </view> 
 | 
        <view class="list_item_content" @click="openLC"> 
 | 
          <text :style="{ color: form1.endtime ? '#000000' : '' }">{{ 
 | 
            form1.endtime ? form1.endtime : "请选择" 
 | 
          }}</text> 
 | 
          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> 
 | 
        </view> 
 | 
      </view> 
 | 
      <!-- <view class="list_item" v-if="accessControl === '1'" @click="show = true"> 
 | 
                <view class="list_item_label"> 
 | 
                    <text>访问门禁</text> 
 | 
                    <text>*</text> 
 | 
                </view> 
 | 
                <view class="list_item_content"> 
 | 
                    <text :style="{color: form1.doorSelectName ? '#000000' : ''}">{{form1.doorSelectName ? form1.doorSelectName : '请选择'}}</text> 
 | 
                    <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> 
 | 
                </view> 
 | 
            </view> --> 
 | 
      <div class="empty"></div> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text>*</text> 
 | 
          <text>拜访事由</text> 
 | 
        </view> 
 | 
        <view class="list_item_content" @click="showReason = true"> 
 | 
          <text :style="{ color: form1.reason ? '#000000' : '' }">{{ 
 | 
            form1.reason ? form1.reason : "请选择拜访事由" 
 | 
          }}</text> 
 | 
          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> 
 | 
        </view> 
 | 
      </view> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text></text> 
 | 
          <text>是否施工作业</text> 
 | 
        </view> 
 | 
        <view class="list_item_content"> 
 | 
          <switch 
 | 
            color="#4e99a9" 
 | 
            style="transform: scale(0.8)" 
 | 
            @change="constructionChange" 
 | 
          /> 
 | 
        </view> 
 | 
      </view> 
 | 
      <view v-if="form1.type == '1'" class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text></text> 
 | 
          <text>施工内容</text> 
 | 
          <!-- <text>*</text> --> 
 | 
        </view> 
 | 
        <view class="list_item_content"> 
 | 
          <input 
 | 
            type="text" 
 | 
            v-model="form1.constructionReason" 
 | 
            placeholder="请输入施工内容" 
 | 
            placeholder-style="color: #999999;" 
 | 
          /> 
 | 
        </view> 
 | 
      </view> 
 | 
      <view class="list_item"> 
 | 
        <view class="list_item_label"> 
 | 
          <text></text> 
 | 
          <text>随行车辆</text> 
 | 
        </view> 
 | 
        <view class="list_item_content" @click="openInput(1)"> 
 | 
          <text :style="{ color: form1.carNos ? '#000000' : '' }">{{ 
 | 
            form1.carNos ? form1.carNos : "请输入车牌号码" 
 | 
          }}</text> 
 | 
          <!-- <input type="text" placeholder="请输入车牌号" v-model="form1.carNos" maxlength="8" placeholder-style="color: #999999;" /> --> 
 | 
        </view> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="footer"> 
 | 
      <view class="footer_btn" @click="onSubmit">提交</view> 
 | 
    </view> 
 | 
    <!-- 入园时间 --> 
 | 
    <u-datetime-picker 
 | 
      :show="show4" 
 | 
      :minDate="new Date().getTime()" 
 | 
      mode="datetime" 
 | 
      @cancel="show4 = false" 
 | 
      @confirm="setstarttime" 
 | 
    ></u-datetime-picker> 
 | 
    <!-- 离园时间 --> 
 | 
    <u-datetime-picker 
 | 
      v-if="form1.starttime" 
 | 
      :show="show5" 
 | 
      :minDate="formatTimeStamp(form1.starttime)" 
 | 
      :maxDate="formatTimeStamp(form1.starttime.slice(0,10) + ' 23:59')" 
 | 
      mode="datetime" 
 | 
      @cancel="show5 = false" 
 | 
      @confirm="setendtime" 
 | 
    ></u-datetime-picker> 
 | 
    <!-- 门禁 --> 
 | 
    <u-popup 
 | 
      :show="show" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      :closeable="true" 
 | 
      mode="bottom" 
 | 
      @close="closeMJ" 
 | 
    > 
 | 
      <view class="menjin"> 
 | 
        <view class="respondent-title"> 选择门禁 </view> 
 | 
        <scroll-view scroll-y class="list"> 
 | 
          <view 
 | 
            class="list_item" 
 | 
            v-for="(item, index) in columns" 
 | 
            :key="index" 
 | 
            @click="seleMJ(index)" 
 | 
          > 
 | 
            <text>{{ item.name }}</text> 
 | 
            <image 
 | 
              src="@/static/checkbox@2x.png" 
 | 
              mode="widthFix" 
 | 
              v-show="!item.active" 
 | 
            ></image> 
 | 
            <image 
 | 
              src="@/static/checkbo1x_sel@2x.png" 
 | 
              mode="widthFix" 
 | 
              v-show="item.active" 
 | 
            ></image> 
 | 
          </view> 
 | 
        </scroll-view> 
 | 
        <view class="menjin_footer"> 
 | 
          <view class="menjin_footer_item" @click="closeMJ">取消</view> 
 | 
          <view class="menjin_footer_item" @click="submitMJ">确认</view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
    <!-- 选择随行人员 --> 
 | 
    <u-popup 
 | 
      :show="show1" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      :closeable="true" 
 | 
      mode="bottom" 
 | 
      @close="show1 = false" 
 | 
    > 
 | 
      <view class="popup-content"> 
 | 
        <view class="respondent-title"> 选择随行人员 </view> 
 | 
        <view class="search-box"> 
 | 
          <view class="search-box-top"> 
 | 
            <view class="search-box-top-ipt"> 
 | 
              <image src="@/static/ic_search@2x.png" mode="widthFix"></image> 
 | 
              <input type="text" placeholder="搜索姓名/手机号" /> 
 | 
            </view> 
 | 
            <text 
 | 
              @click=" 
 | 
                show1 = false; 
 | 
                show3 = true; 
 | 
              " 
 | 
              >新增</text 
 | 
            > 
 | 
          </view> 
 | 
          <view class="search-box-total">共0条数据</view> 
 | 
        </view> 
 | 
        <scroll-view scroll-y class="list"> 
 | 
          <view class="item" v-for="(item, index) in 8" :key="index"> 
 | 
            <view class="item_a"> 
 | 
              <!-- <image src="@/static/checkbox.png" mode="widthFix" v-if="!item.active" /> --> 
 | 
              <image src="@/static/checkbox_sel@2x.png" mode="widthFix" /> 
 | 
            </view> 
 | 
            <view class="item_b"> 
 | 
              <image src="@/static/ic_mima@2x.png" mode="widthFix" /> 
 | 
            </view> 
 | 
            <view class="item_c"> 
 | 
              <text>用户名</text> 
 | 
              <text>已拉黑</text> 
 | 
            </view> 
 | 
          </view> 
 | 
        </scroll-view> 
 | 
        <view class="footer1"> 
 | 
          <view class="footer_left"> 
 | 
            <text class="footer_left_a">已选择:0人</text> 
 | 
            <text class="footer_left_b">李伟;</text> 
 | 
          </view> 
 | 
          <view class="footer_btn">确认 0/0</view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
    <!-- 车辆 --> 
 | 
    <u-popup 
 | 
      :show="show2" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      :closeable="true" 
 | 
      mode="bottom" 
 | 
      @close="show2 = false" 
 | 
    > 
 | 
      <view class="addcar"> 
 | 
        <view class="addcar_head">添加车辆</view> 
 | 
        <view class="addcar_ipt"> 
 | 
          <input type="text" v-model="carName" placeholder="请输入车牌号" /> 
 | 
        </view> 
 | 
        <view class="addcar_footer"> 
 | 
          <view class="addcar_footer_item" @click="show2 = false">取消</view> 
 | 
          <view class="addcar_footer_item t" @click="submitCart">提交</view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
    <!-- 添加随行人员 --> 
 | 
    <u-popup 
 | 
      :show="show3" 
 | 
      :round="10" 
 | 
      :safeAreaInsetBottom="true" 
 | 
      :closeable="true" 
 | 
      mode="bottom" 
 | 
      @close="show3 = false" 
 | 
    > 
 | 
      <view class="adduser"> 
 | 
        <view class="adduser_head">随行人员</view> 
 | 
        <view class="adduser_list"> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>姓名</text> 
 | 
              <text>*</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <input 
 | 
                type="text" 
 | 
                v-model="withUserList.name" 
 | 
                placeholder-style="color: #999999;font-size: 28rpx;" 
 | 
                placeholder="请输入真实姓名" 
 | 
              /> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>手机号</text> 
 | 
              <text>*</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <input 
 | 
                type="number" 
 | 
                v-model="withUserList.phone" 
 | 
                maxlength="11" 
 | 
                placeholder-style="color: #999999;font-size: 28rpx;" 
 | 
                placeholder="请输入手机号" 
 | 
              /> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>证件类型</text> 
 | 
              <text>*</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt" @click="show6 = true"> 
 | 
              <text 
 | 
                :style="{ color: withUserList.idcardTypeName ? '#000000' : '' }" 
 | 
                >{{ 
 | 
                  withUserList.idcardTypeName 
 | 
                    ? withUserList.idcardTypeName 
 | 
                    : "请选择" 
 | 
                }}</text 
 | 
              > 
 | 
              <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>证件号码</text> 
 | 
              <text>*</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <input 
 | 
                type="text" 
 | 
                v-model="withUserList.idcardNo" 
 | 
                maxlength="18" 
 | 
                placeholder-style="color: #999999;font-size: 28rpx;" 
 | 
                placeholder="请输入证件号码" 
 | 
              /> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>*</text> 
 | 
              <text>公司</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <input 
 | 
                type="text" 
 | 
                v-model="withUserList.companyName" 
 | 
                placeholder-style="color: #999999;font-size: 28rpx;" 
 | 
                placeholder="请输入公司名称" 
 | 
              /> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text></text> 
 | 
              <text>随行车辆</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt" @click="openInput(2)"> 
 | 
              <text :style="{ color: withUserList.carNos ? '#000000' : '' }">{{ 
 | 
                withUserList.carNos ? withUserList.carNos : "请输入车牌号码" 
 | 
              }}</text> 
 | 
              <!-- <input type="text" v-model="withUserList.carNos" disabled placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入车牌号" /> --> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label1"> 
 | 
              <text class="cc">人脸照片<b>*</b></text> 
 | 
              <text class="aa" 
 | 
                >1、请提供五官清晰,人脸居中的正面人脸免冠照片;</text 
 | 
              > 
 | 
              <text class="aa">2、照片无逆光、无PS、无过度美颜处理;</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <view 
 | 
                class="adduser_list_item_ipt1_upload" 
 | 
                @click="upload('faceImg')" 
 | 
                v-if="!withUserList.faceImgUrl" 
 | 
              > 
 | 
                <u-icon 
 | 
                  name="plus" 
 | 
                  color="rgb(153, 153, 153)" 
 | 
                  size="28" 
 | 
                ></u-icon> 
 | 
              </view> 
 | 
              <view 
 | 
                class="adduser_list_item_ipt1_upload" 
 | 
                @click="upload('faceImg')" 
 | 
                v-else 
 | 
              > 
 | 
                <image :src="withUserList.faceImgUrl" mode="widthFix"></image> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
          <view class="adduser_list_item"> 
 | 
            <view class="adduser_list_item_label"> 
 | 
              <text>健康证照片</text> 
 | 
              <text v-if="visit === '1'">*</text> 
 | 
            </view> 
 | 
            <view class="adduser_list_item_ipt"> 
 | 
              <view 
 | 
                class="adduser_list_item_ipt1_upload" 
 | 
                @click="upload('imgurl')" 
 | 
                v-if="!withUserList.imgurlUrl" 
 | 
              > 
 | 
                <u-icon 
 | 
                  name="plus" 
 | 
                  color="rgb(153, 153, 153)" 
 | 
                  size="28" 
 | 
                ></u-icon> 
 | 
              </view> 
 | 
              <view 
 | 
                class="adduser_list_item_ipt1_upload" 
 | 
                @click="upload('imgurl')" 
 | 
                v-else 
 | 
              > 
 | 
                <image :src="withUserList.imgurlUrl" mode="widthFix"></image> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </view> 
 | 
        <view class="adduser_footer"> 
 | 
          <view class="adduser_footer_item" @click="show3 = false">取消</view> 
 | 
          <view class="adduser_footer_item t" @click="submitUser">提交</view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-popup> 
 | 
    <u-picker 
 | 
      keyName="name" 
 | 
      :show="show6" 
 | 
      :columns="columns1" 
 | 
      @confirm="seleIdcard" 
 | 
      @cancel="show6 = false" 
 | 
    ></u-picker> 
 | 
    <u-picker 
 | 
      keyName="name" 
 | 
      :show="showName" 
 | 
      :columns="VisitPoeple" 
 | 
      @confirm="selectedName" 
 | 
      @cancel="showName = false" 
 | 
    ></u-picker> 
 | 
    <u-picker 
 | 
      keyName="title" 
 | 
      :show="showReason" 
 | 
      :columns="VisitReason" 
 | 
      @confirm="selectedReason" 
 | 
      @cancel="showReason = false" 
 | 
    ></u-picker> 
 | 
    <!-- <tly-picture-cut ref="tlyPictureCut" :pictureSrc="photoSrc" @createImg="uploadImg"></tly-picture-cut> --> 
 | 
    <keyboardInput ref="keyboard" @export="setPlate" @close="closeInput" /> 
 | 
    <qf-image-cropper 
 | 
      ref="cropper" 
 | 
      :width="280" 
 | 
      :height="280" 
 | 
      :radius="30" 
 | 
      @crop="uploadImg" 
 | 
    ></qf-image-cropper> 
 | 
  </view> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import tlyPictureCut from "@/components/tly-picture-cut/tlyPictureCut.vue" 
 | 
import keyboardInput from "@/components/keyboard-input/keyboard-input.vue" 
 | 
import QfImageCropper from '@/uni_modules/qf-image-cropper/components/qf-image-cropper/qf-image-cropper.vue' 
 | 
import { getDaysAfterDate } from '@/utils/utils.js' 
 | 
import { 
 | 
  getVisitedMember, 
 | 
  getSystemDictData, 
 | 
  getVisitedVisitReason, 
 | 
  createFk 
 | 
} from '@/api' 
 | 
export default { 
 | 
  data() { 
 | 
    return { 
 | 
      photoSrc: '', 
 | 
      type: '', 
 | 
      inputType: '', 
 | 
      showName: false, 
 | 
      show: false, 
 | 
      show1: false, 
 | 
      show2: false, 
 | 
      show3: false, 
 | 
      show4: false, 
 | 
      show5: false, 
 | 
      show6: false, 
 | 
      show7: false, 
 | 
      showReason: false, 
 | 
      fileList: [], 
 | 
      columns1: [ 
 | 
        [{ name: '身份证', id: 0 }, { name: '港澳证件', id: 1 }, { name: '护照', id: 2 }], 
 | 
      ], 
 | 
      VisitReason: [], 
 | 
      VisitPoeple: [], 
 | 
      columns: [], 
 | 
      cars: [], 
 | 
      day: null, 
 | 
      maxTime: '', 
 | 
      carName: '', 
 | 
      personnel: [], 
 | 
      userAnswerId: '', 
 | 
      form1: { 
 | 
        phone1: '', 
 | 
        receptMemberId: '', 
 | 
        receptMemberName: '', 
 | 
        starttime: '', 
 | 
        endtime: '', 
 | 
        doors: '', 
 | 
        doorSelectName: '', 
 | 
        reason: '', 
 | 
        carNos: '', 
 | 
        type: 0 
 | 
      }, 
 | 
      withUserList: { 
 | 
        name: '', 
 | 
        phone: '', 
 | 
        idcardType: '', 
 | 
        idcardTypeName: '', 
 | 
        companyName: '', 
 | 
        idcardNo: '', 
 | 
        faceImg: '', 
 | 
        faceImgUrl: '', 
 | 
        imgurl: '', 
 | 
        imgurlUrl: '' 
 | 
      }, 
 | 
      visit: '', 
 | 
      form: {}, 
 | 
      accessControl: '', 
 | 
      verify: '' 
 | 
    } 
 | 
  }, 
 | 
  components: { tlyPictureCut, keyboardInput, QfImageCropper }, 
 | 
  onLoad(options) { 
 | 
    if (options.data) { 
 | 
      this.form = JSON.parse(options.data) 
 | 
    } 
 | 
    // this.getvisit() 
 | 
    // this.getVisit1() 
 | 
    // this.getUserValid() 
 | 
    this.getUser() 
 | 
  }, 
 | 
  methods: { 
 | 
    openInput(type) { 
 | 
      this.inputType = type 
 | 
      this.$refs.keyboard.open() 
 | 
    }, 
 | 
    setPlate(e) { 
 | 
      if (this.inputType === 1) { 
 | 
        this.form1.carNos = e 
 | 
      } else if (this.inputType === 2) { 
 | 
        this.withUserList.carNos = e 
 | 
      } 
 | 
      this.$forceUpdate() 
 | 
      this.closeInput() 
 | 
    }, 
 | 
    closeInput() { 
 | 
      this.$refs.keyboard.close() 
 | 
    }, 
 | 
    constructionChange(e) { 
 | 
      console.log(e.detail.value) 
 | 
      this.form1.type = Number(e.detail.value) 
 | 
      console.log(this.form1.type) 
 | 
    }, 
 | 
    uploadImg(file) { 
 | 
      this.$refs.cropper.close() 
 | 
      uni.showLoading({ title: '上传中', mask: true }) 
 | 
      uni.uploadFile({ 
 | 
        url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`, 
 | 
        filePath: file.tempFilePath, 
 | 
        name: 'file', 
 | 
        formData: { 
 | 
          folderCode: 'MEMBER_IMG' 
 | 
        }, 
 | 
        success: (uploadFileRes) => { 
 | 
          let res = JSON.parse(uploadFileRes.data) 
 | 
          this.withUserList.faceImg = res.data.halfPath 
 | 
          this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath 
 | 
        }, 
 | 
        complete() { 
 | 
          uni.hideLoading() 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    closeMJ() { 
 | 
      this.show = false 
 | 
      this.columns.forEach(item => { 
 | 
        item.active = false 
 | 
      }) 
 | 
    }, 
 | 
    onSubmit() { 
 | 
      if (!this.form1.receptMemberId) return uni.showToast({ 
 | 
        title: '请填写有效的访问人', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.form1.starttime) return uni.showToast({ 
 | 
        title: '入园时间不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.form1.endtime) return uni.showToast({ 
 | 
        title: '离园时间不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.form1.doorSelectName && this.accessControl == 1) return uni.showToast({ 
 | 
        title: '访问门禁不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.form1.reason) return uni.showToast({ 
 | 
        title: '拜访事由不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      // this.form1.starttime = this.form1.starttime + ':00' 
 | 
      // this.form1.endtime = this.form1.endtime + ':00' 
 | 
      let data = JSON.parse(JSON.stringify(this.form1)) 
 | 
      data.starttime = data.starttime + ':00' 
 | 
      data.endtime = data.endtime + ':00' 
 | 
      createFk({ 
 | 
        ...this.form, 
 | 
        ...data, 
 | 
        openid: this.$store.state.openId, 
 | 
        withUserList: this.personnel 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          uni.navigateTo({ 
 | 
            url: `/pages/appointmentDetails/appointmentDetails?id=${res.data}` 
 | 
          }) 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    deleUser(i) { 
 | 
      this.personnel.splice(i, 1) 
 | 
    }, 
 | 
    getVisit1() { 
 | 
      // 是否需要答题 
 | 
      this.$u.api.getSystemDictData({ 
 | 
        dictCode: 'SYSTEM', 
 | 
        label: 'HEALTH_CARD' 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          this.visit = res.data.code 
 | 
        } 
 | 
      }) 
 | 
      // 起始时间时长 
 | 
      getSystemDictData({ 
 | 
        dictCode: 'VISIT_CONFIG', 
 | 
        label: 'VALIDATE_VISIT' 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          this.day = Number(res.data.code) 
 | 
          // console.log(nextDay('after', true, this.day)) 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    submitUser() { 
 | 
      if (!this.withUserList.name) return uni.showToast({ 
 | 
        title: '姓名不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.withUserList.phone) return uni.showToast({ 
 | 
        title: '手机号不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      const regExp = /^1[3456789]\d{9}$/ 
 | 
      if (!regExp.test(this.withUserList.phone)) return uni.showToast({ 
 | 
        title: '手机号格式错误', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!String(this.withUserList.idcardType)) return uni.showToast({ 
 | 
        title: '证件类型不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.withUserList.idcardNo) return uni.showToast({ 
 | 
        title: '证件号码不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (this.withUserList.idcardType === 0) { 
 | 
        const regex = /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dxX]$/ 
 | 
        if (!regex.test(this.withUserList.idcardNo)) return uni.showToast({ 
 | 
          title: '证件号码格式错误', 
 | 
          icon: 'none' 
 | 
        }) 
 | 
      } 
 | 
      if (!this.withUserList.companyName) return uni.showToast({ 
 | 
        title: '公司不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (!this.withUserList.faceImg) return uni.showToast({ 
 | 
        title: '人脸照片不能为空', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      if (this.visit === '1') { 
 | 
        if (!this.withUserList.imgurl) return uni.showToast({ 
 | 
          title: '人脸照片不能为空', 
 | 
          icon: 'none' 
 | 
        }) 
 | 
      } 
 | 
      let arr = JSON.parse(JSON.stringify(this.withUserList)) 
 | 
      this.personnel.push(arr) 
 | 
      this.show3 = false 
 | 
      this.withUserList.name = '' 
 | 
      this.withUserList.phone = '' 
 | 
      this.withUserList.idcardType = '' 
 | 
      this.withUserList.idcardTypeName = '' 
 | 
      this.withUserList.companyName = '' 
 | 
      this.withUserList.idcardNo = '' 
 | 
      this.withUserList.faceImg = '' 
 | 
      this.withUserList.faceImgUrl = '' 
 | 
      this.withUserList.imgurl = '' 
 | 
      this.withUserList.imgurlUrl = '' 
 | 
    }, 
 | 
    upload(type) { 
 | 
      this.type = type 
 | 
      if (type === 'faceImg') { 
 | 
        this.$refs.cropper.open() 
 | 
        return 
 | 
      } 
 | 
      uni.chooseImage({ 
 | 
        success: (chooseImageRes) => { 
 | 
          uni.showLoading({ title: '上传中', mask: true }) 
 | 
          for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) { 
 | 
            uni.uploadFile({ 
 | 
              url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`, 
 | 
              filePath: chooseImageRes.tempFilePaths[i], 
 | 
              name: 'file', 
 | 
              formData: { 
 | 
                folderCode: 'MEMBER_IMG' 
 | 
              }, 
 | 
              success: (uploadFileRes) => { 
 | 
                let res = JSON.parse(uploadFileRes.data) 
 | 
                if (type === 'faceImg') { 
 | 
                  this.withUserList.faceImg = res.data.halfPath 
 | 
                  this.withUserList.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath 
 | 
                } else { 
 | 
                  this.withUserList.imgurl = res.data.halfPath 
 | 
                  this.withUserList.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath 
 | 
                } 
 | 
              }, 
 | 
              complete() { 
 | 
                if (i === chooseImageRes.tempFilePaths.length - 1) { 
 | 
                  uni.hideLoading() 
 | 
                } 
 | 
              } 
 | 
            }) 
 | 
          } 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    seleIdcard(e) { 
 | 
      this.withUserList.idcardType = e.value[0].id 
 | 
      this.withUserList.idcardTypeName = e.value[0].name 
 | 
      this.show6 = false 
 | 
    }, 
 | 
    selectedName(e) { 
 | 
      this.form1.receptMemberName = e.value[0].name 
 | 
      this.form1.receptMemberId = e.value[0].id 
 | 
      this.form1.receptMemberDepartment = e.value[0].companyId 
 | 
      this.showName = false 
 | 
    }, 
 | 
    selectedReason(e) { 
 | 
      this.form1.reason = e.value[0].title 
 | 
      console.log(e.value[0].title) 
 | 
      this.showReason = false 
 | 
    }, 
 | 
    submitCart() { 
 | 
      if (!this.carName) return uni.showToast({ 
 | 
        title: '请输入车牌号码', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      this.cars.push(this.carName) 
 | 
      this.form1.carNos = this.cars.join(',') 
 | 
      this.carName = '' 
 | 
      this.show2 = false 
 | 
    }, 
 | 
    deleCars(i) { 
 | 
      this.cars.splice(i, 1) 
 | 
      this.form1.carNos = this.cars.join(',') 
 | 
    }, 
 | 
    submitMJ() { 
 | 
      let arr = [] 
 | 
      let names = [] 
 | 
      this.columns.forEach(item => { 
 | 
        if (item.active) { 
 | 
          arr.push(item.id) 
 | 
          names.push(item.name) 
 | 
        } 
 | 
      }) 
 | 
      if (arr.length === 0) return uni.showToast({ 
 | 
        title: '请选择门禁', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      this.form1.doorSelectName = names.join(',') 
 | 
      this.form1.doors = arr.join(',') 
 | 
      this.show = false 
 | 
    }, 
 | 
    seleMJ(i) { 
 | 
      this.columns.forEach((item, index) => { 
 | 
        if (index === i) { 
 | 
          item.active = !item.active 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    openLC() { 
 | 
      if (!this.form1.starttime) return uni.showToast({ 
 | 
        title: '请先选择入园时间', 
 | 
        icon: 'none' 
 | 
      }) 
 | 
      this.show5 = true 
 | 
    }, 
 | 
    setstarttime(e) { 
 | 
      this.form1.starttime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') 
 | 
      // this.maxTime = getDaysAfterDate(uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM'), this.day) 
 | 
      this.maxTime = this.form1.starttime 
 | 
      console.log(this.form1.starttime.slice(0,10)) 
 | 
      this.show4 = false 
 | 
    }, 
 | 
    setendtime(e) { 
 | 
      this.form1.endtime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM') 
 | 
      this.show5 = false 
 | 
    }, 
 | 
    formatTimeStamp(date) { 
 | 
      return Date.parse(new Date(`${date}`)) || Date.parse(new Date(`${date.replace(/-/g, '/')}`)) 
 | 
    }, 
 | 
    // 查询用户 
 | 
    getUser() { 
 | 
      getVisitedMember().then(res => { 
 | 
        this.VisitPoeple = [res.data || []] 
 | 
      }) 
 | 
      getVisitedVisitReason({}).then(res => { 
 | 
        this.VisitReason = [res.data || []] 
 | 
      }) 
 | 
    }, 
 | 
    // 被拜访人信息校验方式(0手机号单独校验 1手机号和姓名组合校验) 
 | 
    getUserValid() { 
 | 
      getSystemDictData({ 
 | 
        dictCode: 'SYSTEM', 
 | 
        label: 'BEVISITED_USER_VALID' 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          this.verify = res.data.code 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    // 获取是否需要选择门禁/门禁列表 
 | 
    getvisit() { 
 | 
      getSystemDictData({ 
 | 
        dictCode: 'SYSTEM', 
 | 
        label: 'SELECT_DOORS_VISIT_REQUIRED' 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          this.accessControl = res.data.code 
 | 
          if (res.data.code === '1') { 
 | 
            this.$u.api.deviceRoleList({ type: 1 }) 
 | 
              .then(device => { 
 | 
                if (device.code === 200) { 
 | 
                  if (device.data.length > 0) { 
 | 
                    device.data.forEach(item => { 
 | 
                      item.active = false 
 | 
                    }) 
 | 
                    this.columns = device.data 
 | 
                  } 
 | 
                } 
 | 
              }) 
 | 
          } 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    confirm(e) { 
 | 
      this.show = false 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
<style> 
 | 
page { 
 | 
  background-color: #f7f7f7 !important; 
 | 
} 
 | 
.u-upload__button { 
 | 
  margin: 0 !important; 
 | 
} 
 | 
</style> 
 | 
<style lang="scss" scoped> 
 | 
.visit { 
 | 
  width: 100%; 
 | 
  .menjin { 
 | 
    width: 100%; 
 | 
    .respondent-title { 
 | 
      width: 100%; 
 | 
      height: 100rpx; 
 | 
      line-height: 100rpx; 
 | 
      text-align: center; 
 | 
      font-size: 32rpx; 
 | 
      font-weight: 600; 
 | 
      color: #222222; 
 | 
    } 
 | 
    .list { 
 | 
      width: 100%; 
 | 
      height: 400rpx; 
 | 
      display: flex; 
 | 
      flex-direction: column; 
 | 
      .list_item { 
 | 
        width: 100%; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: space-between; 
 | 
        text { 
 | 
          font-size: 28rpx; 
 | 
          color: #000000; 
 | 
        } 
 | 
        image { 
 | 
          width: 30rpx; 
 | 
          height: 30rpx; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .menjin_footer { 
 | 
      width: 100%; 
 | 
      padding: 30rpx; 
 | 
      box-sizing: border-box; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      .menjin_footer_item { 
 | 
        flex: 1; 
 | 
        height: 80rpx; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: center; 
 | 
        border-radius: 10rpx; 
 | 
        background-color: $uni-color-primary; 
 | 
        color: #ffffff; 
 | 
        font-size: 26rpx; 
 | 
        margin-left: 30rpx; 
 | 
        &:first-child { 
 | 
          margin-left: 0 !important; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  .adduser { 
 | 
    padding: 30rpx; 
 | 
    width: 100%; 
 | 
    box-sizing: border-box; 
 | 
    .adduser_head { 
 | 
      width: 100%; 
 | 
      text-align: center; 
 | 
      font-size: 32rpx; 
 | 
      font-family: PingFangSC, PingFang SC; 
 | 
      font-weight: 600; 
 | 
      color: #222222; 
 | 
    } 
 | 
    .adduser_list { 
 | 
      width: 100%; 
 | 
      margin-top: 40rpx; 
 | 
      .adduser_list_item { 
 | 
        width: 100%; 
 | 
        padding: 24rpx 0; 
 | 
        box-sizing: border-box; 
 | 
        border-bottom: 1rpx solid #e5e5e5; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: space-between; 
 | 
        .adduser_list_item_label1 { 
 | 
          flex: 1; 
 | 
          display: flex; 
 | 
          flex-direction: column; 
 | 
          .cc { 
 | 
            font-size: 30rpx; 
 | 
            font-family: PingFangSC, PingFang SC; 
 | 
            font-weight: 400; 
 | 
            color: #222222; 
 | 
            margin-bottom: 20rpx; 
 | 
            b { 
 | 
              font-size: 30rpx; 
 | 
              font-family: PingFangSC, PingFang SC; 
 | 
              font-weight: 400; 
 | 
              color: #e0312a; 
 | 
            } 
 | 
          } 
 | 
          .aa { 
 | 
            font-size: 24rpx; 
 | 
            font-weight: 400; 
 | 
            color: #999999; 
 | 
          } 
 | 
        } 
 | 
        .adduser_list_item_label { 
 | 
          flex-shrink: 0; 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          font-family: PingFangSC, PingFang SC; 
 | 
          font-size: 30rpx; 
 | 
          text { 
 | 
            &:nth-child(1) { 
 | 
              color: #e0312a; 
 | 
            } 
 | 
            &:nth-child(2) { 
 | 
              color: #222222; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
        .adduser_list_item_ipt { 
 | 
          flex-shrink: 0; 
 | 
          text-align: right; 
 | 
          font-size: 28rpx; 
 | 
          font-family: PingFangSC, PingFang SC; 
 | 
          font-weight: 400; 
 | 
          color: #333333; 
 | 
          margin-left: 30rpx; 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          justify-content: flex-end; 
 | 
          .adduser_list_item_ipt1_upload { 
 | 
            width: 120rpx; 
 | 
            height: 120rpx; 
 | 
            background-color: #ececec; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: center; 
 | 
            overflow: hidden; 
 | 
            image { 
 | 
              width: 100%; 
 | 
              height: 100%; 
 | 
            } 
 | 
          } 
 | 
          text { 
 | 
            font-size: 28rpx; 
 | 
            font-family: PingFangSC, PingFang SC; 
 | 
            font-weight: 400; 
 | 
            color: #999999; 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .adduser_footer { 
 | 
      width: 100%; 
 | 
      margin-top: 60rpx; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      .t { 
 | 
        background: #4d99a9 !important; 
 | 
        color: #ffffff !important; 
 | 
      } 
 | 
      .adduser_footer_item { 
 | 
        width: 336rpx; 
 | 
        height: 88rpx; 
 | 
        line-height: 88rpx; 
 | 
        text-align: center; 
 | 
        border-radius: 44rpx; 
 | 
        border: 1rpx solid #4d99a9; 
 | 
        font-size: 32rpx; 
 | 
        font-family: PingFangSC, PingFang SC; 
 | 
        font-weight: 400; 
 | 
        color: #4d99a9; 
 | 
        margin-right: 18rpx; 
 | 
        &:last-child { 
 | 
          margin: 0 !important; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .addcar { 
 | 
    padding: 30rpx; 
 | 
    width: 100%; 
 | 
    box-sizing: border-box; 
 | 
    .addcar_head { 
 | 
      text-align: center; 
 | 
      font-size: 32rpx; 
 | 
      font-family: PingFangSC, PingFang SC; 
 | 
      font-weight: 600; 
 | 
      color: #222222; 
 | 
    } 
 | 
    .addcar_ipt { 
 | 
      width: 100%; 
 | 
      height: 100rpx; 
 | 
      line-height: 100rpx; 
 | 
      text-align: center; 
 | 
      background: #f7f7f7; 
 | 
      border-radius: 50rpx; 
 | 
      margin-top: 60rpx; 
 | 
      input { 
 | 
        width: 100%; 
 | 
        height: 100%; 
 | 
        font-size: 28rpx; 
 | 
        font-weight: 400; 
 | 
        color: #000000; 
 | 
        text-align: center; 
 | 
      } 
 | 
    } 
 | 
    .addcar_footer { 
 | 
      width: 100%; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      margin-top: 60rpx; 
 | 
      .t { 
 | 
        background: #4d99a9 !important; 
 | 
        color: #ffffff !important; 
 | 
      } 
 | 
      .addcar_footer_item { 
 | 
        flex: 1; 
 | 
        height: 88rpx; 
 | 
        line-height: 88rpx; 
 | 
        font-size: 32rpx; 
 | 
        font-weight: 400; 
 | 
        color: #025eef; 
 | 
        text-align: center; 
 | 
        border-radius: 44rpx; 
 | 
        border: 1rpx solid #025eef; 
 | 
        margin-right: 18rpx; 
 | 
        &:last-child { 
 | 
          margin-right: 0 !important; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .popup-content { 
 | 
    padding: 30rpx 30rpx 0 30rpx; 
 | 
    overflow: hidden; 
 | 
    display: flex; 
 | 
    flex-flow: column; 
 | 
    .respondent-title { 
 | 
      width: 100%; 
 | 
      text-align: center; 
 | 
      font-size: 32rpx; 
 | 
      font-weight: 600; 
 | 
      color: #222222; 
 | 
    } 
 | 
    .search-box { 
 | 
      width: 100%; 
 | 
      margin-top: 40rpx; 
 | 
      .search-box-top { 
 | 
        width: 100%; 
 | 
        height: 68rpx; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        .search-box-top-ipt { 
 | 
          flex: 1; 
 | 
          height: 100%; 
 | 
          padding: 0 30rpx; 
 | 
          box-sizing: border-box; 
 | 
          background: #f7f7f7; 
 | 
          border-radius: 4rpx; 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          image { 
 | 
            width: 36rpx; 
 | 
            height: 36rpx; 
 | 
            flex-shrink: 0; 
 | 
            margin-right: 22rpx; 
 | 
          } 
 | 
          input { 
 | 
            flex: 1; 
 | 
            height: 100%; 
 | 
            font-size: 26rpx; 
 | 
            font-weight: 400; 
 | 
            color: #b2b2b2; 
 | 
          } 
 | 
        } 
 | 
        text { 
 | 
          flex-shrink: 0; 
 | 
          margin-left: 30rpx; 
 | 
          font-size: 28rpx; 
 | 
          font-weight: 400; 
 | 
          color: #025eef; 
 | 
        } 
 | 
      } 
 | 
      .search-box-total { 
 | 
        font-size: 26rpx; 
 | 
        font-weight: 400; 
 | 
        color: #666666; 
 | 
        margin-top: 24rpx; 
 | 
      } 
 | 
    } 
 | 
    .list { 
 | 
      width: 100%; 
 | 
      height: 800rpx; 
 | 
      margin-top: 30rpx; 
 | 
      padding: 0 !important; 
 | 
      .item { 
 | 
        width: 100%; 
 | 
        height: 102rpx; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        border-bottom: 1rpx solid #e5e5e5; 
 | 
        .item_a { 
 | 
          flex-shrink: 0; 
 | 
          width: 36rpx; 
 | 
          height: 36rpx; 
 | 
          margin-right: 24rpx; 
 | 
          image { 
 | 
            width: 100%; 
 | 
            height: 100%; 
 | 
          } 
 | 
        } 
 | 
        .item_b { 
 | 
          flex-shrink: 0; 
 | 
          width: 80rpx; 
 | 
          height: 80rpx; 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          justify-content: center; 
 | 
          overflow: hidden; 
 | 
          margin-right: 24rpx; 
 | 
          image { 
 | 
            width: 100%; 
 | 
            height: 100%; 
 | 
          } 
 | 
        } 
 | 
        .item_c { 
 | 
          flex: 1; 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          text { 
 | 
            &:nth-child(1) { 
 | 
              font-size: 30rpx; 
 | 
              font-family: PingFangSC, PingFang SC; 
 | 
              font-weight: 400; 
 | 
              color: #222222; 
 | 
            } 
 | 
            &:nth-child(2) { 
 | 
              font-size: 20rpx; 
 | 
              font-family: PingFangSC, PingFang SC; 
 | 
              font-weight: 400; 
 | 
              color: #999999; 
 | 
              padding: 1rpx 4rpx; 
 | 
              box-sizing: border-box; 
 | 
              background-color: #eeeeee; 
 | 
              margin-left: 12rpx; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
    .footer1 { 
 | 
      width: 100%; 
 | 
      height: 100rpx; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      padding: 14rpx 0 0 0; 
 | 
      box-sizing: border-box; 
 | 
      .footer_left { 
 | 
        flex: 1; 
 | 
        display: flex; 
 | 
        flex-direction: column; 
 | 
        .footer_left_a { 
 | 
          font-size: 26rpx; 
 | 
          font-family: PingFangSC, PingFang SC; 
 | 
          font-weight: 400; 
 | 
          color: #333333; 
 | 
        } 
 | 
        .footer_left_b { 
 | 
          font-size: 24rpx; 
 | 
          font-family: PingFangSC, PingFang SC; 
 | 
          font-weight: 400; 
 | 
          color: #999999; 
 | 
        } 
 | 
      } 
 | 
      .footer_btn { 
 | 
        flex-shrink: 0; 
 | 
        width: 216rpx; 
 | 
        height: 72rpx; 
 | 
        line-height: 72rpx; 
 | 
        text-align: center; 
 | 
        background: #025eef; 
 | 
        border-radius: 8rpx; 
 | 
        font-size: 28rpx; 
 | 
        font-weight: 600; 
 | 
        color: #ffffff; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .head { 
 | 
    width: 100%; 
 | 
    padding: 20rpx 30rpx; 
 | 
    box-sizing: border-box; 
 | 
    font-size: 28rpx; 
 | 
    font-weight: 400; 
 | 
    color: #666666; 
 | 
  } 
 | 
  
 | 
  .list { 
 | 
    width: 100%; 
 | 
    padding: 0 30rpx; 
 | 
    box-sizing: border-box; 
 | 
    background-color: #ffffff; 
 | 
    .empty { 
 | 
      width: 750rpx; 
 | 
      height: 20rpx; 
 | 
      background-color: #f7f7f7; 
 | 
      margin: 0 -30rpx; 
 | 
    } 
 | 
    .list_item { 
 | 
      width: 100%; 
 | 
      // min-height: 98rpx; 
 | 
      padding: 30rpx 0; 
 | 
      box-sizing: border-box; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
      border-bottom: 1rpx solid #e5e5e5; 
 | 
  
 | 
      .list_item_label { 
 | 
        flex-shrink: 0; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
  
 | 
        text { 
 | 
          &:nth-child(1) { 
 | 
            font-size: 30rpx; 
 | 
            font-weight: 400; 
 | 
            color: #e42d2d; 
 | 
          } 
 | 
  
 | 
          &:nth-child(2) { 
 | 
            font-size: 30rpx; 
 | 
            font-weight: 400; 
 | 
            color: #222222; 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .list_item_content { 
 | 
        flex: 1; 
 | 
        height: 100%; 
 | 
        margin-left: 30rpx; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: flex-end; 
 | 
  
 | 
        text { 
 | 
          font-size: 28rpx; 
 | 
          font-weight: 400; 
 | 
          color: #999999; 
 | 
          margin-right: 6rpx; 
 | 
        } 
 | 
  
 | 
        input { 
 | 
          width: 100%; 
 | 
          height: 100%; 
 | 
          text-align: right; 
 | 
          font-size: 28rpx; 
 | 
          font-weight: 400; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .cate { 
 | 
    width: 100%; 
 | 
    padding: 30rpx; 
 | 
    box-sizing: border-box; 
 | 
    background-color: #ffffff; 
 | 
    .cate_head { 
 | 
      font-size: 32rpx; 
 | 
      font-family: PingFangSC, PingFang SC; 
 | 
      font-weight: 600; 
 | 
      color: #222222; 
 | 
    } 
 | 
  
 | 
    .cate_list { 
 | 
      width: 100%; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      flex-wrap: wrap; 
 | 
      margin-top: 30rpx; 
 | 
  
 | 
      .cate_list_item { 
 | 
        height: 64rpx; 
 | 
        padding: 0 20rpx; 
 | 
        box-sizing: border-box; 
 | 
        background-color: #eeeeee; 
 | 
        border-radius: 4rpx; 
 | 
        margin-right: 20rpx; 
 | 
        margin-bottom: 20rpx; 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
  
 | 
        &:last-child { 
 | 
          margin-right: 0 !important; 
 | 
        } 
 | 
  
 | 
        text { 
 | 
          font-size: 26rpx; 
 | 
          font-family: PingFangSC, PingFang SC; 
 | 
          font-weight: 400; 
 | 
          color: #333333; 
 | 
          margin-right: 30rpx; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .cate_add { 
 | 
      width: 200rpx; 
 | 
      height: 50rpx; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
      background: rgba(2, 94, 239, 0); 
 | 
      border-radius: 25rpx; 
 | 
      border: 1rpx solid #4c99a8; 
 | 
      font-size: 22rpx; 
 | 
      font-family: PingFangSC, PingFang SC; 
 | 
      font-weight: 400; 
 | 
      margin-top: 20rpx; 
 | 
      color: #4c99a8; 
 | 
      margin: 0 auto; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .zw { 
 | 
    width: 100%; 
 | 
    height: calc(env(safe-area-inset-bottom) + 118rpx); 
 | 
  } 
 | 
  
 | 
  .footer { 
 | 
    width: 100%; 
 | 
    padding: 0 30rpx; 
 | 
    padding-bottom: env(safe-area-inset-bottom); 
 | 
    box-sizing: border-box; 
 | 
        margin-top: 80rpx; 
 | 
    // position: fixed; 
 | 
    // left: 0; 
 | 
    // bottom: 30rpx; 
 | 
  
 | 
    .footer_btn { 
 | 
      width: 100%; 
 | 
      height: 88rpx; 
 | 
      line-height: 88rpx; 
 | 
      text-align: center; 
 | 
      background: #4c99a8; 
 | 
      border-radius: 44rpx; 
 | 
      font-size: 32rpx; 
 | 
      font-weight: 600; 
 | 
      color: #ffffff; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |