jiangping
2024-05-28 d154966cc9492a30c47809aa2824ba61d18e6fef
Merge remote-tracking branch 'origin/master'
已修改10个文件
已重命名1个文件
659 ■■■■■ 文件已修改
h5/api/visitor.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/applicationRecord/applicationRecord.vue 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/appointmentDetails/appointmentDetails.vue 454 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login/login.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/notice/notice.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/visitorApplication/visitorApplication.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/redirect.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/store/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitDetailVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/api/visitor.js
@@ -39,4 +39,12 @@
    method: 'post',
    data
  })
}
// è®¿å®¢è®°å½•详情
export const getVisitedDetail = (data) => {
  return http({
    url: 'visitsAdmin/cloudService/web/visitor/detail',
    method: 'get',
    data
  })
}
h5/pages/applicationRecord/applicationRecord.vue
@@ -2,41 +2,66 @@
  <view class="box">
    <scroll-view scroll-x class="box_head">
      <view class="box_head_list">
        <view class="box_head_item active">全部</view>
        <view class="box_head_item">待审核</view>
        <view class="box_head_item">审核通过</view>
        <view class="box_head_item">审核驳回</view>
        <view
          class="box_head_item"
          :class="{ active: status == '' }"
          @click="tabsClick('')"
          >全部</view
        >
        <view
          class="box_head_item"
          @click="tabsClick('0')"
          :class="{ active: status == '0' }"
          >待审核</view
        >
        <view
          class="box_head_item"
          @click="tabsClick('2')"
          :class="{ active: status == '2' }"
          >审核通过</view
        >
        <view
          class="box_head_item"
          @click="tabsClick('3')"
          :class="{ active: status == '3' }"
          >审核驳回</view
        >
      </view>
    </scroll-view>
    <view class="box_list">
      <view class="box_list_item" v-for="(item, index) in 3" :key="index">
      <view
        @click="handleDetail(item.id)"
        class="box_list_item"
        v-for="(item, index) in list"
        :key="index"
      >
        <view class="box_list_item_head">
          <text>丁恩凯的劳务入厂申请</text>
          <text class="loading">待审核</text>
          <text>{{ item.name }}的劳务入厂申请</text>
          <text class="loading">{{ statusMap[item.status] }}</text>
        </view>
        <view class="box_list_item_nr">
          <view class="box_list_item_nr_item">
            <text>被访问人:</text>
            <text>人事部-王亚蓝</text>
            <text
              >{{ item.receptMemberDepartment }}-{{
                item.receptMemberName
              }}</text
            >
          </view>
          <view class="box_list_item_nr_item">
            <text>进厂时间:</text>
            <text>12-12 09:00</text>
            <text>{{ item.starttime }}</text>
          </view>
          <view class="box_list_item_nr_item">
            <text>离厂时间:</text>
            <text>12-12 12:00</text>
          </view>
          <view class="box_list_item_nr_item">
            <text>入厂人数:</text>
            <text>10</text>
            <text>{{ item.endtime }}</text>
          </view>
          <view class="box_list_item_nr_item">
            <text>来访事由:</text>
            <text>业务来往</text>
            <text>{{ item.reason }}</text>
          </view>
          <view class="box_list_item_nr_x"></view>
          <view class="box_list_item_nr_text"> 2023-12-12 09:00提交 </view>
          <view class="box_list_item_nr_text">{{ item.createDate }} æäº¤</view>
        </view>
      </view>
    </view>
@@ -49,22 +74,62 @@
  data() {
    return {
      pagination: {
        page: 1,
        page: 0,
        capacity: 10
      },
      list: []
      list: [],
      total: 0,
      status: '',
      statusMap: {
        0: '待审核',
        1: '已提交',
        2: '审核通过',
        3: '审核不通过',
        4: '取消',
        5: '下发成功',
        6: '下发失败',
      }
    }
  },
  onLoad() {
    this.getList()
  },
  onReachBottom() {
    if (this.total > 10) {
      this.getList()
    }
  },
  methods: {
    handleDetail(id) {
      uni.navigateTo({
        url: "/pages/appointmentDetails/appointmentDetails?id=" + id
      })
    },
    tabsClick(val) {
      this.pagination.page = 0
      this.status = val
      this.getList()
    },
    getList() {
      const { pagination } = this
      const { pagination, status, list } = this
      pagination.page = pagination.page + 1
      getVisitedRecord({
        pageWrap: { ...pagination }
        ...pagination,
        model: {
          openid: this.$store.state.openId,
          status
        },
      }).then(res => {
        this.list = res.data
        if (res.data.records.length > 0) {
          if(pagination.page === 1){
            this.list = res.data.records
          }else{
            this.list = [...list, ...res.data.records]
          }
          this.total = res.data.total
        }
      })
    }
h5/pages/appointmentDetails/appointmentDetails.vue
@@ -1,233 +1,247 @@
<template>
    <view class="box">
        <view class="head_wrap head_success" v-if="info.status == 1">
            <view class="h1">访客预约审核通过</view>
            <view class="h2">您的来访申请已审核通过,请在访客机签到入厂。如遇特殊情况,可联系被访人或安保人员</view>
        </view>
        <view class="qr_wrap" v-if="info.status == 1">
            <canvas class="box_head_qrcode" canvas-id="img"></canvas>
            <view class="text">使用访客机扫码签到</view>
        </view>
        <view class="head_wrap head_padding" v-if="info.status == 2">
            <view class="h1">访客预约待审核</view>
            <view class="h2">您的预约单已提交审核,请等待被访人审核</view>
        </view>
        <view class="head_wrap head_error" v-if="info.status == 3">
            <view class="h1">访客预约审核不通过</view>
            <view class="h2">您的来访申请已被驳回,如有疑问,可联系被访人</view>
        </view>
        <view class="box_list">
            <view class="box_list_label">拜访信息</view>
            <view class="box_list_tips" v-if="info.status === 2">请注意查看出入门禁下发情况,如若下发失败需重新申请</view>
            <view class="box_list_item">
                <view class="box_list_item_label">被访人员:</view>
                <view class="box_list_item_val">{{info.visitUserName}}</view>
            </view>
            <!-- <view class="box_list_item">
  <view class="box">
    <view class="head_wrap head_success" v-if="info.status == 2">
      <view class="h1">访客预约审核通过</view>
      <view class="h2"
        >您的来访申请已审核通过,请在访客机签到入厂。如遇特殊情况,可联系被访人或安保人员</view
      >
    </view>
    <view class="qr_wrap" v-if="info.status == 2">
      <canvas class="box_head_qrcode" canvas-id="img"></canvas>
      <view class="text">使用访客机扫码签到</view>
    </view>
    <view class="head_wrap head_padding" v-if="info.status == 0">
      <view class="h1">访客预约待审核</view>
      <view class="h2">您的预约单已提交审核,请等待被访人审核</view>
    </view>
    <view class="head_wrap head_error" v-if="info.status == 3">
      <view class="h1">访客预约审核不通过</view>
      <view class="h2">您的来访申请已被驳回,如有疑问,可联系被访人</view>
    </view>
    <view class="box_list">
      <view class="box_list_label">拜访信息</view>
      <view class="box_list_tips" v-if="info.status == 6 || info.status == 3"
        >请注意查看出入门禁下发情况,如若下发失败需重新申请</view
      >
      <view class="box_list_item">
        <view class="box_list_item_label">被访人员:</view>
        <view class="box_list_item_val"
          >{{ info.visitUserCompany
          }}{{ info.visitUserName ? "-" + info.visitUserName : "" }}</view
        >
      </view>
      <!-- <view class="box_list_item">
                <view class="box_list_item_label">车牌号:</view>
                <view class="box_list_item_val">{{info.carNos}}</view>
            </view> -->
            <view class="box_list_item">
                <view class="box_list_item_label">拜访事由:</view>
                <view class="box_list_item_val">{{info.visitReason}}</view>
            </view>
            <view class="box_list_item">
                <view class="box_list_item_label">拜访时间:</view>
                <view class="box_list_item_val">{{info.visitTime}}</view>
            </view>
            <view class="box_list_item">
                <view class="box_list_item_label">访问门禁:</view>
                <view class="box_list_item_val" v-if="info.doorGroupName && info.doorGroupName.length > 0">{{info.doorGroupName.join('、')}}</view>
            </view>
            <view class="box_list_item">
                <view class="box_list_item_label">主访客:</view>
                <view class="box_list_item_val">
                    {{info.name}} {{info.phone}}
                </view>
            </view>
            <view class="box_list_item" v-for="(item, index) in info.withVisitsList" :key="index">
                <view class="box_list_item_label">随访人员{{index + 1}}:</view>
                <view class="box_list_item_val">
                    {{item.name}} {{item.phone}}
                    <view class="box_list_item_val_btn" v-if="[2,5,7,8,9].includes(item.status)">
                        <u-button text="查看二维码" size="mini" @click="seeQrCode(item)" type="primary"></u-button>
                    </view>
                </view>
            </view>
        </view>
        <u-popup :show="show" mode="center" @close="close">
            <view class="qrocde">
                <canvas class="qrcode_img" canvas-id="img1"></canvas>
            </view>
        </u-popup>
    </view>
      <view class="box_list_item">
        <view class="box_list_item_label">拜访事由:</view>
        <view class="box_list_item_val">{{ info.visitReason }}</view>
      </view>
      <view class="box_list_item">
        <view class="box_list_item_label">拜访时间:</view>
        <view class="box_list_item_val">{{ info.visitTime }}</view>
      </view>
      <view class="box_list_item">
        <view class="box_list_item_label">访客信息:</view>
        <view class="box_list_item_val">{{ info.name }} {{ info.phone }}</view>
      </view>
      <view class="box_list_item">
        <view class="box_list_item_label">施工人员:</view>
        <view class="box_list_item_val">{{ info.type == 0 ? '否' : '是'}}</view>
      </view>
            <view class="box_list_item" v-if="info.type == '1'">
        <view class="box_list_item_label">施工内容:</view>
        <view class="box_list_item_val">{{ info.constructionReason}}</view>
      </view>
      <view class="box_list_item">
        <view class="box_list_item_label">随行车辆:</view>
        <view class="box_list_item_val">{{ info.carNos }}</view>
      </view>
    </view>
    <u-popup :show="show" mode="center" @close="close">
      <view class="qrocde">
        <canvas class="qrcode_img" canvas-id="img1"></canvas>
      </view>
    </u-popup>
  </view>
</template>
<script>
    import wxcode from 'uniapp-qrcode'
    import { visitorSubDetail } from '@/api'
import wxcode from 'uniapp-qrcode'
import { getVisitedDetail } from '@/api'
    export default {
        data() {
            return {
                info: {
                    status: 1
                },
                show: false
            };
        },
        onLoad(option) {
            // this.$u.api.detail({ id: option.id })
            // visitorSubDetail({ id: option.id })
            //     .then(res => {
            //         if (res.code === 200) {
            //             this.info = res.data
            //             if (res.data.qrcode) {
            //                 this.$nextTick(() => {
            //                     wxcode.qrcode('img', res.data.qrcode, 320, 320)
            //                 })
            //             }
            //         }
            //     })
        },
        methods: {
            close() {
                this.show = false
            },
            seeQrCode(code) {
                if (code.qrcode) {
                    this.show = true
                    this.$nextTick(() => {
                        wxcode.qrcode('img1', code.qrcode, 300, 300)
                    })
                } else {
                    uni.showToast({ title: '暂无二维码', icon: 'none' })
                }
            }
        }
    }
export default {
  data() {
    return {
      info: {},
      show: false
    }
  },
  onLoad(option) {
    this.getDetail(option.id)
    // visitorSubDetail({ id: option.id })
    //     .then(res => {
    //         if (res.code === 200) {
    //             this.info = res.data
    //             if (res.data.qrcode) {
    //                 this.$nextTick(() => {
    //                     wxcode.qrcode('img', res.data.qrcode, 320, 320)
    //                 })
    //             }
    //         }
    //     })
  },
  methods: {
    close() {
      this.show = false
    },
    getDetail(id) {
      getVisitedDetail({ id }).then(res => {
        this.info = res.data
        if (res.data.qrcode) {
          this.$nextTick(() => {
            wxcode.qrcode('img', res.data.qrcode, 320, 320)
          })
        }
      })
    },
    seeQrCode(code) {
      if (code.qrcode) {
        this.show = true
        this.$nextTick(() => {
          wxcode.qrcode('img1', code.qrcode, 300, 300)
        })
      } else {
        uni.showToast({ title: '暂无二维码', icon: 'none' })
      }
    }
  }
}
</script>
<style>
    page {
        background-color: #f7f7f7;
    }
page {
  background-color: #f7f7f7;
}
</style>
<style lang="scss" scoped>
    .box {
        width: 100%;
        .qrocde {
            width: 300rpx;
            height: 300rpx;
            display: flex;
            align-items: center;
            justify-content: center;
            .qrcode_img {
                width: 100%;
                height: 100%;
            }
        }
        .qr_wrap{
            background-color: #fff;
            text-align: center;
            .box_head_qrcode {
                width: 320rpx;
                height: 320rpx;
            }
            .text{
                font-size: 30rpx;
                color: #279BAA;
                padding: 20rpx 0 30rpx;
            }
        }
        .head_wrap{
            padding: 30px;
            .h1{
                margin-bottom: 16rpx;
                font-weight: 600;
                font-size: 36rpx;
            }
            .h2{
                font-weight: 400;
                font-size: 26rpx;
            }
        }
        .head_padding{
            background: #279BAA;
            .h1{
                color: #FFFFFF;
            }
            .h2{
                color: #FFFFFF;
            }
        }
        .head_error{
            background: #FDEDED;
            .h1{
                color: #ED4545;
            }
            .h2{
                color: #333333;
            }
        }
        .head_success{
            background: #E8F4F6;
            .h1{
                color: #279BAA;
            }
            .h2{
                color: #333333;
            }
        }
        .box_list {
            width: 100%;
            margin-top: 20rpx;
            background-color: #ffffff;
            padding: 40rpx 30rpx;
            box-sizing: border-box;
            .box_list_tips {
                width: 100%;
                height: 52rpx;
                padding: 0 20rpx;
                box-sizing: border-box;
                line-height: 52rpx;
                background-color: rgba(224, 49, 42, 0.06);
                font-weight: 400;
                font-size: 24rpx;
                color: #E0312A;
                border-radius: 4rpx;
                margin: 30rpx 0;
            }
            .box_list_label {
                font-size: 32rpx;
                font-weight: 500;
                color: #222222;
            }
            .box_list_item {
                width: 100%;
                display: flex;
                align-items: center;
                margin-top: 30rpx;
                .box_list_item_label {
                    flex-shrink: 0;
                    font-size: 28rpx;
                    font-family: PingFangSC, PingFang SC;
                    font-weight: 400;
                    color: #666666;
                }
                .box_list_item_val {
                    font-size: 28rpx;
                    font-family: PingFangSC, PingFang SC;
                    font-weight: 400;
                    color: #333333;
                    display: flex;
                    align-items: center;
                    .box_list_item_val_btn {
                        width: 140rpx;
                        margin-left: 15rpx;
                    }
                }
            }
        }
    }
.box {
  width: 100%;
  .qrocde {
    width: 300rpx;
    height: 300rpx;
    display: flex;
    align-items: center;
    justify-content: center;
    .qrcode_img {
      width: 100%;
      height: 100%;
    }
  }
  .qr_wrap {
    background-color: #fff;
    text-align: center;
    .box_head_qrcode {
      width: 320rpx;
      height: 320rpx;
            margin: 20rpx auto;
    }
    .text {
      font-size: 30rpx;
      color: #279baa;
      padding: 20rpx 0 30rpx;
    }
  }
  .head_wrap {
    padding: 30px;
    .h1 {
      margin-bottom: 16rpx;
      font-weight: 600;
      font-size: 36rpx;
    }
    .h2 {
      font-weight: 400;
      font-size: 26rpx;
    }
  }
  .head_padding {
    background: #279baa;
    .h1 {
      color: #ffffff;
    }
    .h2 {
      color: #ffffff;
    }
  }
  .head_error {
    background: #fdeded;
    .h1 {
      color: #ed4545;
    }
    .h2 {
      color: #333333;
    }
  }
  .head_success {
    background: #e8f4f6;
    .h1 {
      color: #279baa;
    }
    .h2 {
      color: #333333;
    }
  }
  .box_list {
    width: 100%;
    margin-top: 20rpx;
    background-color: #ffffff;
    padding: 40rpx 30rpx;
    box-sizing: border-box;
    .box_list_tips {
      width: 100%;
      height: 52rpx;
      padding: 0 20rpx;
      box-sizing: border-box;
      line-height: 52rpx;
      background-color: rgba(224, 49, 42, 0.06);
      font-weight: 400;
      font-size: 24rpx;
      color: #e0312a;
      border-radius: 4rpx;
      margin: 30rpx 0;
    }
    .box_list_label {
      font-size: 32rpx;
      font-weight: 500;
      color: #222222;
    }
    .box_list_item {
      width: 100%;
      display: flex;
      align-items: center;
      margin-top: 30rpx;
      .box_list_item_label {
        flex-shrink: 0;
        font-size: 28rpx;
        font-family: PingFangSC, PingFang SC;
        font-weight: 400;
        color: #666666;
      }
      .box_list_item_val {
        font-size: 28rpx;
        font-family: PingFangSC, PingFang SC;
        font-weight: 400;
        color: #333333;
        display: flex;
        align-items: center;
        .box_list_item_val_btn {
          width: 140rpx;
          margin-left: 15rpx;
        }
      }
    }
  }
}
</style>
h5/pages/login/login.vue
@@ -62,14 +62,10 @@
        title: '密码不能为空',
        icon: 'none'
      })
      const appID = 'wx4d7c10bdec51942b'
      const AppSecret = '922c93596d134fedf5bd22a9354b3bfe'
      // const scope = 'snsapi_userinfo'
      let uri = encodeURIComponent('https://xiaopiqiu2.natapp1.cc')
      let authURL =
        `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect`
      window.location.href = authURL
      loginPost(form).then(res => {
      loginPost({
        ...form,
        openId: this.$store.state.openId
      }).then(res => {
        console.log('res', res);
      })
    }
h5/pages/notice/notice.vue
@@ -25,8 +25,20 @@
  },
  onLoad() {
    this.getInfo()
    if(!this.$store.state.openId){
      this.initToken()
    }
  },
  methods: {
    initToken() {
      const appID = 'wxac2a80c2144c4ee0'
      // const AppSecret = '922c93596d134fedf5bd22a9354b3bfe'
      let uri = encodeURIComponent('http://xiaopiqiu2.natapp1.cc/static/redirect.html')
      let authURL =
        `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
      window.location.href = authURL
    },
    getInfo() {
      // å…¥åœºé¡»çŸ¥è¯¦æƒ…
      getSystemDictData({
h5/pages/visitorApplication/visitorApplication.vue
@@ -83,7 +83,7 @@
            <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;" />
h5/static/redirect.html
ÎļþÃû´Ó h5/redirect.html ÐÞ¸Ä
@@ -6,7 +6,7 @@
  <script>
    var p = location.href.split("?")
    // window.location.href = 'https://dmtest.ahapp.net/hsvisit_h5/#/pages/notice/notice?' + p[1]
    window.location.href = 'https://xiaopiqiu2.natapp1.cc/#/pages/notice/notice?' + p[1]
    window.location.href = 'http://xiaopiqiu2.natapp1.cc/#/pages/notice/notice?' + p[1]
  </script>
</head>
<body>
h5/store/index.js
@@ -18,7 +18,7 @@
const store = new Vuex.Store({
    state: {
        openId: openId || '',
        openId: openId || '061kuG0006hxcS13TT200w9VIp4kuG09',
        member: member || null,
        statusbarHeight: statusbarHeight || '0',
        navHeight: navHeight || '0',
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitDetailVO.java
@@ -67,8 +67,13 @@
    @ApiModelProperty(value = "访客二维码")
    private String qrcode;
    @ApiModelProperty(value = "类型 0非施工人员访客申请 1施工人员访客申请 2访客报备", example = "1")
    private Integer type;
    @ApiModelProperty(value = "施工事由")
    private String constructionReason;
    @ApiModelProperty(value = "审批信息数据")
    @TableField(exist = false)
    private ApproveDataVO approveDateVO;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -309,33 +309,36 @@
        if (!model.getCheckUserId().equals(hiddenDanger.getEditor())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"处理人非当前人员!");
        }
        //整改前文件
        if(hiddenDanger.getStatus().equals(Constants.ONE)){
            List<Multifile> beforList = hiddenDanger.getDealBeforeFileList();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(beforList)){
                for (int i = 0; i < beforList.size(); i++) {
                    Multifile multifile = beforList.get(i);
                    multifile.setCreateDate(new Date());
                    multifile.setCreator(hiddenDanger.getEditor());
                    multifile.setIsdeleted(Constants.ZERO);
                    multifile.setObjId(hiddenDanger.getId());
                    multifile.setObjType(Constants.multifileObjType.one);
                    multifile.setSortnum(i+1);
                    multifileMapper.insert(multifile);
                }
            }
        if(!(hiddenDanger.getStatus().equals(Constants.ONE)||hiddenDanger.getStatus().equals(Constants.TWO))){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态错误!");
        }
        List<Multifile> afterList = hiddenDanger.getDealAfterFileList();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(afterList)){
            for (int i = 0; i < afterList.size(); i++) {
                Multifile multifile = afterList.get(i);
        //整改前文件
        List<Multifile> beforList = hiddenDanger.getDealBeforeFileList();
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(beforList)){
            for (int i = 0; i < beforList.size(); i++) {
                Multifile multifile = beforList.get(i);
                multifile.setCreateDate(new Date());
                multifile.setCreator(hiddenDanger.getEditor());
                multifile.setIsdeleted(Constants.ZERO);
                multifile.setObjId(hiddenDanger.getId());
                multifile.setObjType(Constants.multifileObjType.two);
                multifile.setObjType(Constants.multifileObjType.one);
                multifile.setSortnum(i+1);
                multifileMapper.insert(multifile);
            }
        }
        if(hiddenDanger.getStatus().equals(Constants.ONE)){
            List<Multifile> afterList = hiddenDanger.getDealAfterFileList();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(afterList)){
                for (int i = 0; i < afterList.size(); i++) {
                    Multifile multifile = afterList.get(i);
                    multifile.setCreateDate(new Date());
                    multifile.setCreator(hiddenDanger.getEditor());
                    multifile.setIsdeleted(Constants.ZERO);
                    multifile.setObjId(hiddenDanger.getId());
                    multifile.setObjType(Constants.multifileObjType.two);
                    multifile.setSortnum(i+1);
                    multifileMapper.insert(multifile);
                }
            }
        }
        hiddenDanger.setEditor(hiddenDanger.getLoginUserInfo().getId());
@@ -347,7 +350,7 @@
        hiddenDangerLog.setCreateDate(new Date());
        hiddenDangerLog.setCreator(hiddenDanger.getCreator());
        hiddenDangerLog.setHiddenDangerId(hiddenDanger.getId());
        hiddenDangerLog.setTitle(hiddenDanger.getStatus().equals(Constants.ONE)?"隐患处理":"隐患转交");
        hiddenDangerLog.setTitle(hiddenDanger.getStatus().equals(Constants.ONE)?"隐患处理":"隐患退回");
        hiddenDangerLog.setObjType(hiddenDanger.getStatus().equals(Constants.ONE)?Constants.FOUR:Constants.TWO);
        hiddenDangerLogMapper.insert(hiddenDangerLog);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -238,7 +238,7 @@
                    systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_PREFIX).getCode(),
                    systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_AUDIT_VISIT).getCode());
        }else if(dataSyncConfig.getVisitorDataOrigin().equals(Constants.ZERO)){
            visits.setStatus(Constants.VisitStatus.pass);
            visits.setStatus(Constants.VisitStatus.waitCheck);
            visitsMapper.updateById(visits);
            approveService.createApproveFlow(visits.getType(),visits.getId(),visits.getReceptMemberId());
        }else{
@@ -1130,7 +1130,7 @@
  
    @Override
    public PageData<Visits> findPage(PageWrap<Visits> pageWrap) {
        IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         IPage<Visits> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Visits.class);
@@ -1143,6 +1143,8 @@
        queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getType()!=null,Visits::getType,pageWrap.getModel().getType());
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
        queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
                .or().like(Visits::getPhone,pageWrap.getModel().getName()))
                .eq(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Visits::getIdcardNo,DESUtil.encrypt(Constants.EDS_PWD, pageWrap.getModel().getIdcardNo()))
@@ -1240,6 +1242,8 @@
        visitDetailVO.setName(visits.getName());
        visitDetailVO.setCompanyName(visits.getCompanyName());
        visitDetailVO.setFaceImg(visits.getFaceImg());
        visitDetailVO.setType(visits.getType());
        visitDetailVO.setConstructionReason(visits.getConstructionReason());
        visitDetailVO.setImgUrl(visits.getImgurl());
        visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
        visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +