Merge remote-tracking branch 'origin/master'
# Conflicts:
# admin/src/views/business/reportRecord.vue
# admin/src/views/business/visitEvent.vue
# admin/src/views/operation/danger/record.vue
# admin/src/views/operation/serviceCar/apprRecord.vue
| | |
| | | }) |
| | | } |
| | | } |
| | | this.loadMember() |
| | | }) |
| | | }, |
| | | getfindCompanyTreePage() { |
| | |
| | | methods: { |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.radio = '0' |
| | | this.changeRadio('0') |
| | | this.searchForm.radio = '' |
| | | // this.changeRadio('0') |
| | | this.time = [] |
| | | this.search() |
| | | }, |
| | |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.time = [] |
| | | this.searchForm.radio = '0' |
| | | this.changeRadio('0') |
| | | this.searchForm.radio = '' |
| | | // this.changeRadio('0') |
| | | this.search() |
| | | } |
| | | } |
| | |
| | | }, |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.radio = '0' |
| | | this.changeRadio('0') |
| | | // this.search() |
| | | this.searchForm.radio = '' |
| | | // this.changeRadio('0') |
| | | this.search() |
| | | } |
| | | } |
| | | } |
| | |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startDate = '' |
| | | this.searchForm.endDate = '' |
| | | this.searchForm.radio = '' |
| | | this.time = [] |
| | | this.search() |
| | | } |
| | |
| | | reset () { |
| | | this.$refs.searchForm.resetFields() |
| | | this.time = [] |
| | | this.searchForm.radio = '0' |
| | | this.changeRadio('0') |
| | | this.searchForm.radio = '' |
| | | // this.changeRadio('0') |
| | | this.search() |
| | | } |
| | | } |
| | |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startDate = '' |
| | | this.searchForm.endDate = '' |
| | | this.searchForm.radio = '' |
| | | this.time = [] |
| | | this.search() |
| | | } |
| | |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startDate = '' |
| | | this.searchForm.endDate = '' |
| | | this.searchForm.radio = '' |
| | | this.time = [] |
| | | this.search() |
| | | } |
| | |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startTime = '' |
| | | this.searchForm.radio = '0' |
| | | this.searchForm.radio = '' |
| | | this.searchForm.endTime = '' |
| | | this.time = [] |
| | | this.search() |
| | |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startTime = '' |
| | | this.searchForm.radio = '0' |
| | | this.searchForm.radio = '' |
| | | this.searchForm.endTime = '' |
| | | this.time = [] |
| | | this.search() |
| | |
| | | 'field.main': 'id' |
| | | }) |
| | | this.changeRadio('0') |
| | | this.search() |
| | | // this.search() |
| | | }, |
| | | methods: { |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.radio = '0' |
| | | this.changeRadio('0') |
| | | this.searchForm.radio = '' |
| | | // this.changeRadio('0') |
| | | this.time = [] |
| | | this.search() |
| | | }, |
| | |
| | | <el-input v-model="searchForm.companyName" placeholder="请è¾å
¥ç»ç»åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¹è®å¼å§æ¶é´" prop="eventType"> |
| | | <el-date-picker |
| | | @change="seleTime" |
| | | v-model="time" |
| | | type="datetimerange" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ"> |
| | | <el-date-picker @change="seleTime" v-model="time" type="datetimerange" format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" range-separator="è³" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio"> |
| | |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | > |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe> |
| | | <el-table-column prop="name" label="人åå§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="ææºå·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="idcardNo" label="è¯ä»¶å·" min-width="150px"></el-table-column> |
| | |
| | | <el-table-column prop="endTime" label="ç»ææ¥æ" min-width="150px"></el-table-column> |
| | | <el-table-column label="人è¸ç
§ç" min-width="80px"> |
| | | <template slot-scope="{row}"> |
| | | <el-image |
| | | v-if="row.faceImg" |
| | | style="width: 80px; height: 80px" |
| | | :src="row.faceImg" |
| | | <el-image v-if="row.faceImg" style="width: 80px; height: 80px" :src="row.faceImg" |
| | | :preview-src-list="[row.faceImg]"> |
| | | </el-image> |
| | | </template> |
| | |
| | | <el-table-column prop="createName" label="æä½äºº" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" min-width="150px"></el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | </template> |
| | | </TableLayout> |
| | |
| | | this.$refs.searchForm.resetFields() |
| | | this.time = [] |
| | | this.time1 = [] |
| | | this.searchForm.radio = '0' |
| | | this.searchForm.radio = '' |
| | | this.searchForm.radio1 = '0' |
| | | this.changeRadio('0') |
| | | // this.changeRadio('0') |
| | | this.search() |
| | | } |
| | | } |
| | |
| | | this.$refs.searchForm.resetFields() |
| | | this.searchForm.startDate = '' |
| | | this.searchForm.endDate = '' |
| | | this.searchForm.radio = '' |
| | | this.time = [] |
| | | this.search() |
| | | } |
| | |
| | | @click="exportExcel">导åº</el-button> |
| | | </li> |
| | | </ul> |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> |
| | | <el-table-column prop="name" label="ä¼è®®ä¸»é¢" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{ row }"> |
| | |
| | | <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', row)">æ¥ç详æ
</el-button> |
| | | <el-button v-if="row.meetingStatus == '1' && row.creator===userInfo.id" type="text" |
| | | @click="$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', row)" >ç¼è¾</el-button> |
| | | <el-button type="text" v-if="row.creator===userInfo.id &&(row.meetingStatus == '1' || row.meetingStatus == '4')" @click="handleStart(row)">å¼å§</el-button> |
| | | <el-button type="text" v-if="row.creator===userInfo.id && row.meetingStatus == '2'" @click="handleEnd(row)">ç»æ</el-button> |
| | | <el-button v-if="row.creator===userInfo.id &&(row.meetingStatus == '1' || row.meetingStatus == '4')" type="text" @click="cancelMeeting(row.id)">æ¤å</el-button> |
| | | <el-button type="text" |
| | | v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')" |
| | | @click="handleStart(row)">å¼å§</el-button> |
| | | <el-button type="text" v-if="row.creator === userInfo.id && row.meetingStatus == '2'" |
| | | @click="handleEnd(row)">ç»æ</el-button> |
| | | <el-button v-if="row.creator === userInfo.id && (row.meetingStatus == '1' || row.meetingStatus == '4')" |
| | | type="text" @click="cancelMeeting(row.id)">æ¤å</el-button> |
| | | </template> |
| | | <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">å é¤</el-button> --> |
| | | </template> |
| | |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.date = [] |
| | | this.searchForm.radio = '0' |
| | | this.searchForm.radio = '' |
| | | this.searchForm.startTime = '' |
| | | this.searchForm.endTime = '' |
| | | this.changeRadio('0') |
| | | // this.changeRadio('0') |
| | | this.search() |
| | | }, |
| | | copy(row) { |
| | | const text = `${row.realName} é请æ¨å å
¥ä¼è®®\nä¼è®®ä¸»é¢ï¼${row.name}\nä¼è®®å®¤ï¼${row.roomName}\nä¼è®®æ¶é´ï¼${row.meetingTime}\nç¹å»é¾æ¥ç´æ¥å å
¥ä¼è®®ï¼\n${this.link}?id=${row.id}` |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0 |
| | | } |
| | | this.getList() |
| | | }, |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0 |
| | | } |
| | | this.getList() |
| | | }, |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0 |
| | | } |
| | | this.getList() |
| | | }, |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0, |
| | | } |
| | | this.changeRadio('0') |
| | | this.getList() |
| | | // this.changeRadio('0') |
| | | }, |
| | | handleDetail(row) { |
| | | this.isShowDriver = true |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0 |
| | | } |
| | | this.changeRadio('0') |
| | | this.getList() |
| | | // this.changeRadio('0') |
| | | }, |
| | | handleDetail(row) { |
| | | this.isShowDetail = true |
| | |
| | | this.pagination.page = 1 |
| | | this.filters = { |
| | | selDate: [], |
| | | fastdate: 0 |
| | | } |
| | | this.getList() |
| | | }, |
| | |
| | | }, |
| | | clear() { |
| | | this.filters = { |
| | | fastdate: 0, |
| | | selDate: [] |
| | | } |
| | | this.changeRadio('0') |
| | | this.getList() |
| | | // this.changeRadio('0') |
| | | }, |
| | | handleSizeChange(capacity) { |
| | | this.pagination.pageSize = capacity |
| | |
| | | this.loading = true |
| | | taskCenterHeadPC({ ...filters, queryType: Number(filters.queryType), isDetail: '1' }).then(res => { |
| | | this.headData = res |
| | | this.getList(page) |
| | | this.getList(1) |
| | | }, () => { |
| | | this.loading = false |
| | | }) |
| | |
| | | { |
| | | "navigationBarTitleText" : "任塿使ç»" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/visitorApplication/memberSel", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "éæ©è¢«è®¿äºº" |
| | | } |
| | | }
|
| | | ],
|
| | | "subPackages": [
|
| | |
| | | <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>
|
| | |
| | | data() {
|
| | | return {
|
| | | taskList: [],
|
| | | activeCurrent: 0,
|
| | | driverInfo: uni.getStorageSync('driverInfo'),
|
| | | }
|
| | | },
|
| | |
| | | },
|
| | |
|
| | | methods: {
|
| | | changeCur(e) { |
| | | this.activeCurrent = e.detail.current |
| | | },
|
| | | jump(path) {
|
| | | this.$jump(path)
|
| | | },
|
| | |
| | | <image |
| | | v-if="info.transportImg" |
| | | class="avatar_wrap" |
| | | @click="priviewImage(info.prefixUrl + info.transportImg)" |
| | | :src="info.prefixUrl + info.transportImg" |
| | | ></image> |
| | | </view> |
| | |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | | priviewImage(url) { |
| | | uni.previewImage({ |
| | | urls: [url] |
| | | }) |
| | | }, |
| | | handleCancel(){ |
| | | const { info } = this |
| | | uni.showModal({ |
| | |
| | | <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">
|
| | |
| | | }
|
| | |
|
| | | .member_list {
|
| | | height: calc( 100vh - 130rpx ); |
| | | overflow: auto; |
| | | margin-top: 10rpx;
|
| | | .line {
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
| | | <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>
|
| | |
| | | })
|
| | | },
|
| | | 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,
|
| | |
| | | <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" |
| | |
| | | this.getDetail(option.id) |
| | | }, |
| | | methods: { |
| | | priviewImage(url) { |
| | | uni.previewImage({ |
| | | urls: [url] |
| | | }) |
| | | }, |
| | | getDetail(id) { |
| | | driverApplyDetail({id}).then(res => { |
| | | this.info = res.data |
| | |
| | | :show="tiemShow" |
| | | v-model="startDate" |
| | | mode="date" |
| | | :formatter="formatter" |
| | | @confirm="confirmLeft" |
| | | @cancel="tiemShow = false" |
| | | ></u-datetime-picker> |
| | |
| | | " |
| | | v-model="startDate" |
| | | mode="date" |
| | | :formatter="formatter" |
| | | @confirm="confirmRight" |
| | | @cancel="tiemShow1 = false" |
| | | ></u-datetime-picker> |
| | |
| | | { name: '访客æ¥å¤', id: 1 }, |
| | | { name: 'ç¨è½¦ç³è¯·', id: 2 }, |
| | | { name: '鿣鿿', id: 3 }, |
| | | { name: 'ç©æµè½¦ç³è¯·', id: 4 }, |
| | | { name: 'ç©æµè½¦ç³è¯·', id: 6 }, |
| | | { name: 'èå¤ä»£å', id: 7 }, |
| | | ], |
| | | startDate: dayjs().format('YYYY-MM-DD'), |
| | |
| | | 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 = [] |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <view class="main_app" :style="{height: windowHeight + 'px'}">
|
| | | <view class="status_wrap">
|
| | | <view class="name">{{ info.categoryName }}</view>
|
| | | <view v-if="info.status == '0'" class="status">{{ statusMap[info.status] }}</view>
|
| | |
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view v-if="info.status == 0 && info.checkUserId == userInfo.memberId" style="height: 90rpx;border: 1px solid red;"></view> |
| | | <view class="emyty"></view>
|
| | | <view class="main_footer" v-if="info.status == 0 && info.checkUserId == userInfo.memberId">
|
| | | <view v-if="info.status == 0 && info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">éå</view>
|
| | |
| | | </u-popup>
|
| | | <!-- 转交 -->
|
| | | <u-popup :show="isShowTransfer" :round="10" safeAreaInsetBottom mode="bottom" @close="isShowTransfer = false">
|
| | | <view class="appr_modal">
|
| | | <view class="appr_modal tran_modal">
|
| | | <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" @focus="showKeyboard = true" @blur="showKeyboard = false" @confirm="getMemList()" type="text" placeholder="æç´¢äººåå§å"
|
| | | placeholder-style="color: #999999;" />
|
| | | </view>
|
| | | <view class="member_list">
|
| | | <view class="mt24 placeholder6">å
±{{ memberList.length }}æ¡æ°æ®</view>
|
| | | <view class="member_list">
|
| | | |
| | | <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>
|
| | |
| | | </view>
|
| | | <view class="empty"></view>
|
| | | </view>
|
| | | <view class="Transfer_footer">
|
| | | <view v-if="!showKeyboard" class="Transfer_footer">
|
| | | <view class="btn" @click="isShowTransfer = fales">åæ¶</view>
|
| | | <view class="btn active" @click="enterTransfer">确认转交</view>
|
| | | </view>
|
| | |
| | | import {
|
| | | hiddenDangerDetail,
|
| | | uploadUrl,
|
| | | findHiddenAreaMemberList,
|
| | | userPagePost,
|
| | | dealHiddenDanger,
|
| | | transferHiddenDanger,
|
| | | findListFlowDanger
|
| | |
| | |
|
| | | id: '',
|
| | | type: '',
|
| | | windowHeight: '',
|
| | | cateList: [{
|
| | | name: '访客ç³è¯·',
|
| | | id: 0
|
| | |
| | |
|
| | | videoPlay: false,
|
| | | videoContext: null,
|
| | | videoUrl: ''
|
| | | videoUrl: '', |
| | | showKeyboard: false,
|
| | | }
|
| | | },
|
| | | onLoad(op) {
|
| | | const result = uni.getWindowInfo()
|
| | | this.windowHeight = result.windowHeight
|
| | | uni.setStorageSync('ywinfo', {})
|
| | | this.id = op.id
|
| | | this.getDetail()
|
| | | // this.handleTransfer()
|
| | | },
|
| | | methods: {
|
| | | priviewImage(url) {
|
| | |
| | | findListFlowDanger({
|
| | | hiddenDangerId: id
|
| | | }).then(res => {
|
| | | this.flowList = res.data
|
| | | this.flowList = res.data || []
|
| | | })
|
| | | },
|
| | | onSubmit() {
|
| | |
| | | icon: 'none'
|
| | | })
|
| | | transferHiddenDanger({
|
| | | checkUserId: transferParam.id,
|
| | | checkUserId: transferParam.memberId,
|
| | | id
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | |
| | | 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 || []
|
| | | })
|
| | |
| | | .main_app {
|
| | | background-color: #fff;
|
| | | padding-bottom: 0;
|
| | |
|
| | | position: relative;
|
| | | .flow_title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | |
| | | }
|
| | |
|
| | | .flow_wrap {
|
| | | padding: 30rpx 0 90rpx;
|
| | |
|
| | | padding: 30rpx 0 30rpx;
|
| | | background-color: #fff;
|
| | | .list {
|
| | | .item {
|
| | | display: flex;
|
| | | margin-bottom: 48rpx;
|
| | | position: relative;
|
| | |
|
| | | .separate {
|
| | | position: absolute;
|
| | | width: 4rpx;
|
| | |
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | | flex-wrap: wrap;
|
| | |
|
| | | .img_wrap {
|
| | | margin-top: 24rpx;
|
| | | width: 156rpx;
|
| | |
| | | width: 100%;
|
| | | z-index: 9999;
|
| | | left: 0;
|
| | | padding: 30rpx 10rpx 60rpx;
|
| | | padding: 10rpx 10rpx 30rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | background: #ffffff;
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .tran_modal{ |
| | | height: 1260rpx; |
| | | }
|
| | | .emyty {
|
| | | width: 750rpx;
|
| | | height: 20rpx;
|
| | |
| | | }
|
| | |
|
| | | .member_list {
|
| | | height: 920rpx;
|
| | | height: 900rpx;
|
| | | overflow: auto;
|
| | |
|
| | | // border: 1px solid;
|
| | | .line {
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
| | | <template> |
| | | <view class="main_app" :class="{ popupShow: isShowSelMem }"> |
| | | <view class="main_app" :style="{ height: windowHeight + 'px' }" :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 }})</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> |
| | |
| | | </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> |
| | |
| | | </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: ''
|
| | | }, |
| | | windowHeight: '',
|
| | | pagination: {
|
| | | page: 1,
|
| | | capacity: 40
|
| | | },
|
| | |
|
| | | isShowSelMem: false
|
| | | } |
| | | }, |
| | | onLoad() { |
| | | onLoad(option) {
|
| | | const result = uni.getWindowInfo()
|
| | | this.windowHeight = result.windowHeight
|
| | | 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
|
| | | } |
| | | }) |
| | | }) |
| | |
| | | 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){ |
| | |
| | | }) |
| | | 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 => { |
| | |
| | | }) |
| | | 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 |
| | | this.$forceUpdate() |
| | | }, |
| | | } |
| | | }; |
| | | }
|
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .main_app {
|
| | | position: relative;
|
| | | }
|
| | |
|
| | | .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; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .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; |
| | |
| | | text-overflow: ellipsis; |
| | | margin-right: 20rpx; |
| | | } |
| | |
|
| | | .open_icon { |
| | | width: 44rpx; |
| | | height: 44rpx; |
| | | } |
| | | } |
| | |
|
| | | .btn { |
| | | width: 690rpx; |
| | | height: 88rpx; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | <text>é¢è®¡ç¨è½¦æ¶æ®µ</text> |
| | | </view> |
| | | <view class="value" @click="$goBack()"> |
| | | <text |
| | | class="mr6" |
| | | :style="{ color: param.startTime ? '#000000' : '#999999' }" |
| | | > |
| | | <text class="mr6" :style="{ color: param.startTime ? '#000000' : '#999999' }"> |
| | | <text v-if="param.startTime"> |
| | | {{ param.startTime.slice(5, 16) }}è³{{ |
| | | param.endTime.slice(5, 16) |
| | |
| | | <text>ç³è¯·è½¦è¾</text> |
| | | </view> |
| | | <view class="value" @click="$goBack()"> |
| | | <input |
| | | type="text" |
| | | disabled |
| | | placeholder="请è¾å
¥ç³è¯·è½¦è¾" |
| | | v-model="param.carCode" |
| | | placeholder-style="color: #999999;" |
| | | /> |
| | | <input type="text" disabled placeholder="请è¾å
¥ç³è¯·è½¦è¾" v-model="param.carCode" |
| | | placeholder-style="color: #999999;" /> |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | |
| | | <text>é¢è®¡åºåæ¶é´</text> |
| | | </view> |
| | | <view class="value" @click="isShowDatetime = true"> |
| | | <text |
| | | class="mr6" |
| | | :style="{ color: param.planUseDate ? '#000000' : '#999999' }" |
| | | >{{ param.planUseDate ? param.planUseDate : "è¯·éæ©" }}</text |
| | | > |
| | | <text class="mr6" :style="{ color: param.planUseDate ? '#000000' : '#999999' }">{{ param.planUseDate ? |
| | | param.planUseDate : "è¯·éæ©" }}</text> |
| | | <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon> |
| | | </view> |
| | | </view> |
| | |
| | | <text>ç®çå°</text> |
| | | </view> |
| | | <view class="value"> |
| | | <input |
| | | type="text" |
| | | placeholder="请è¾å
¥" |
| | | v-model="param.addr" |
| | | placeholder-style="color: #999999;" |
| | | /> |
| | | <input type="text" placeholder="请è¾å
¥" v-model="param.addr" placeholder-style="color: #999999;" /> |
| | | </view> |
| | | </view> |
| | | <view class="line"> |
| | |
| | | <text>ä¹è½¦äººå</text> |
| | | </view> |
| | | <view class="value" @click="selPeople"> |
| | | <text |
| | | class="mr6" |
| | | :style="{ |
| | | <text class="mr6" :style="{ |
| | | color: |
| | | param.memberList && param.memberList.length > 0 |
| | | ? '#000000' |
| | | : '#999999', |
| | | }" |
| | | > |
| | | }"> |
| | | <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> |
| | | <text v-if="param.memberList.length > 2" |
| | | >ç{{ param.memberList.length }}人</text |
| | | > |
| | | <text v-if="param.memberList.length > 2">ç{{ param.memberList.length }}人</text> |
| | | </text> |
| | | <text v-else>è¯·éæ©</text> |
| | | </text> |
| | |
| | | <text>ç¨è½¦äºç±</text> |
| | | </view> |
| | | <view class="value"> |
| | | <textarea |
| | | type="text" |
| | | placeholder="请è¾å
¥" |
| | | :maxlength="-1" |
| | | v-model="param.content" |
| | | placeholder-style="color: #999999;" |
| | | /> |
| | | <textarea type="text" placeholder="请è¾å
¥" :maxlength="-1" v-model="param.content" |
| | | placeholder-style="color: #999999;" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="tip"> |
| | | <view class="title">注æäºé¡¹ï¼</view> |
| | | <view class="line" |
| | | >1ãå
¬å¸è½¦è¾å¤åºéåçç¨è½¦ç³è¯·è¡¨ï¼ç»æ¹ååæ¹å¯å¤åºï¼ååºï¼ã</view |
| | | > |
| | | <view class="line">1ãå
¬å¸è½¦è¾å¤åºéåçç¨è½¦ç³è¯·è¡¨ï¼ç»æ¹ååæ¹å¯å¤åºï¼ååºï¼ã</view> |
| | | <view class="line">2ãå¸å¤ç¨è½¦éæ»ç»å审æ¹ã</view> |
| | | <view class="line" |
| | | >3ãååºè½¦è¾å¿
é¡»éµå®äº¤éè§åï¼å®å
¨è¡é©¶ã对äºè½¦è¾åç交éæå¤ï¼å¯¹å½äºäººåç¬¬ä¸æ¹é æäººèº«ä¼¤å®³åæå¤±ï¼å
¬å¸å¯ä»¥åå©å¤çä¿é©å
¬å¸èµå¿ç¸å
³äºå®ï¼ä½ä¸æ¿æ
ä»»ä½è´£ä»»åè´¹ç¨ã</view |
| | | > |
| | | <view class="line" |
| | | >4ãå
¬å¸åç»ç³è¯·äººç¨è½¦ï¼ç³è¯·å车人为第ä¸è´£ä»»äººï¼ä¸å
许转åç»å
¶ä»äººä½¿ç¨ï¼è¥è¦åç»ä»äººä½¿ç¨ãè´£ä»»äººè¦æ¿æ
å
¨é¨è´£ä»»ã</view |
| | | > |
| | | <view class="line">3ãååºè½¦è¾å¿
é¡»éµå®äº¤éè§åï¼å®å
¨è¡é©¶ã对äºè½¦è¾åç交éæå¤ï¼å¯¹å½äºäººåç¬¬ä¸æ¹é æäººèº«ä¼¤å®³åæå¤±ï¼å
¬å¸å¯ä»¥åå©å¤çä¿é©å
¬å¸èµå¿ç¸å
³äºå®ï¼ä½ä¸æ¿æ
ä»»ä½è´£ä»»åè´¹ç¨ã</view> |
| | | <view class="line">4ãå
¬å¸åç»ç³è¯·äººç¨è½¦ï¼ç³è¯·å车人为第ä¸è´£ä»»äººï¼ä¸å
许转åç»å
¶ä»äººä½¿ç¨ï¼è¥è¦åç»ä»äººä½¿ç¨ãè´£ä»»äººè¦æ¿æ
å
¨é¨è´£ä»»ã</view> |
| | | <view class="sub_btn" @click="handleSub">æäº¤</view> |
| | | </view> |
| | | <!-- --> |
| | | <!-- :minDate="new Date(param.startTime).getTime()" |
| | | :maxDate="new Date(param.endTime).getTime()" --> |
| | | <u-datetime-picker |
| | | :show="isShowDatetime" |
| | | @confirm="confirmDate" |
| | | :minDate="new Date(param.startTime).getTime()" |
| | | :maxDate="new Date(param.endTime).getTime()" |
| | | @cancel="isShowDatetime = false" |
| | | mode="datetime" |
| | | ></u-datetime-picker> |
| | | <u-datetime-picker :show="isShowDatetime" @confirm="confirmDate" :minDate="new Date(param.startTime).getTime()" |
| | | :maxDate="new Date(param.endTime).getTime()" @cancel="isShowDatetime = false" mode="datetime"></u-datetime-picker> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | mounted() { |
| | | 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, 'memberIds', res.map(i => i.memberId).join(',')) |
| | | this.$set(this.param, 'memberNames', res.map(i => i.realname).join(',')) |
| | | }) |
| | | }, |
| | | onLoad(option) { |
| | |
| | | page{ |
| | | background-color: #f7f7f7; |
| | | } |
| | | |
| | | .main_wrap { |
| | | .line { |
| | | display: flex; |
| | |
| | | background-color: #fff; |
| | | width: 750rpx; |
| | | margin: 0 -30rpx; |
| | | |
| | | .label { |
| | | font-size: 30rpx; |
| | | font-weight: 400; |
| | | |
| | | text { |
| | | &:nth-child(1) { |
| | | color: #e42d2d; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .value { |
| | | flex: 1; |
| | | height: 100%; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | |
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .upload_line { |
| | | padding: 30rpx; |
| | | width: 750rpx; |
| | | margin: 0 -30rpx; |
| | | background-color: #fff; |
| | | |
| | | textarea { |
| | | margin-top: 12rpx; |
| | | width: 100%; |
| | |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | |
| | | .adduser_list_item_ipt1_upload { |
| | | margin-top: 24rpx; |
| | | width: 120rpx; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .sub_btn { |
| | | // position: fixed; |
| | | // bottom: 84rpx; |
| | |
| | | font-size: 30rpx; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | .tip { |
| | | background: #f7f7f7; |
| | | padding: 30rpx 30rpx 10rpx; |
| | | margin: 0 -30rpx; |
| | | |
| | | .title { |
| | | line-height: 40rpx; |
| | | margin-bottom: 22rpx; |
| | | } |
| | | |
| | | .line { |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | |
| | | .main_app { |
| | | padding-bottom: 0; |
| | | // padding-top: 10rpx; |
| | |
| | | <u-datetime-picker |
| | | mode="date" |
| | | v-model="param.queryDate" |
| | | :formatter="formatter" |
| | | :show="isShowDate" |
| | | :minDate="minDate" |
| | | closeOnClickOverlay |
| | |
| | | } |
| | | }, |
| | | 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 |
| | |
| | | <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">
|
| | |
| | | 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
|
| | |
| | | :show="isShowDate" |
| | | ref="startPick" |
| | | title="å¼å§æ¶é´" |
| | | :formatter="formatter" |
| | | :minDate="minDate" |
| | | @close="isShowDate = false" |
| | | :closeOnClickOverlay="true" |
| | |
| | | mode="datetime" |
| | | :show="isShowEndDate" |
| | | title="ç»ææ¶é´" |
| | | :formatter="formatter" |
| | | :minDate="new Date(param.startTime || null).getTime()" |
| | | @close="endtimeClose" |
| | | :closeOnClickOverlay="true" |
| | |
| | | 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) { |
| | |
| | | :show="show4" |
| | | :minDate="new Date().getTime()" |
| | | mode="datetime" |
| | | :formatter="formatter" |
| | | @cancel="show4 = false" |
| | | @confirm="setinDate" |
| | | ></u-datetime-picker> |
| | |
| | | <u-datetime-picker |
| | | v-if="form1.starttime" |
| | | :show="show5" |
| | | :formatter="formatter" |
| | | :minDate="formatTimeStamp(form1.starttime)" |
| | | :maxDate="formatTimeStamp(maxTime)" |
| | | mode="datetime" |
| | |
| | | // 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() |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <!-- <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"> |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | <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> |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | | |
| | |
| | | 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, |
| | |
| | | showReason: false, |
| | | fileList: [], |
| | | columns1: [ |
| | | [{ name: '身份è¯', id: 0 }, { name: '港澳è¯ä»¶', id: 1 }, { name: 'æ¤ç
§', id: 2 }], |
| | | [{
|
| | | name: '身份è¯',
|
| | | id: 0
|
| | | }, {
|
| | | name: '港澳è¯ä»¶',
|
| | | id: 1
|
| | | }, {
|
| | | name: 'æ¤ç
§',
|
| | | id: 2
|
| | | }],
|
| | | ], |
| | | VisitReason: [], |
| | | VisitPoeple: [], |
| | |
| | | verify: '' |
| | | } |
| | | }, |
| | | components: { tlyPictureCut, keyboardInput, QfImageCropper }, |
| | | components: {
|
| | | tlyPictureCut,
|
| | | keyboardInput,
|
| | | QfImageCropper
|
| | | },
|
| | | onLoad(options) { |
| | | if (options.data) { |
| | | this.form = JSON.parse(options.data) |
| | |
| | | // 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() |
| | |
| | | }, |
| | | 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, |
| | |
| | | } |
| | | 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`, |
| | |
| | | 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) { |
| | |
| | | page { |
| | | background-color: #f7f7f7 !important; |
| | | } |
| | |
|
| | | .u-upload__button { |
| | | margin: 0 !important; |
| | | } |
| | |
| | | <style lang="scss" scoped> |
| | | .visit { |
| | | width: 100%; |
| | |
|
| | | .menjin { |
| | | width: 100%; |
| | |
|
| | | .respondent-title { |
| | | width: 100%; |
| | | height: 100rpx; |
| | |
| | | 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; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | |
|
| | | .menjin_footer_item { |
| | | flex: 1; |
| | | height: 80rpx; |
| | |
| | | color: #ffffff; |
| | | font-size: 26rpx; |
| | | margin-left: 30rpx; |
| | |
|
| | | &:first-child { |
| | | margin-left: 0 !important; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .adduser { |
| | | padding: 30rpx; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | |
|
| | | .adduser_head { |
| | | width: 100%; |
| | | text-align: center; |
| | |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | |
|
| | | .adduser_list { |
| | | width: 100%; |
| | | margin-top: 40rpx; |
| | |
|
| | | .adduser_list_item { |
| | | width: 100%; |
| | | padding: 24rpx 0; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | |
|
| | | .adduser_list_item_ipt1_upload { |
| | | width: 120rpx; |
| | | height: 120rpx; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | |
|
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | |
|
| | | text { |
| | | font-size: 28rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .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; |
| | |
| | | font-weight: 400; |
| | | color: #4d99a9; |
| | | margin-right: 18rpx; |
| | |
|
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | |
| | | padding: 30rpx; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | |
|
| | | .addcar_head { |
| | | text-align: center; |
| | | font-size: 32rpx; |
| | |
| | | font-weight: 600; |
| | | color: #222222; |
| | | } |
| | |
|
| | | .addcar_ipt { |
| | | width: 100%; |
| | | height: 100rpx; |
| | |
| | | background: #f7f7f7; |
| | | border-radius: 50rpx; |
| | | margin-top: 60rpx; |
| | |
|
| | | input { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | 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; |
| | |
| | | border-radius: 44rpx; |
| | | border: 1rpx solid #025eef; |
| | | margin-right: 18rpx; |
| | |
|
| | | &:last-child { |
| | | margin-right: 0 !important; |
| | | } |
| | |
| | | overflow: hidden; |
| | | display: flex; |
| | | flex-flow: column; |
| | |
|
| | | .respondent-title { |
| | | width: 100%; |
| | | text-align: center; |
| | |
| | | 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%; |
| | |
| | | border-radius: 4rpx; |
| | | display: flex; |
| | | align-items: center; |
| | |
|
| | | image { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | flex-shrink: 0; |
| | | margin-right: 22rpx; |
| | | } |
| | |
|
| | | input { |
| | | flex: 1; |
| | | height: 100%; |
| | |
| | | color: #b2b2b2; |
| | | } |
| | | } |
| | |
|
| | | text { |
| | | flex-shrink: 0; |
| | | margin-left: 30rpx; |
| | |
| | | color: #025eef; |
| | | } |
| | | } |
| | |
|
| | | .search-box-total { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | |
| | | 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; |
| | |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | margin-right: 24rpx; |
| | |
|
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | |
|
| | | .item_c { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | |
|
| | | text { |
| | | &:nth-child(1) { |
| | | font-size: 30rpx; |
| | |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | |
|
| | | &:nth-child(2) { |
| | | font-size: 20rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | |
| | | } |
| | | } |
| | | } |
| | |
|
| | | .footer1 { |
| | | width: 100%; |
| | | height: 100rpx; |
| | |
| | | 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; |
| | |
| | | color: #999999; |
| | | } |
| | | } |
| | |
|
| | | .footer_btn { |
| | | flex-shrink: 0; |
| | | width: 216rpx; |
| | |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #ffffff; |
| | |
|
| | | .empty { |
| | | width: 750rpx; |
| | | height: 20rpx; |
| | | background-color: #f7f7f7; |
| | | margin: 0 -30rpx; |
| | | } |
| | |
|
| | | .list_item { |
| | | width: 100%; |
| | | // min-height: 98rpx; |
| | |
| | | padding: 30rpx; |
| | | box-sizing: border-box; |
| | | background-color: #ffffff; |
| | |
|
| | | .cate_head { |
| | | font-size: 32rpx; |
| | | font-family: PingFangSC, PingFang SC; |
| | |
| | | <div class="line header"> |
| | | <div>å§å</div> |
| | | <div class="dept">æè®¿é¨é¨</div> |
| | | <div class="dept">è¶
æ¶æ¶é¿</div> |
| | | <div class="time">è¶
æ¶æ¶é¿</div> |
| | | </div> |
| | | <div v-if="dataList3.length > 0" class="three-swiper list"> |
| | | <div class="swiper-wrapper"> |
| | |
| | | <div class="line"> |
| | | <div>{{ item.name }}</div> |
| | | <div class="dept">{{ item.companyName }}</div> |
| | | <div class="dept">{{ item.timeOutMinuteT }}</div> |
| | | <div class="time">{{ item.timeOutMinuteT }}</div> |
| | | </div> |
| | | <div class="separate"></div> |
| | | </div> |
| | |
| | | ] |
| | | const data = [] |
| | | if (data4.value.total) { |
| | | data.push({ name: 'å¾
访é®', value: data4.value.waitVisitNum, rate: (data4.value.waitVisitNum / data4.value.total).toFixed(1) }) |
| | | data.push({ name: 'å·²ç»è®°', value: data4.value.registerVisitNum, rate: (data4.value.registerVisitNum / data4.value.total).toFixed(1) }) |
| | | data.push({ name: '已离å¼', value: data4.value.levelNum, rate: (data4.value.levelNum / data4.value.total).toFixed(1) }) |
| | | data.push({ name: 'æ»ç', value: data4.value.retentionNum, rate: (data4.value.retentionNum / data4.value.total).toFixed(1) }) |
| | | data.push({ name: 'å¾
访é®', value: data4.value.waitVisitNum, rate: (data4.value.waitVisitNum / data4.value.total).toFixed(3) }) |
| | | data.push({ name: 'å·²ç»è®°', value: data4.value.registerVisitNum, rate: (data4.value.registerVisitNum / data4.value.total).toFixed(3) }) |
| | | data.push({ name: '已离å¼', value: data4.value.levelNum, rate: (data4.value.levelNum / data4.value.total).toFixed(3) }) |
| | | data.push({ name: 'æ»ç', value: data4.value.retentionNum, rate: (data4.value.retentionNum / data4.value.total).toFixed(3) }) |
| | | } else { |
| | | data.push({ name: 'å¾
访é®', value: data4.value.waitVisitNum, rate: 0 }) |
| | | data.push({ name: 'å·²ç»è®°', value: data4.value.registerVisitNum, rate: 0 }) |
| | | data.push({ name: '已离å¼', value: data4.value.levelNum, rate: 0 }) |
| | | data.push({ name: 'æ»ç', value: data4.value.retentionNum, rate: 0 }) |
| | | } |
| | | data.sort((a, b) => (b.value - a.value)) |
| | | // console.log('data', data); |
| | | |
| | | const option = { |
| | | color: colors, |
| | |
| | | position: 'outside', |
| | | formatter: (params) => { |
| | | const index = params.dataIndex |
| | | return `{color${index}|${params.data.name} ${params.data.rate}%}` |
| | | return `{color${index}|${params.data.name} ${(params.data.rate * 100).toFixed(1)}%}` |
| | | // return `<div>${params.data.name}</div>` |
| | | }, |
| | | rich: { |
| | |
| | | } |
| | | return item |
| | | }) |
| | | console.log('dataList2', dataList2.value); |
| | | console.log('dataList2', dataList2.value) |
| | | |
| | | data2.value = total |
| | | if (online >= outline) { |
| | |
| | | data4.value = res.data || {} |
| | | let obj = data4.value |
| | | data4.value.total = obj.levelNum + obj.retentionNum + obj.registerVisitNum + obj.waitVisitNum |
| | | |
| | | const result = res.data?.visitRetentionDataList || [] |
| | | dataList3.value = result.map(i => { |
| | | if (i.timeOutMinute) { |
| | |
| | | } else if (i.timeOutMinute > 60) { |
| | | i.timeOutMinuteT = dayjs.duration(i.timeOutMinute * 60 * 1000).format('Hæ¶må') |
| | | } else { |
| | | i.timeOutMinuteT = item.timeOutMinuteT + 'å' |
| | | i.timeOutMinuteT = i.timeOutMinute + 'å' |
| | | } |
| | | |
| | | return i |
| | |
| | | width: 786px; |
| | | margin-right: 20px; |
| | | position: relative; |
| | | |
| | | /* one-swiper */ |
| | | .one_swiper_wrap { |
| | | height: 140px; |
| | |
| | | } |
| | | |
| | | .dept { |
| | | flex: 5; |
| | | flex: 8; |
| | | } |
| | | |
| | | .time { |
| | | flex: 4; |
| | | flex: 5; |
| | | } |
| | | } |
| | | |
| | |
| | | .set(Notices::getInfo,"å·²æç»") |
| | | .eq(Notices::getObjId,notices.getObjId()) |
| | | .eq(Notices::getObjType,notices.getObjType()) |
| | | .eq(Notices::getReaded,Constants.ZERO) |
| | | // .eq(Notices::getReaded,Constants.ZERO) |
| | | .ne(Notices::getId,notices.getId()) |
| | | ); |
| | | } |