Merge remote-tracking branch 'origin/master'
| | |
| | | data |
| | | }) |
| | | } |
| | | // 访客记å½è¯¦æ
|
| | | export const getVisitedDetail = (data) => { |
| | | return http({ |
| | | url: 'visitsAdmin/cloudService/web/visitor/detail', |
| | | method: 'get', |
| | | data |
| | | }) |
| | | } |
| | |
| | | <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> |
| | |
| | | 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 |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | <template> |
| | | <view class="box"> |
| | | <view class="head_wrap head_success" v-if="info.status == 1"> |
| | | <view class="head_wrap head_success" v-if="info.status == 2"> |
| | | <view class="h1">访客é¢çº¦å®¡æ ¸éè¿</view> |
| | | <view class="h2">æ¨çæ¥è®¿ç³è¯·å·²å®¡æ ¸éè¿ï¼è¯·å¨è®¿å®¢æºç¾å°å
¥åãå¦éç¹æ®æ
åµï¼å¯è系被访人æå®ä¿äººå</view> |
| | | <view class="h2" |
| | | >æ¨çæ¥è®¿ç³è¯·å·²å®¡æ ¸éè¿ï¼è¯·å¨è®¿å®¢æºç¾å°å
¥åãå¦éç¹æ®æ
åµï¼å¯è系被访人æå®ä¿äººå</view |
| | | > |
| | | </view> |
| | | <view class="qr_wrap" v-if="info.status == 1"> |
| | | <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 == 2"> |
| | | <view class="head_wrap head_padding" v-if="info.status == 0"> |
| | | <view class="h1">访客é¢çº¦å¾
å®¡æ ¸</view> |
| | | <view class="h2">æ¨çé¢çº¦åå·²æäº¤å®¡æ ¸ï¼è¯·çå¾
è¢«è®¿äººå®¡æ ¸</view> |
| | | </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_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.visitUserName}}</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.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 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.name}} {{info.phone}} |
| | | <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" 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 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"> |
| | |
| | | |
| | | <script> |
| | | import wxcode from 'uniapp-qrcode' |
| | | import { visitorSubDetail } from '@/api' |
| | | import { getVisitedDetail } from '@/api' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | info: { |
| | | status: 1 |
| | | }, |
| | | info: {}, |
| | | show: false |
| | | }; |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | // this.$u.api.detail({ id: option.id }) |
| | | this.getDetail(option.id) |
| | | // visitorSubDetail({ id: option.id }) |
| | | // .then(res => { |
| | | // if (res.code === 200) { |
| | |
| | | // } |
| | | // } |
| | | // }) |
| | | |
| | | }, |
| | | 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) { |
| | |
| | | .box_head_qrcode { |
| | | width: 320rpx; |
| | | height: 320rpx; |
| | | margin: 20rpx auto; |
| | | } |
| | | .text{ |
| | | font-size: 30rpx; |
| | | color: #279BAA; |
| | | color: #279baa; |
| | | padding: 20rpx 0 30rpx; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | .head_padding{ |
| | | background: #279BAA; |
| | | background: #279baa; |
| | | .h1{ |
| | | color: #FFFFFF; |
| | | color: #ffffff; |
| | | } |
| | | .h2{ |
| | | color: #FFFFFF; |
| | | color: #ffffff; |
| | | } |
| | | } |
| | | .head_error{ |
| | | background: #FDEDED; |
| | | background: #fdeded; |
| | | .h1{ |
| | | color: #ED4545; |
| | | color: #ed4545; |
| | | } |
| | | .h2{ |
| | | color: #333333; |
| | | } |
| | | } |
| | | .head_success{ |
| | | background: #E8F4F6; |
| | | background: #e8f4f6; |
| | | .h1{ |
| | | color: #279BAA; |
| | | color: #279baa; |
| | | } |
| | | .h2{ |
| | | color: #333333; |
| | |
| | | background-color: rgba(224, 49, 42, 0.06); |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #E0312A; |
| | | color: #e0312a; |
| | | border-radius: 4rpx; |
| | | margin: 30rpx 0; |
| | | } |
| | |
| | | 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); |
| | | }) |
| | | } |
| | |
| | | }, |
| | | 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({ |
| | |
| | | <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/redirect.html ÐÞ¸Ä |
| | |
| | | <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> |
| | |
| | | const store = new Vuex.Store({ |
| | | |
| | | state: { |
| | | openId: openId || '', |
| | | openId: openId || '061kuG0006hxcS13TT200w9VIp4kuG09', |
| | | member: member || null, |
| | | statusbarHeight: statusbarHeight || '0', |
| | | navHeight: navHeight || '0', |
| | |
| | | @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; |
| | | |
| | | |
| | |
| | | if (!model.getCheckUserId().equals(hiddenDanger.getEditor())) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"å¤ç人éå½å人åï¼"); |
| | | } |
| | | if(!(hiddenDanger.getStatus().equals(Constants.ONE)||hiddenDanger.getStatus().equals(Constants.TWO))){ |
| | | 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++) { |
| | |
| | | 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++) { |
| | |
| | | multifileMapper.insert(multifile); |
| | | } |
| | | } |
| | | } |
| | | hiddenDanger.setEditor(hiddenDanger.getLoginUserInfo().getId()); |
| | | hiddenDanger.setEditDate(new Date()); |
| | | hiddenDangerMapper.updateById(hiddenDanger); |
| | |
| | | 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); |
| | | } |
| | |
| | | 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{ |
| | |
| | | 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())) |
| | |
| | | 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() + |