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;