ll
liukangdong
2025-02-24 b94daf4ea357eafce26f37a1f0a799d55cbfa1a4
ll
已添加1个文件
已修改15个文件
1042 ■■■■ 文件已修改
h5/pages.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/reservedDetail.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/meetingSel.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/snapshot.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/driver.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/vDangetAppr.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/applePeo.vue 238 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/apply.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/sendACar.vue 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/shinei.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/vehicle/shiwai.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/visitorReport.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorApplication/memberSel.vue 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorApplication/visitorApplication.vue 347 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages.json
@@ -496,6 +496,13 @@
            {
                "navigationBarTitleText" : "任务操作明细"
            }
        },
        {
            "path" : "pages/visitorApplication/memberSel",
            "style" :
            {
                "navigationBarTitleText" : "选择被访人"
            }
        }
    ],
    "subPackages": [
h5/pages/driver/index.vue
@@ -11,9 +11,13 @@
            <image class="banner" src="../../static/driver/wuliuche_banner@2x.png" mode="widthFix"></image>
        </view>
        <!--  -->
        <view class="title_wrap">
            <view class="name">作业任务</view>
            <view class="placeholder9">{{activeCurrent + 1}}/{{taskList.length}}</view>
        </view>
        <view v-if="taskList && taskList.length > 0" class="task_list">
            <swiper circular class="task_swiper">
                <swiper-item v-for="item in taskList" :key="item.id" @click="taskClick(item)">
            <swiper circular indicator-dots indicator-active-color="#4d99a8" indicator-color="#e0e2e7" class="task_swiper" @change="changeCur" :current="activeCurrent">
                <swiper-item v-for="item in taskList" :current='activeCurrent' :key="item.id" @click="taskClick(item)">
                    <view class="item">
                        <view class="head">
                            <view class="name">{{ item.contractNum ? '合同单' : '运输单' }}{{ item.billCode || item.contractNum }}</view>
@@ -110,6 +114,7 @@
        data() {
            return {
                taskList: [],
                activeCurrent: 0,
                driverInfo: uni.getStorageSync('driverInfo'),
            }
        },
@@ -140,6 +145,9 @@
        },
        methods: {
            changeCur(e) {
                this.activeCurrent = e.detail.current
            },
            jump(path) {
                this.$jump(path)
            },
h5/pages/driver/reservedDetail.vue
@@ -28,6 +28,7 @@
                    <image
                        v-if="info.transportImg"
                      class="avatar_wrap"
                        @click="priviewImage(info.prefixUrl + info.transportImg)"
                      :src="info.prefixUrl + info.transportImg"
                    ></image>
                </view>
@@ -136,6 +137,11 @@
        this.getDetail(option.id)
    },
  methods: {
        priviewImage(url) {
            uni.previewImage({
                urls: [url]
            })
        },
        handleCancel(){
            const { info } = this
            uni.showModal({
h5/pages/staff/meetingSel.vue
@@ -2,7 +2,7 @@
    <view class="main_app" :class="{ popupShow: isShowSelMem }">
        <view class="search_inp df_ac">
            <image class="mr12 search" src="../../static/ic_search@2x.png" mode="widthFix"></image>
            <input v-model="param.queryParam" @blur="initData()" type="text" placeholder="搜索"
            <input v-model="param.queryParam" @confirm="initData()" type="text" placeholder="搜索"
                placeholder-style="color: #999999;" />
        </view>
        <view class="member_list">
@@ -302,6 +302,9 @@
    }
    .member_list {
        height: calc( 100vh - 130rpx );
        overflow: auto;
        margin-top: 10rpx;
        .line {
            display: flex;
            align-items: center;
h5/pages/staff/snapshot.vue
@@ -120,7 +120,7 @@
        <u-picker keyName="name" :show="isShowType" closeOnClickOverlay :columns="areaType" @confirm="seletedType"
            @close="isShowType = false" @cancel="isShowType = false"></u-picker>
        <!--  -->
        <u-datetime-picker :show="isShowTime" :minDate="new Date().getTime()" mode="datetime" closeOnClickOverlay
        <u-datetime-picker :show="isShowTime" :formatter="formatter" :minDate="new Date().getTime()" mode="datetime" closeOnClickOverlay
            @cancel="isShowTime = false" @close="isShowTime = false" @confirm="seletedDate"></u-datetime-picker>
        <!--  -->
        <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
@@ -173,6 +173,24 @@
            })
        },
        methods: {
            formatter(type, value) {
                if (type === 'year') {
                    return `${value}å¹´`
                }
                if (type === 'month') {
                    return `${value}月`
                }
                if (type === 'day') {
                    return `${value}日`
                }
                if (type === 'hour') {
                    return `${value}时`
                }
                if (type === 'minute') {
                    return `${value}分`
                }
                return value
            },
            onSubmit() {
                const {
                    param,
h5/pages/staff/task/driver.vue
@@ -29,6 +29,7 @@
              <view class="label">准运证照片</view>
              <view class="value">
                    <image
                    @click="priviewImage(info.prefixUrl + info.transportImg)"
                        v-if="info.transportImg"
                      class="avatar_wrap"
                      :src="info.prefixUrl + info.transportImg"
@@ -162,6 +163,11 @@
        this.getDetail(option.id)
    },
  methods: {
        priviewImage(url) {
            uni.previewImage({
                urls: [url]
            })
        },
        getDetail(id) {
            driverApplyDetail({id}).then(res => {
                this.info = res.data
h5/pages/staff/task/index.vue
@@ -206,6 +206,7 @@
      :show="tiemShow"
      v-model="startDate"
      mode="date"
            :formatter="formatter"
      @confirm="confirmLeft"
      @cancel="tiemShow = false"
    ></u-datetime-picker>
@@ -216,6 +217,7 @@
      "
      v-model="startDate"
      mode="date"
            :formatter="formatter"
      @confirm="confirmRight"
      @cancel="tiemShow1 = false"
    ></u-datetime-picker>
@@ -279,6 +281,24 @@
        this.getHeadList()
  },
  methods: {
        formatter(type, value) {
            if (type === 'year') {
                return `${value}å¹´`
            }
            if (type === 'month') {
                return `${value}月`
            }
            if (type === 'day') {
                return `${value}日`
            }
            if (type === 'hour') {
                return `${value}时`
            }
            if (type === 'minute') {
                return `${value}分`
            }
            return value
        },
    statusClick(val) {
      this.pagination.page = 0
      this.dataList = []
h5/pages/staff/task/vDangetAppr.vue
@@ -258,17 +258,17 @@
                <view class="title">选择员工</view>
                <view class="search_inp df_ac">
                    <image class="mr12 search" src="@/static/ic_search@2x.png" mode="widthFix"></image>
                    <input v-model="transferModel.name" @blur="getMemList()" type="text" placeholder="搜索部门/人员"
                    <input v-model="transferModel.queryParam" @confirm="getMemList()" type="text" placeholder="搜索人员姓名"
                        placeholder-style="color: #999999;" />
                </view>
                <view class="member_list">
                    <view class="mt24 placeholder6">共{{ memberList.length }}条数据</view>
                    <view v-for="item in memberList" :key="item.id" class="line">
                        <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar"></image>
                        <span v-else class="img_name">{{ item.name && item.name.slice(0, 1) }}</span>
                        <image v-if="item.faceImg" :src="item.faceImg" class="avatar"></image>
                        <span v-else class="img_name">{{ item.realname && item.realname.slice(0, 1) }}</span>
                        <view class="content">
                            <view class="info">
                                <text class="name">{{ item.name }}</text>
                                <text class="name">{{ item.realname }}</text>
                                <!-- <text class="tag">tag</text> -->
                            </view>
                            <view class="depart">{{ item.companyName }}</view>
@@ -307,7 +307,7 @@
import {
    hiddenDangerDetail,
    uploadUrl,
    findHiddenAreaMemberList,
    userPagePost,
    dealHiddenDanger,
    transferHiddenDanger,
    findListFlowDanger
@@ -504,10 +504,10 @@
            this.getMemList()
        },
        getMemList() {
            findHiddenAreaMemberList({
            userPagePost({
                ...this.transferModel,
                // id: this.info.areaId,
                ...this.pagination
                querySpecial: 1, type: 2, companyType: 1,workStatus:0
            }).then(res => {
                this.memberList = res.data || []
            })
h5/pages/staff/vehicle/applePeo.vue
@@ -1,75 +1,46 @@
<template>
  <view class="main_app" :class="{ popupShow: isShowSelMem }">
    <view class="search_inp df_ac">
      <image
        class="mr12 search"
        src="@/static/ic_search@2x.png"
        mode="widthFix"
      ></image>
      <input
        v-model="param.name"
        @blur="initData()"
        type="text"
        placeholder="搜索"
        placeholder-style="color: #999999;"
      />
            <image class="mr12 search" src="@/static/ic_search@2x.png" mode="widthFix"></image>
            <input v-model="param.queryParam" @confirm="initData()" type="text" placeholder="搜索"
                placeholder-style="color: #999999;" />
    </view>
    <view class="member_list">
      <view @click="changeMem(item, index)" v-for="(item, index) in memberList" :key="item.id" class="line">
        <image
          v-if="item.faceImgFull"
          :src="item.faceImgFull"
          class="avatar"
          mode=""
        ></image>
        <view v-else class="avatar">{{ item.name.slice(0, 1) }}</view>
            <view v-for="(item, index) in memberList" :key="item.id" class="line">
                <image v-if="item.faceImg" :src="item.faceImg" class="avatar" mode=""></image>
                <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
        <view class="content">
          <view class="info">
            <text class="name">{{ item.name }}</text>
            <!-- <text class="tag">tag</text> -->
                        <text class="name">{{ item.realname }}</text>
                        <text class="tag" v-if="item.status == '1'">有会议</text>
          </view>
          <view class="depart">{{ item.companyName }}</view>
                    <view class="depart">{{ item.departmentName || item.companyName }}</view>
        </view>
        <image
          v-if="item.checked"
          src="@/static/checkbox_sel@2x.png"
          mode="widthFix"
          class="checked"
        ></image>
        <image
          v-if="!item.checked"
          src="@/static/meeting/icon/ic_choose@2x.png"
          mode="widthFix"
          class="checked"
        ></image>
                <image @click="changeMem(item, index)" v-if="item.checked" src="@/static/checkbox_sel@2x.png" mode="widthFix"
                    class="checked"></image>
                <image @click="changeMem(item, index)" v-if="!item.checked" src="@/static/meeting/icon/ic_choose@2x.png"
                    mode="widthFix" class="checked"></image>
        <text></text>
      </view>
      <view class="empty"></view>
            <view class="" style="height: 220rpx;"></view>
            <view v-if="memberList.length == 0" class="empty_wrap">
                <image src="@/static/empty.png" mode=""></image>
                <text>暂无数据</text>
            </view>
    </view>
    <!--  -->
    <view class="sub_wrap">
      <view class="sel_mem">
        <text>已选择:</text>
        <view class="members">
          <text v-for="(item, i) in selList" :key="i">{{ item.name }};</text>
                    <text v-for="(item, i) in selList" :key="i">{{ item.realname }};</text>
        </view>
        <image
          @click="openSeleter"
          class="open_icon"
          src="@/static/staff/renyuan_ic_open.png"
          mode=""
        ></image>
                <image @click="openSeleter" class="open_icon" src="@/static/staff/renyuan_ic_open.png" mode=""></image>
      </view>
      <view class="btn" @click="onSubmit">确认</view>
            <view class="btn" @click="onSubmit">确认({{ selList.length }}/{{ param.limitNum }})</view>
    </view>
    <!--  -->
    <u-popup
      :show="isShowSelMem"
      :round="12"
      mode="bottom"
      @close="closeModal"
    >
        <u-popup catchtouchmove :show="isShowSelMem" :round="12" mode="bottom" @close="closeModal">
      <view class="modal">
        <view class="modal_header">
          <text class="status">已选择:{{ selList.filter(i => i.checkedTemp).length }}人</text>
@@ -77,21 +48,14 @@
        </view>
        <view class="modal_mem_list">
                    <template v-for="(item, i) in selList">
                        <view class="line" v-if="item.checkedTemp" :key="i">
                          <image
                            :src="
                              item.faceImgFull
                                ? item.faceImgFull
                                : require('@/static/logo@2x.png')
                            "
                            class="avatar"
                            mode=""
                          ></image>
                        <view class="line" v-if="item.checkedTemp">
                            <image v-if="item.avatar" :src="item.prefixUrl + item.avatar" class="avatar" mode=""></image>
                            <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
                          <view class="content">
                            <view class="info">
                              <text class="name">{{ item.name }}</text>
                                    <text class="name">{{ item.realname }}</text>
                            </view>
                            <view class="depart">{{ item.componey }}</view>
                                <view class="depart">{{ item.departmentName }}</view>
                          </view>
                          <view class="btn" @click="handleRemove(i)">移除</view>
                        </view>
@@ -103,33 +67,42 @@
</template>
<script>
import { findTypeMemberInfo } from '@/api'
    import {
        userPagePost
    } from '@/api'
    import dayjs from 'dayjs'
export default {
  data() {
    return {
      memberList: [],
      param: {},
      selList: [],
      isShowSelMem: false,
      pagination: {
        capacity: 20,
        page: 1
                param: {
                    limitNum: ''
      },
                pagination: {
                    page: 1,
                    capacity: 40
                },
                isShowSelMem: false
    }
  },
  onLoad() {
        onLoad(option) {
            this.param = {
                limitNum: option.limitNum,
                queryParam: '',
                startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'),
                endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'),
            }
    this.initData()
  },
  onReachBottom() {
    // if(){}
  },
  mounted() {
    this.$eventBus.$on('applePeoDetail', (res) => {
                setTimeout(() => {
      res.forEach(item => {
        this.memberList.forEach(mem => {
          if (item.id === mem.id) {
            mem.checked = !mem.checked
                            if (item.id == mem.id) {
                                mem.checked = true
          }
        })
      })
@@ -137,39 +110,23 @@
      this.$nextTick(() => {
        this.$forceUpdate()
      })
                }, 500)
    })
  },
  methods: {
    initData() {
      const { param } = this
      findTypeMemberInfo({
        // model: {
        name: param.name,
        // },
        type: '2',
        companyType: 1,
      }).then(res => {
        this.memberList = res.data || []
        this.memberList.forEach(i => {
                    const index = this.selList.findIndex(ite => ite.id === i.id)
          i.checked = index > -1
        })
      })
    },
    onSubmit() {
      if (this.selList.length === 0) return uni.showToast({
        title: '请先选择人员',
        icon: 'none'
      })
      this.$eventBus.$emit('applePeo', this.selList)
      uni.navigateBack()
    },
    changeMem(item, index) {
      // this.memberList.forEach(mem => {
      //   if(item.id === mem.id){
      //     item.checked = !item.checked
      //   }
                // const { selList, param } = this
                // if (this.selList.length == param.limitNum && !item.checked) return uni.showToast({
                //   title: `该会议可容纳${param.limitNum}人`,
                //   icon: 'none'
      // })
                // item.checked = !item.checked
                // this.selList = this.memberList.filter(i => i.checked)
                // //
      item.checked = !item.checked
            const i = this.selList.findIndex(a => a.id === item.id)
            if(item.checked && i === -1){
@@ -186,22 +143,40 @@
            })
            this.$forceUpdate()
        },
        subSelMem() {
          const { memberList } = this
            this.selList = this.selList.filter(i => i.checkedTemp)
            console.log('selList', this.selList);
          memberList.forEach(ite => {
                const index = this.selList.findIndex(i => i.id === ite.id)
            ite.checked = index > -1
            initData() {
                const {
                    param,
                    pagination
                } = this
                userPagePost({
                    ...param,
                    querySpecial: 1, type: 2, companyType: 1,workStatus:0
                }).then(res => {
                    this.memberList = res.data || []
                    this.memberList.forEach(i => {
                        const index = this.selList.findIndex(ite => ite.id === i.id)
                        i.checked = index > -1
          })
          this.isShowSelMem = false
          this.$forceUpdate()
                })
        },
        closeModal() {
          this.selList.forEach(item => {
              item.checkedTemp = true
          })
          this.isShowSelMem = false
            },
            subSelMem() {
                const {
                    memberList
                } = this
                this.selList = this.selList.filter(i => i.checkedTemp)
                memberList.forEach(ite => {
                    const index = this.selList.findIndex(i => i.id === ite.id)
                    ite.checked = index > -1
                })
                this.isShowSelMem = false
                this.$forceUpdate()
        },
    handleRemove(i) {
      this.selList[i].checkedTemp = false
@@ -215,47 +190,63 @@
.modal {
  padding: 40rpx 30rpx;
  max-height: 1000rpx;
  .modal_header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 20rpx;
    .status {
      font-weight: 600;
    }
    .btn {
      color: $uni-color-primary;
    }
  }
  .modal_mem_list {
    max-height: 860rpx;
    overflow: auto;
    .line {
      display: flex;
      align-items: center;
      border-bottom: 1rpx solid #e5e5e5;
      padding: 30rpx 0;
      .avatar {
        width: 64rpx;
        height: 64rpx;
        border-radius: 50%;
        overflow: hidden;
        margin-right: 20rpx;
                    display: flex;
                    justify-content: center;
                    align-items: center;
                    background-color: $uni-color-primary;
                    color: #fff;
      }
      .content {
        flex: 1;
        .depart {
          font-size: 24rpx;
          color: #666666;
        }
        .info {
          display: flex;
          margin-bottom: 16rpx;
          .name {
            font-size: 30rpx;
          }
        }
      }
      .btn {
        width: 80rpx;
        height: 48rpx;
@@ -269,18 +260,20 @@
    }
  }
}
.sub_wrap {
  position: fixed;
  bottom: 0;
  left: 0;
  z-index: 9999;
  width: 100%;
  background-color: #fff;
        left: 0;
        width: 100%;
  box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
  padding: 30rpx 30rpx 64rpx;
        padding: 30rpx 30rpx 42rpx;
  .sel_mem {
    display: flex;
    align-items: center;
    .members {
      width: 500rpx;
      color: $uni-color-primary;
@@ -289,11 +282,13 @@
      text-overflow: ellipsis;
      margin-right: 20rpx;
    }
    .open_icon {
      width: 44rpx;
      height: 44rpx;
    }
  }
  .btn {
    width: 690rpx;
    height: 88rpx;
@@ -305,12 +300,17 @@
    margin-top: 22rpx;
  }
}
.member_list {
        height: calc( 100vh - 130rpx );
        overflow: auto;
        margin-top: 10rpx;
  .line {
    display: flex;
    align-items: center;
    border-bottom: 1rpx solid #e5e5e5;
    padding: 30rpx 0;
    .avatar {
      width: 64rpx;
      height: 64rpx;
@@ -318,18 +318,23 @@
      overflow: hidden;
      margin-right: 20rpx;
    }
    .content {
      flex: 1;
      .depart {
        font-size: 24rpx;
        color: #666666;
      }
      .info {
        display: flex;
        margin-bottom: 16rpx;
        .name {
          font-size: 30rpx;
        }
        .tag {
          font-size: 24rpx;
          border-radius: 4rpx;
@@ -337,26 +342,33 @@
          color: #f62710;
          padding: 0rpx 6rpx;
          margin-left: 8rpx;
                        display: flex;
                        align-items: center;
        }
      }
    }
    .checked {
      width: 48rpx;
    }
  }
  .empty {
    width: 100%;
    height: 280rpx;
  }
}
.search_inp {
  height: 72rpx;
  background: #f7f7f7;
  border-radius: 4rpx;
  padding-left: 16rpx;
  .search {
    width: 28rpx;
  }
  input {
    flex: 1;
    font-size: 28rpx;
h5/pages/staff/vehicle/apply.vue
@@ -93,7 +93,7 @@
            <text v-if="param.memberNames">
              <text v-for="(mem, i) in param.memberList" :key="mem.id">
                <template v-if="i < 2">
                  <text>{{ mem.name }}</text>
                  <text>{{ mem.realname }}</text>
                  <text v-if="i < 1 && param.memberList.length > 1">,</text>
                </template>
              </text>
@@ -165,7 +165,7 @@
    this.$eventBus.$on('applePeo', (res) => {
      this.$set(this.param, 'memberList', res)
      this.$set(this.param, 'memberIds', res.map(i => i.id).join(','))
      this.$set(this.param, 'memberNames', res.map(i => i.name).join(','))
      this.$set(this.param, 'memberNames', res.map(i => i.realname).join(','))
    })
  },
  onLoad(option) {
h5/pages/staff/vehicle/sendACar.vue
@@ -69,6 +69,7 @@
    <u-datetime-picker
      mode="date"
      v-model="param.queryDate"
            :formatter="formatter"
      :show="isShowDate"
      :minDate="minDate"
      closeOnClickOverlay
@@ -116,6 +117,24 @@
        }
  },
  methods: {
        formatter(type, value) {
            if (type === 'year') {
                return `${value}å¹´`
            }
            if (type === 'month') {
                return `${value}月`
            }
            if (type === 'day') {
                return `${value}日`
            }
            if (type === 'hour') {
                return `${value}时`
            }
            if (type === 'minute') {
                return `${value}分`
            }
            return value
        },
    getList() {
      const { param, pagination } = this
      pagination.page = pagination.page + 1
h5/pages/staff/vehicle/shinei.vue
@@ -46,7 +46,7 @@
        <u-picker keyName="code" :show="isShowCar" :columns="carsList" @confirm="seletedCar"
            @cancel="isShowCar = false"></u-picker>
        <!-- æ—¥æœŸ -->
        <u-datetime-picker ref="startPick" :show="isShowDate" :minDate="minDate" @confirm="confirmDate"
        <u-datetime-picker ref="startPick" :formatter="formatter" :show="isShowDate" :minDate="minDate" @confirm="confirmDate"
            @cancel="isShowDate = false" mode="date"></u-datetime-picker>
        <!-- è¯¦æƒ… -->
        <u-popup :show="isShowDetail" :round="12" mode="bottom" @close="isShowDetail = false">
@@ -132,6 +132,24 @@
            this.initData()
        },
        methods: {
            formatter(type, value) {
                if (type === 'year') {
                    return `${value}å¹´`
                }
                if (type === 'month') {
                    return `${value}月`
                }
                if (type === 'day') {
                    return `${value}日`
                }
                if (type === 'hour') {
                    return `${value}时`
                }
                if (type === 'minute') {
                    return `${value}分`
                }
                return value
            },
            onSubmit() {
                const {
                    param
h5/pages/staff/vehicle/shiwai.vue
@@ -102,6 +102,7 @@
           :show="isShowDate"
            ref="startPick"
           title="开始时间"
             :formatter="formatter"
           :minDate="minDate"
           @close="isShowDate = false"
           :closeOnClickOverlay="true"
@@ -112,6 +113,7 @@
      mode="datetime"
      :show="isShowEndDate"
      title="结束时间"
            :formatter="formatter"
      :minDate="new Date(param.startTime || null).getTime()"
      @close="endtimeClose"
      :closeOnClickOverlay="true"
@@ -144,6 +146,24 @@
    this.initData()
  },
  methods: {
        formatter(type, value) {
            if (type === 'year') {
                return `${value}å¹´`
            }
            if (type === 'month') {
                return `${value}月`
            }
            if (type === 'day') {
                return `${value}日`
            }
            if (type === 'hour') {
                return `${value}时`
            }
            if (type === 'minute') {
                return `${value}分`
            }
            return value
        },
        showDate() {
            this.isShowDate = true
            if (!this.param.startTime) {
h5/pages/staff/visitorReport.vue
@@ -138,6 +138,7 @@
      :show="show4"
      :minDate="new Date().getTime()"
      mode="datetime"
            :formatter="formatter"
      @cancel="show4 = false"
      @confirm="setinDate"
    ></u-datetime-picker>
@@ -145,6 +146,7 @@
    <u-datetime-picker
      v-if="form1.starttime"
      :show="show5"
            :formatter="formatter"
      :minDate="formatTimeStamp(form1.starttime)"
      :maxDate="formatTimeStamp(maxTime)"
      mode="datetime"
@@ -262,6 +264,24 @@
    // this.getUserValid()
  },
  methods: {
        formatter(type, value) {
            if (type === 'year') {
                return `${value}å¹´`
            }
            if (type === 'month') {
                return `${value}月`
            }
            if (type === 'day') {
                return `${value}日`
            }
            if (type === 'hour') {
                return `${value}时`
            }
            if (type === 'minute') {
                return `${value}分`
            }
            return value
        },
    openInput(type) {
      this.inputType = type
      this.$refs.keyboard.open()
h5/pages/visitorApplication/memberSel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,282 @@
<template>
  <view class="main_app">
    <view class="search_inp df_ac">
      <image
        class="mr12 search"
        src="../../static/ic_search@2x.png"
        mode="widthFix"
      ></image>
      <input
        v-model="param.name"
        @confirm="initData()"
        type="text"
        placeholder="请输入姓名进行搜索"
        placeholder-style="color: #999999;"
      />
    </view>
    <view class="member_list">
      <checkbox-group @change="changeMem">
        <view v-for="item in memberList" :key="item.id" class="line">
          <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar" ></image>
          <span v-else class="img_name">{{item.name && item.name.slice(0,1)}}</span>
          <view class="content">
            <view class="info">
              <text class="name">{{ item.name }}</text>
              <!-- <text class="tag">tag</text> -->
            </view>
            <view class="depart">{{ item.companyName }}</view>
          </view>
          <label>
            <checkbox
              :value="String(item.id)"
              class="checkbox"
            />
          </label>
          <text></text>
        </view>
      </checkbox-group>
      <view v-if="memberList.length == 0" class="empty_wrap">
          <image src="../../static/empty.png"></image>
          <text>暂无数据</text>
      </view>
    </view>
    <u-popup
      :show="isShowSelMem"
      :round="12"
      mode="bottom"
      @close="isShowSelMem = false"
    >
      <view class="modal">
        <view class="modal_header">
          <text class="status">已选择:xx人</text>
          <text class="btn" @click="isShowSelMem = false">确认</text>
        </view>
        <view class="modal_mem_list">
          <view class="line">
            <image
              src="../../static/logo@2x.png"
              class="avatar"
              mode=""
            ></image>
            <view class="content">
              <view class="info">
                <text class="name">name</text>
              </view>
              <view class="depart">xx科室</view>
            </view>
            <view class="btn">移除</view>
          </view>
        </view>
      </view>
    </u-popup>
  </view>
</template>
<script>
import { getVisitedMember } from '@/api'
export default {
  data() {
    return {
      memberList: [],
      selList: [],
      param: {},
      isShowSelMem: false
    }
  },
  onLoad(option) {
    // this.$set(this.param, 'id', option.areaId || '')
    this.initData()
  },
  methods: {
    onSubmit() {
      uni.navigateBack()
    },
    changeMem(e) {
            console.log( e.detail.value[0]);
            const id = Number(e.detail.value[0])
            const item = this.memberList.find(i => i.id === id)
      this.$eventBus.$emit('svisitorAppSel', item)
            uni.navigateBack()
    },
    initData() {
      const { param } = this
            getVisitedMember({
                ...param
            }).then(res => {
              this.memberList = res.data || []
            })
      // findHiddenAreaMemberList({
      //   name: param.name,
      //   id: param.id
      // }).then(res => {
      //   this.memberList = res.data || []
      // })
    }
  }
};
</script>
<style lang="scss">
    .main_app{
        padding-top: 30rpx;
    }
.modal {
  padding: 40rpx 30rpx;
  .modal_header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    .status {
      font-weight: 600;
    }
    .btn {
      color: $uni-color-primary;
    }
  }
  .modal_mem_list {
    .line {
      display: flex;
      align-items: center;
      border-bottom: 1rpx solid #e5e5e5;
      padding: 30rpx 0;
      .avatar {
        width: 64rpx;
        height: 64rpx;
        border-radius: 50%;
        overflow: hidden;
        margin-right: 20rpx;
      }
      .content {
        flex: 1;
        .depart {
          font-size: 24rpx;
          color: #666666;
        }
        .info {
          display: flex;
          margin-bottom: 16rpx;
          .name {
            font-size: 30rpx;
          }
        }
      }
      .btn {
        width: 80rpx;
        height: 48rpx;
        line-height: 48rpx;
        text-align: center;
        font-size: 24rpx;
        color: #333333;
        border-radius: 4rpx;
        border: 1rpx solid #999999;
      }
    }
  }
}
.sub_wrap {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
  padding: 30rpx 30rpx 64rpx;
  .sel_mem {
    display: flex;
    align-items: center;
    .members {
      width: 500rpx;
      color: $uni-color-primary;
      white-space: nowrap;
      overflow: hidden; //文本超出隐藏
      text-overflow: ellipsis;
      margin-right: 20rpx;
    }
    .open_icon {
      width: 44rpx;
      height: 44rpx;
    }
  }
  .btn {
    width: 690rpx;
    height: 88rpx;
    line-height: 88rpx;
    background: $uni-color-primary;
    border-radius: 44rpx;
    color: #fff;
    text-align: center;
    margin-top: 22rpx;
  }
}
.member_list {
    height: calc( 100vh - 130rpx );
    overflow: auto;
    margin-top: 10rpx;
  .line {
    display: flex;
    align-items: center;
    border-bottom: 1rpx solid #e5e5e5;
    padding: 30rpx 0;
    .avatar {
      width: 64rpx;
      height: 64rpx;
      border-radius: 50%;
      overflow: hidden;
      margin-right: 20rpx;
    }
        .img_name{
            width: 64rpx;
            height: 64rpx;
            line-height: 64rpx;
            text-align: center;
            border-radius: 50%;
            overflow: hidden;
            margin-right: 20rpx;
            background: $uni-color-primary;
            color: #fff;
            border: 1rpx solid $uni-color-primary;
        }
    .content {
      flex: 1;
      .depart {
        font-size: 24rpx;
        color: #666666;
      }
      .info {
        display: flex;
        margin-bottom: 16rpx;
        .name {
          font-size: 30rpx;
        }
        .tag {
          font-size: 24rpx;
          border-radius: 4rpx;
          border: 1rpx solid #f62710;
          color: #f62710;
          padding: 0rpx 6rpx;
          margin-left: 8rpx;
        }
      }
    }
  }
  .empty {
    width: 100%;
    height: 280rpx;
  }
}
.search_inp {
  height: 72rpx;
  background: #f7f7f7;
  border-radius: 4rpx;
  padding-left: 16rpx;
  .search {
    width: 28rpx;
  }
  input {
    flex: 1;
    font-size: 28rpx;
    color: #333333;
  }
}
</style>
h5/pages/visitorApplication/visitorApplication.vue
@@ -7,7 +7,7 @@
          <text>*</text>
          <text>被访人</text>
        </view>
        <view class="list_item_content" @click="showName = true">
                <view class="list_item_content" @click="selName">
          <text :style="{ color: form1.receptMemberName ? '#000000' : '' }">{{
            form1.receptMemberName ? form1.receptMemberName : "请选择"
          }}</text>
@@ -67,11 +67,7 @@
          <text>是否施工作业</text>
        </view>
        <view class="list_item_content">
          <switch
            color="#4e99a9"
            style="transform: scale(0.8)"
            @change="constructionChange"
          />
                    <switch color="#4e99a9" style="transform: scale(0.8)" @change="constructionChange" />
        </view>
      </view>
      <view v-if="form1.type == '1'" class="list_item">
@@ -81,12 +77,8 @@
          <!-- <text>*</text> -->
        </view>
        <view class="list_item_content">
          <input
            type="text"
            v-model="form1.constructionReason"
            placeholder="请输入施工内容"
            placeholder-style="color: #999999;"
          />
                    <input type="text" v-model="form1.constructionReason" placeholder="请输入施工内容"
                        placeholder-style="color: #999999;" />
        </view>
      </view>
      <view class="list_item">
@@ -106,52 +98,21 @@
      <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 :show="show4" :minDate="new Date().getTime()" mode="datetime" :formatter="formatter"
            @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-datetime-picker v-if="form1.starttime" :show="show5" :formatter="formatter"
            :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"
    >
        <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)"
          >
                    <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>
                        <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">
@@ -161,14 +122,8 @@
      </view>
    </u-popup>
    <!-- é€‰æ‹©éšè¡Œäººå‘˜ -->
    <u-popup
      :show="show1"
      :round="10"
      :safeAreaInsetBottom="true"
      :closeable="true"
      mode="bottom"
      @close="show1 = false"
    >
        <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">
@@ -177,13 +132,10 @@
              <image src="@/static/ic_search@2x.png" mode="widthFix"></image>
              <input type="text" placeholder="搜索姓名/手机号" />
            </view>
            <text
              @click="
                        <text @click="
                show1 = false;
                show3 = true;
              "
              >新增</text
            >
              ">新增</text>
          </view>
          <view class="search-box-total">共0条数据</view>
        </view>
@@ -212,14 +164,8 @@
      </view>
    </u-popup>
    <!-- è½¦è¾† -->
    <u-popup
      :show="show2"
      :round="10"
      :safeAreaInsetBottom="true"
      :closeable="true"
      mode="bottom"
      @close="show2 = false"
    >
        <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">
@@ -232,14 +178,8 @@
      </view>
    </u-popup>
    <!-- æ·»åŠ éšè¡Œäººå‘˜ -->
    <u-popup
      :show="show3"
      :round="10"
      :safeAreaInsetBottom="true"
      :closeable="true"
      mode="bottom"
      @close="show3 = false"
    >
        <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">
@@ -249,12 +189,8 @@
              <text>*</text>
            </view>
            <view class="adduser_list_item_ipt">
              <input
                type="text"
                v-model="withUserList.name"
                placeholder-style="color: #999999;font-size: 28rpx;"
                placeholder="请输入真实姓名"
              />
                            <input type="text" v-model="withUserList.name" placeholder-style="color: #999999;font-size: 28rpx;"
                                placeholder="请输入真实姓名" />
            </view>
          </view>
          <view class="adduser_list_item">
@@ -263,13 +199,8 @@
              <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="请输入手机号"
              />
                            <input type="number" v-model="withUserList.phone" maxlength="11"
                                placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入手机号" />
            </view>
          </view>
          <view class="adduser_list_item">
@@ -278,14 +209,11 @@
              <text>*</text>
            </view>
            <view class="adduser_list_item_ipt" @click="show6 = true">
              <text
                :style="{ color: withUserList.idcardTypeName ? '#000000' : '' }"
                >{{
                            <text :style="{ color: withUserList.idcardTypeName ? '#000000' : '' }">{{
                  withUserList.idcardTypeName
                    ? withUserList.idcardTypeName
                    : "请选择"
                }}</text
              >
                }}</text>
              <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
            </view>
          </view>
@@ -295,13 +223,8 @@
              <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="请输入证件号码"
              />
                            <input type="text" v-model="withUserList.idcardNo" maxlength="18"
                                placeholder-style="color: #999999;font-size: 28rpx;" placeholder="请输入证件号码" />
            </view>
          </view>
          <view class="adduser_list_item">
@@ -310,12 +233,8 @@
              <text>公司</text>
            </view>
            <view class="adduser_list_item_ipt">
              <input
                type="text"
                v-model="withUserList.companyName"
                placeholder-style="color: #999999;font-size: 28rpx;"
                placeholder="请输入公司名称"
              />
                            <input type="text" v-model="withUserList.companyName" placeholder-style="color: #999999;font-size: 28rpx;"
                                placeholder="请输入公司名称" />
            </view>
          </view>
          <view class="adduser_list_item">
@@ -333,28 +252,14 @@
          <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">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 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
              >
                            <view class="adduser_list_item_ipt1_upload" @click="upload('faceImg')" v-else>
                <image :src="withUserList.faceImgUrl" mode="widthFix"></image>
              </view>
            </view>
@@ -365,22 +270,10 @@
              <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 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
              >
                            <view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-else>
                <image :src="withUserList.imgurlUrl" mode="widthFix"></image>
              </view>
            </view>
@@ -392,36 +285,14 @@
        </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>
        <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>
        <qf-image-cropper ref="cropper" :width="280" :height="280" :radius="30" @crop="uploadImg"></qf-image-cropper>
  </view>
</template>
@@ -429,7 +300,9 @@
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 {
        getDaysAfterDate
    } from '@/utils/utils.js'
import {
  getVisitedMember,
  getSystemDictData,
@@ -454,7 +327,16 @@
      showReason: false,
      fileList: [],
      columns1: [
        [{ name: '身份证', id: 0 }, { name: '港澳证件', id: 1 }, { name: '护照', id: 2 }],
                    [{
                        name: '身份证',
                        id: 0
                    }, {
                        name: '港澳证件',
                        id: 1
                    }, {
                        name: '护照',
                        id: 2
                    }],
      ],
      VisitReason: [],
      VisitPoeple: [],
@@ -495,7 +377,11 @@
      verify: ''
    }
  },
  components: { tlyPictureCut, keyboardInput, QfImageCropper },
        components: {
            tlyPictureCut,
            keyboardInput,
            QfImageCropper
        },
  onLoad(options) {
    if (options.data) {
      this.form = JSON.parse(options.data)
@@ -505,7 +391,41 @@
    // this.getUserValid()
    this.getUser()
  },
        mounted() {
            this.$eventBus.$on('svisitorAppSel', (option) => {
                // this.$set(this.param, 'checkUserId', option.id)
                // this.$set(this.param, 'applyCheckUserId', option.id)
                // this.$set(this.param, 'checkorName', option.name)
                this.form1.receptMemberName = option.name
                this.form1.receptMemberId = option.id
                this.form1.receptMemberDepartment = option.companyName
            })
        },
  methods: {
            formatter(type, value) {
                if (type === 'year') {
                    return `${value}å¹´`
                }
                if (type === 'month') {
                    return `${value}月`
                }
                if (type === 'day') {
                    return `${value}日`
                }
                if (type === 'hour') {
                    return `${value}时`
                }
                if (type === 'minute') {
                    return `${value}分`
                }
                return value
            },
            selName() {
                uni.navigateTo({
                    url: '/pages/visitorApplication/memberSel'
                })
            },
    openInput(type) {
      this.inputType = type
      this.$refs.keyboard.open()
@@ -529,7 +449,10 @@
    },
    uploadImg(file) {
      this.$refs.cropper.close()
      uni.showLoading({ title: '上传中', mask: true })
                uni.showLoading({
                    title: '上传中',
                    mask: true
                })
      uni.uploadFile({
        url: `${this.$baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
        filePath: file.tempFilePath,
@@ -681,7 +604,10 @@
      }
      uni.chooseImage({
        success: (chooseImageRes) => {
          uni.showLoading({ title: '上传中', mask: true })
                        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`,
@@ -814,7 +740,9 @@
        if (res.code === 200) {
          this.accessControl = res.data.code
          if (res.data.code === '1') {
            this.$u.api.deviceRoleList({ type: 1 })
                            this.$u.api.deviceRoleList({
                                    type: 1
                                })
              .then(device => {
                if (device.code === 200) {
                  if (device.data.length > 0) {
@@ -839,6 +767,7 @@
page {
  background-color: #f7f7f7 !important;
}
.u-upload__button {
  margin: 0 !important;
}
@@ -846,8 +775,10 @@
<style lang="scss" scoped>
.visit {
  width: 100%;
  .menjin {
    width: 100%;
    .respondent-title {
      width: 100%;
      height: 100rpx;
@@ -857,26 +788,31 @@
      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;
@@ -884,6 +820,7 @@
      display: flex;
      align-items: center;
      justify-content: space-between;
      .menjin_footer_item {
        flex: 1;
        height: 80rpx;
@@ -895,16 +832,19 @@
        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;
@@ -913,9 +853,11 @@
      font-weight: 600;
      color: #222222;
    }
    .adduser_list {
      width: 100%;
      margin-top: 40rpx;
      .adduser_list_item {
        width: 100%;
        padding: 24rpx 0;
@@ -924,16 +866,19 @@
        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;
@@ -941,27 +886,32 @@
              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;
@@ -973,6 +923,7 @@
          display: flex;
          align-items: center;
          justify-content: flex-end;
          .adduser_list_item_ipt1_upload {
            width: 120rpx;
            height: 120rpx;
@@ -981,11 +932,13 @@
            align-items: center;
            justify-content: center;
            overflow: hidden;
            image {
              width: 100%;
              height: 100%;
            }
          }
          text {
            font-size: 28rpx;
            font-family: PingFangSC, PingFang SC;
@@ -995,16 +948,19 @@
        }
      }
    }
    .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;
@@ -1017,6 +973,7 @@
        font-weight: 400;
        color: #4d99a9;
        margin-right: 18rpx;
        &:last-child {
          margin: 0 !important;
        }
@@ -1028,6 +985,7 @@
    padding: 30rpx;
    width: 100%;
    box-sizing: border-box;
    .addcar_head {
      text-align: center;
      font-size: 32rpx;
@@ -1035,6 +993,7 @@
      font-weight: 600;
      color: #222222;
    }
    .addcar_ipt {
      width: 100%;
      height: 100rpx;
@@ -1043,6 +1002,7 @@
      background: #f7f7f7;
      border-radius: 50rpx;
      margin-top: 60rpx;
      input {
        width: 100%;
        height: 100%;
@@ -1052,16 +1012,19 @@
        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;
@@ -1073,6 +1036,7 @@
        border-radius: 44rpx;
        border: 1rpx solid #025eef;
        margin-right: 18rpx;
        &:last-child {
          margin-right: 0 !important;
        }
@@ -1085,6 +1049,7 @@
    overflow: hidden;
    display: flex;
    flex-flow: column;
    .respondent-title {
      width: 100%;
      text-align: center;
@@ -1092,14 +1057,17 @@
      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%;
@@ -1109,12 +1077,14 @@
          border-radius: 4rpx;
          display: flex;
          align-items: center;
          image {
            width: 36rpx;
            height: 36rpx;
            flex-shrink: 0;
            margin-right: 22rpx;
          }
          input {
            flex: 1;
            height: 100%;
@@ -1123,6 +1093,7 @@
            color: #b2b2b2;
          }
        }
        text {
          flex-shrink: 0;
          margin-left: 30rpx;
@@ -1131,6 +1102,7 @@
          color: #025eef;
        }
      }
      .search-box-total {
        font-size: 26rpx;
        font-weight: 400;
@@ -1138,27 +1110,32 @@
        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;
@@ -1168,15 +1145,18 @@
          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;
@@ -1184,6 +1164,7 @@
              font-weight: 400;
              color: #222222;
            }
            &:nth-child(2) {
              font-size: 20rpx;
              font-family: PingFangSC, PingFang SC;
@@ -1198,6 +1179,7 @@
        }
      }
    }
    .footer1 {
      width: 100%;
      height: 100rpx;
@@ -1206,16 +1188,19 @@
      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;
@@ -1223,6 +1208,7 @@
          color: #999999;
        }
      }
      .footer_btn {
        flex-shrink: 0;
        width: 216rpx;
@@ -1252,12 +1238,14 @@
    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;
@@ -1320,6 +1308,7 @@
    padding: 30rpx;
    box-sizing: border-box;
    background-color: #ffffff;
    .cate_head {
      font-size: 32rpx;
      font-family: PingFangSC, PingFang SC;