| | |
| | | <!-- <image :src="lastDisabled ? disable : nodisable" mode="widthFix" @tap="subMonth"></image> -->
|
| | | <image :src="nodisable" mode="widthFix" @tap="subMonth"></image>
|
| | | <text>{{title_time}}</text>
|
| | | <image src="@/static/icon/ar_right@2x.png" mode="widthFix" @tap="addMonth"></image>
|
| | | <image src="@/static/meeting/icon/ar_right@2x.png" mode="widthFix" @tap="addMonth"></image>
|
| | | </view>
|
| | | <view class="header-right" @tap="backToToday">åå°ä»å¤©</view>
|
| | | <!-- <text class='calendar-lastMonth' @tap="subMonth" v-bind:class="{'calendar-btn-disabled' : lastDisabled }">{{lastText}}</text>
|
| | |
| | | },
|
| | | data() {
|
| | | return {
|
| | | nodisable: require('@/static/icon/ar_left@2x.png'),
|
| | | disable: require('@/static/icon/ar_left_disable.png'),
|
| | | nodisable: require('@/static/meeting/icon/ar_left@2x.png'),
|
| | | disable: require('@/static/meeting/icon/ar_left_disable.png'),
|
| | |
|
| | | nextDisabled: false,
|
| | | lastDisabled: true,
|
| | |
| | | },
|
| | | computed: {
|
| | | transformObj:function () {
|
| | | return 'translate3d(' + this.transform_x + 'px, 0px, 0px) translateZ(0px)'; |
| | | return 'translate3d(' + this.transform_x + 'px, 0px, 0px) translateZ(0px)';
|
| | | },
|
| | | transformTimeObj:function () {
|
| | | return this.transform_time + 'ms';
|
| | |
| | |
|
| | | <style>
|
| | | @import url("./Li-Calendar.css");
|
| | | </style> |
| | | </style>
|
| | |
| | | |
| | | // httpæ¥å£APIæ½ç¦» |
| | | import httpApi from '@/utils/http.api.js' |
| | | import httpMeetingApi from '@/utils/meetingHttp.js' |
| | | Vue.use(httpApi, app) |
| | | Vue.use(httpMeetingApi, app) |
| | | |
| | | // è¯·æ±æ¦æªå¨ |
| | | import interceptor from '@/utils/http.interceptor.js' |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <view class="confirm">
|
| | | <view class="confirm_a">
|
| | | <view class="confirm_a_item">
|
| | | <view class="label">ä¼è®®æ¶é´</view>
|
| | | <view class="content">
|
| | | {{time}}
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_a_item">
|
| | | <view class="label">ä¼è®®å®¤</view>
|
| | | <view class="content">
|
| | | {{info.name}} <template v-if="info.limitNum">(å¯å®¹çº³{{info.limitNum}}人)</template>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_a_item">
|
| | | <view class="label">é¢çº¦äºº</view>
|
| | | <view class="content">
|
| | | {{user.departmentName ? user.departmentName : userInfo.departmentName}} {{user.realname ? user.realname : userInfo.realname}} {{user.mobile ? user.mobile : userInfo.mobile}}
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b">
|
| | | <view class="confirm_b_item">
|
| | | <view class="label">
|
| | | <text>ä¼è®®ä¸»é¢</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="input">
|
| | | <input type="text" v-model="from.theme" placeholder="请è¾å
¥ä¼è®®ä¸»é¢" placeholder-class="placeholder" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b_item">
|
| | | <view class="label">
|
| | | <text>ä¼è®®å
容</text>
|
| | | </view>
|
| | | <view class="input">
|
| | | <textarea class="textarea" placeholder="请æè¦æ±è¾å
¥å
容" maxlength="300" v-model="from.content" />
|
| | | <!-- <view class="num">{{ from.content.length }}/300</view> -->
|
| | | <!-- <textarea
|
| | | v-model="from.content"
|
| | | placeholder="请æè¦æ±è¾å
¥å
容"
|
| | | placeholder-style="color: #999999;font-size: 30rpx;font-weight: 400;"
|
| | | :maxlength="300"/> -->
|
| | | |
| | | <!-- <u--textarea
|
| | | border="none"
|
| | | v-model="from.content"
|
| | | maxlength="300"
|
| | | height="150"
|
| | | placeholder="请æè¦æ±è¾å
¥å
容"
|
| | | count></u--textarea> -->
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b">
|
| | | <view class="confirm_b_item" @click="jump">
|
| | | <view class="label">
|
| | | <text>åä¼äººå</text>
|
| | | <text>*</text>
|
| | | </view>
|
| | | <view class="select">
|
| | | <text :style="{color: usersName ? '#000' : ''}">{{usersName ? usersName : 'è¯·éæ©'}}</text>
|
| | | <view class="select_right">></view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b_item" v-if="info.projectList && info.projectList.length > 0">
|
| | | <view class="label">
|
| | | <text>éæ©æå¡é¡¹</text>
|
| | | </view>
|
| | | <view class="multiple">
|
| | | <view
|
| | | :class="item.active ? 'multiple_item active' : 'multiple_item'" v-for="(item, index) in info.projectList"
|
| | | :key="index"
|
| | | @click="serviceItems(index)">
|
| | | {{item.projectName}}
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b_item">
|
| | | <view class="label">
|
| | | <text>éä»¶</text>
|
| | | </view>
|
| | | <view class="uplaod">
|
| | | <view class="uplaod_item" v-for="(item, index) in from.files" :key="index">
|
| | | <view class="uplaod_item_url">
|
| | | <text @click="linkAddress(item.url)">{{item.name}}</text>
|
| | | <!-- <u--text :lines="1" mode="link" :text="item.name" :href="item.url" ></u--text> -->
|
| | | </view>
|
| | | <text class="dele" @click="dele(index)">å é¤</text>
|
| | | </view>
|
| | | <view class="uplaod_box" @click="uploadFile">
|
| | | <image src="@/static/meeting/icon/ic_upload@2x.png" mode="widthFix"></image>
|
| | | <text>ç¹å»ä¸ä¼ </text>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_b_item">
|
| | | <view class="label">
|
| | | <text>夿³¨</text>
|
| | | </view>
|
| | | <view class="input">
|
| | | <textarea
|
| | | v-model="from.notes"
|
| | | placeholder="请è¾å
¥"
|
| | | placeholder-style="color: #999999;font-size: 30rpx;font-weight: 400;"
|
| | | :maxlength="300"/>
|
| | | <!-- <u--textarea
|
| | | border="none"
|
| | | v-model="from.notes"
|
| | | height="150"
|
| | | placeholder="请è¾å
¥"></u--textarea> -->
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="confirm_footer">
|
| | | <view class="confirm_footer_btn" @click="submit">{{id ? '确认ç¼è¾' : '确认é¢çº¦'}}</view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { mapState } from 'vuex'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | id: '',
|
| | | roomId: '',
|
| | | value2: '',
|
| | | time: '',
|
| | | info: {},
|
| | | usersName: '',
|
| | | timelist: [],
|
| | | userList: [],
|
| | | startTime: '',
|
| | | endTime: '',
|
| | | from: {
|
| | | theme: '',
|
| | | content: '',
|
| | | files: [],
|
| | | notes: ''
|
| | | },
|
| | | user: {}
|
| | | };
|
| | | },
|
| | | computed: {
|
| | | ...mapState(['userInfo'])
|
| | | },
|
| | | async onLoad(option) {
|
| | | if (option.descid) {
|
| | | uni.setNavigationBarTitle({
|
| | | title: "ç¼è¾ä¼è®®"
|
| | | });
|
| | | this.roomId = option.roomId
|
| | | this.id = option.descid
|
| | | this.timelist = JSON.parse(option.timeList)
|
| | | await this.getDesc()
|
| | | this.getdesc()
|
| | | } else {
|
| | | this.time = option.time
|
| | | this.roomId = option.id
|
| | | this.startTime = option.startTime
|
| | | this.endTime = option.endTime
|
| | | this.timelist = JSON.parse(option.list)
|
| | | this.getDesc()
|
| | | }
|
| | | },
|
| | | onShow() {
|
| | | uni.$once('user', (data) => {
|
| | | this.userList = data.userList
|
| | | this.usersName = data.usersName
|
| | | })
|
| | | },
|
| | | methods: {
|
| | | linkAddress(link) {
|
| | | uni.setClipboardData({
|
| | | data: link,
|
| | | success: function () {
|
| | | uni.showToast({
|
| | | title: '龿¥å·²å¤å¶ï¼è¯·å¨æµè§å¨æå¼',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | | dele(index) {
|
| | | this.from.files.splice(index, 1)
|
| | | },
|
| | | getdesc() {
|
| | | this.$u.api.meetingDetail({ id: this.id })
|
| | | .then(res => {
|
| | | this.time = res.data.meetingDate + ' ' + res.data.meetingTime
|
| | | this.from.notes = res.data.remark
|
| | | this.from.theme = res.data.meetingName
|
| | | this.from.content = res.data.meetingContent
|
| | | this.user = res.data.bookingUser
|
| | | this.startTime = res.data.meetingDate + ' ' + res.data.meetingTime.substring(0, 5)
|
| | | this.endTime = res.data.meetingDate + ' ' + res.data.meetingTime.substring(8, 13)
|
| | | |
| | | if (res.data.projectsResponseList.length > 0) {
|
| | | res.data.projectsResponseList.forEach(item => {
|
| | | this.info.projectList.forEach(child => {
|
| | | if (item.id === child.projectId) {
|
| | | child.active = true
|
| | | }
|
| | | })
|
| | | })
|
| | | }
|
| | | |
| | | if (res.data.multiFileList.length > 0) {
|
| | | this.from.files = res.data.multiFileList.map(item => {
|
| | | return {
|
| | | fileurl: item.fileurl,
|
| | | name: item.name,
|
| | | url: item.fileurl + item.name
|
| | | }
|
| | | })
|
| | | }
|
| | | if (res.data.userResponseList.length > 0) {
|
| | | this.userList = res.data.userResponseList.map(item => {
|
| | | return {
|
| | | userId: item.id
|
| | | }
|
| | | })
|
| | | let name = res.data.userResponseList.map(item => item.realname)
|
| | | this.usersName = name.join('ï¼')
|
| | | }
|
| | | })
|
| | | },
|
| | | submit() {
|
| | | if (!this.from.theme) return uni.showToast({
|
| | | title: 'ä¼è®®ä¸»é¢ä¸è½ä¸ºç©º',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | if (this.userList.length === 0) return uni.showToast({
|
| | | title: '请å
éæ©åä¼äººå',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | var that = this
|
| | | uni.requestSubscribeMessage({
|
| | | tmplIds: [
|
| | | '_-HjcxNFJQU3O6P_I_bFzEQsiuUsT_0vbCLUxRL4zRA',
|
| | | '6dc1gVYwRVm7kTnjdZRtzMGa48iBPZ5kX2N_S7TnDac',
|
| | | 'lEWpQak_nN9iC3re0Ub2RH7vgBxvB-EX8yp_Q5SdQTA'
|
| | | ],
|
| | | success (res) {
|
| | | let projectList = []
|
| | | that.info.projectList.forEach(item => {
|
| | | if (item.active) {
|
| | | projectList.push({ projectId: item.projectId })
|
| | | }
|
| | | })
|
| | | that.$u.api.reservationMeeting({
|
| | | id: that.id,
|
| | | bookingTimeList: that.timelist,
|
| | | content: that.from.content.substring(0, 300),
|
| | | fileList: that.from.files,
|
| | | name: that.from.theme,
|
| | | projectList,
|
| | | remark: that.from.notes,
|
| | | roomId: that.roomId,
|
| | | sysList: that.userList,
|
| | | startTime: (that.startTime + ':00').replace(/å¹´/g, '-').replace(/æ/g, '-').replace(/æ¥/g, ''),
|
| | | endTime: (that.endTime + ':00').replace(/å¹´/g, '-').replace(/æ/g, '-').replace(/æ¥/g, '')
|
| | | }).then(res => {
|
| | | if (res.code === 200) {
|
| | | let url = `/packagesMine/meetingDetails/meetingDetails?id=${res.data}`
|
| | | if (that.id) {
|
| | | uni.showToast({
|
| | | title: 'ç¼è¾æå',
|
| | | icon: 'none',
|
| | | duration: 2000,
|
| | | complete() {
|
| | | setTimeout(() => {
|
| | | uni.reLaunch({
|
| | | url: url
|
| | | });
|
| | | }, 2000)
|
| | | }
|
| | | });
|
| | | } else {
|
| | | uni.showToast({
|
| | | title: 'é¢çº¦æå',
|
| | | icon: 'none',
|
| | | duration: 2000,
|
| | | complete() {
|
| | | setTimeout(() => {
|
| | | uni.reLaunch({
|
| | | url: url
|
| | | });
|
| | | }, 2000)
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | | })
|
| | | },
|
| | | fail(err) {
|
| | | console.log(err)
|
| | | // uni.showToast({
|
| | | // title: '订é
失败',
|
| | | // icon: 'error',
|
| | | // duration: 2000
|
| | | // });
|
| | | }
|
| | | })
|
| | | },
|
| | | serviceItems(i) {
|
| | | this.info.projectList[i].active = !this.info.projectList[i].active
|
| | | },
|
| | | getDesc() {
|
| | | this.$u.api.getRoomDetail({ roomId: this.roomId })
|
| | | .then(res => {
|
| | | res.data.projectList.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | this.info = res.data
|
| | | })
|
| | | },
|
| | | uploadFile() {
|
| | | var that = this
|
| | | uni.chooseImage({
|
| | | success: (chooseImageRes) => {
|
| | | for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
|
| | | uni.uploadFile({
|
| | | url: `${that.$baseUrl}public/uploadLocal`,
|
| | | filePath: chooseImageRes.tempFilePaths[i],
|
| | | name: 'file',
|
| | | formData: {
|
| | | 'folder': 'projects'
|
| | | },
|
| | | success: (uploadFileRes) => {
|
| | | console.log(JSON.parse(uploadFileRes.data));
|
| | | let res = JSON.parse(uploadFileRes.data).data
|
| | | that.from.files.push({
|
| | | fileurl: res.imgaddr,
|
| | | name: res.imgname,
|
| | | url: res.url
|
| | | })
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | jump() {
|
| | | uni.navigateTo({
|
| | | url: `/packagesMine/selectPersonnel/selectPersonnel?startTime=${this.startTime}&endTime=${this.endTime}`
|
| | | });
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .confirm {
|
| | | width: 100%;
|
| | | padding-bottom: calc(108rpx + env(safe-area-inset-bottom));
|
| | | .confirm_a {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #fff;
|
| | | .confirm_a_item {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | padding-bottom: 30rpx;
|
| | | margin-bottom: 30rpx;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | border: none !important;
|
| | | padding-bottom: 0 !important;
|
| | | }
|
| | | .label {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-bottom: 30rpx;
|
| | | }
|
| | | .content {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | | .confirm_b {
|
| | | width: 100%;
|
| | | margin-top: 20rpx;
|
| | | padding: 30rpx;
|
| | | background: #fff;
|
| | | box-sizing: border-box;
|
| | | .confirm_b_item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | padding-bottom: 30rpx;
|
| | | margin-bottom: 30rpx;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | border: none !important;
|
| | | padding-bottom: 0 !important;
|
| | | }
|
| | | .select {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | .select_right {
|
| | | flex-shrink: 0;
|
| | | margin-left: 20rpx;
|
| | | color: #999999;
|
| | | font-size: 24rpx;
|
| | | }
|
| | | text {
|
| | | flex: 1;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | overflow:hidden;
|
| | | white-space: nowrap;
|
| | | text-overflow: ellipsis;
|
| | | -o-text-overflow:ellipsis;
|
| | | }
|
| | | }
|
| | | .uplaod {
|
| | | width: 100%;
|
| | | .uplaod_item {
|
| | | width: 100%;
|
| | | // word-break: break-all;
|
| | | margin-bottom: 20rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | }
|
| | | .uplaod_item_url {
|
| | | flex: 1;
|
| | | overflow: hidden;
|
| | | white-space: nowrap;
|
| | | text-overflow: ellipsis;
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | text-decoration: underline;
|
| | | }
|
| | | // .u-link {
|
| | | // width: 200rpx !important;
|
| | | // overflow: hidden !important;
|
| | | // white-space: nowrap !important;
|
| | | // text-overflow: ellipsis !important;
|
| | | // }
|
| | | }
|
| | | .dele {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | flex-shrink: 0;
|
| | | margin-left: 20rpx;
|
| | | }
|
| | | }
|
| | | .uplaod_box {
|
| | | width: 212rpx;
|
| | | height: 64rpx;
|
| | | line-height: 64rpx;
|
| | | text-align: center;
|
| | | border-radius: 4rpx;
|
| | | border: 1rpx solid #0055FF;
|
| | | image {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 8rpx;
|
| | | }
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | }
|
| | | }
|
| | | }
|
| | | .multiple {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | flex-wrap: wrap;
|
| | | .active {
|
| | | background: #0055FF !important;
|
| | | color: #FFFFFF !important;
|
| | | }
|
| | | .multiple_item {
|
| | | padding: 18rpx 32rpx;
|
| | | background: #F7F7F7;
|
| | | border-radius: 4rpx;
|
| | | box-sizing: border-box;
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | margin-right: 20rpx;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | | }
|
| | | .label {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | margin-bottom: 30rpx;
|
| | | text {
|
| | | &:nth-child(1) {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-right: 8rpx;
|
| | | }
|
| | | &:nth-child(2) {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #F62710;
|
| | | }
|
| | | }
|
| | | }
|
| | | .input /deep/ {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: flex-end;
|
| | | textarea {
|
| | | width: 100%;
|
| | | }
|
| | | .u-textarea {
|
| | | padding: 0 !important;
|
| | | }
|
| | | .placeholder {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | }
|
| | | input {
|
| | | width: 100%;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #000000;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | .confirm_footer {
|
| | | width: 100%;
|
| | | position: fixed;
|
| | | bottom: 0;
|
| | | box-sizing: border-box;
|
| | | padding: 10rpx 30rpx calc(10rpx + env(safe-area-inset-bottom)) 30rpx;
|
| | | z-index: 9;
|
| | | .confirm_footer_btn {
|
| | | width: 690rpx;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | text-align: center;
|
| | | background: #0055FF;
|
| | | border-radius: 4rpx;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | }
|
| | | }
|
| | | </style>
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <page-meta :page-style="'overflow:'+(pageShow?'hidden':'visible')"></page-meta>
|
| | | <view class="details">
|
| | | <view class="details_head">
|
| | | <text>{{info.meetingName || ''}}</text>
|
| | | <text>{{info.roomName || ''}}ï½{{info.meetingDate || ''}} {{info.meetingTime || ''}}</text>
|
| | | </view>
|
| | | <view class="details_content">
|
| | | <view class="details_content_item">
|
| | | <view class="label">åä¼äººå</view>
|
| | | <view class="content" v-if="info.userResponseList && info.userResponseList.length > 0">
|
| | | <text v-for="(item, index) in info.userResponseList" :key="index">
|
| | | {{ item.realname }}({{item.departmentName}})<template v-if="index !== info.userResponseList.length - 1">ï¼</template>
|
| | | </text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_content_item" v-if="info.meetingContent">
|
| | | <view class="label">ä¼è®®å
容</view>
|
| | | <view class="content">
|
| | | <text>{{info.meetingContent || ''}}</text> |
| | | </view>
|
| | | </view>
|
| | | <view class="details_content_item" v-if="info.projectsResponseList && info.projectsResponseList.length > 0">
|
| | | <view class="label">æå¡é¡¹</view>
|
| | | <view class="content" v-if="info.projectsResponseList && info.projectsResponseList.length > 0">
|
| | | <text v-for="(item, index) in info.projectsResponseList" :key="index">
|
| | | {{item.name}}<template v-if="index !== info.projectsResponseList.length - 1"> | </template>
|
| | | </text>
|
| | | </view>
|
| | | <view class="content" v-else>
|
| | | <text>æ æå¡é¡¹</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_content_item">
|
| | | <view class="label">éä»¶</view>
|
| | | <view class="list" v-if="info.multiFileList && info.multiFileList.length > 0">
|
| | | <view class="list_item" v-for="(item, index) in info.multiFileList" :key="index">
|
| | | <u--text mode="link" :text="item.name" :href="item.fileFullUrl + item.fileurl"></u--text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="content" v-else>
|
| | | <text>æ </text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_content_item" v-if="info.remark">
|
| | | <view class="label">夿³¨</view>
|
| | | <view class="content">
|
| | | <text>{{info.remark || ''}}</text> |
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_content">
|
| | | <view class="details_content_item">
|
| | | <view class="label">é¢çº¦äºº</view>
|
| | | <view class="content">
|
| | | <text>{{info.bookingUser.departmentName || ''}} {{info.bookingUser.realname || ''}} {{info.bookingUser.mobile || ''}}</text>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- å
é¨ç¨æ·èªå·±åå¸ -->
|
| | | <view class="details_footer" v-if="userInfo.id === info.bookingUser.id && userInfo.type === 0 && info.meetingStatus !== 3">
|
| | | <view class="details_footer_left">
|
| | | <view class="item" @click="copy" v-if="info.meetingStatus === 1 || info.meetingStatus === 2">
|
| | | <image src="@/static/meeting/icon/ic_copy@2x.png" mode="widthFix"></image>
|
| | | <text>å¤å¶</text>
|
| | | </view>
|
| | | <view class="item" @click="edit" v-if="info.meetingStatus === 1">
|
| | | <image src="@/static/meeting/icon/ic_edit@2x.png" mode="widthFix"></image>
|
| | | <text>ä¿®æ¹</text>
|
| | | </view>
|
| | | <view class="item" @click="closeRoom" v-if="info.meetingStatus === 1">
|
| | | <image src="@/static/meeting/icon/ic_cancel@2x.png" mode="widthFix"></image>
|
| | | <text>åæ¶</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_footer_right">
|
| | | <view class="btn1">
|
| | | <button open-type="share"></button>
|
| | | å享
|
| | | </view>
|
| | | <view class="btn2" @click="open" v-if="isShow">å¼é¨ç </view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- å
é¨ç¨æ·ä¸æ¯èªå·±åå¸ -->
|
| | | <view class="details_footer" v-else-if="userInfo.id !== info.bookingUser.id && userInfo.type === 0 && info.meetingStatus !== 3">
|
| | | <view class="details_footer_left">
|
| | | <view class="item" @click="copy" v-if="info.meetingStatus === 1 || info.meetingStatus === 2">
|
| | | <image src="@/static/meeting/icon/ic_copy@2x.png" mode="widthFix"></image>
|
| | | <text>å¤å¶</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="details_footer_right">
|
| | | <view class="btn1">
|
| | | <button open-type="share"></button>
|
| | | å享
|
| | | </view>
|
| | | <view class="btn2" @click="open" v-if="isShow">å¼é¨ç </view>
|
| | | </view>
|
| | | </view>
|
| | | <!-- 访客 -->
|
| | | <view class="details_footer" v-else-if="(!userInfo || userInfo.type === 1) && info.meetingStatus !== 3">
|
| | | <button class="details_footer_submit" v-if="!userInfo" open-type="getPhoneNumber" @getphonenumber="getphonenumber">æ¥çä¼è®®å®¤å¼é¨ç </button>
|
| | | <view class="details_footer_submit" v-else @click="open">æ¥çä¼è®®å®¤å¼é¨ç </view>
|
| | | </view>
|
| | | <view v-else></view>
|
| | | <!-- å¼é¨ç -->
|
| | | <view class="details_ma">
|
| | | <u-popup :show="show" :overlayStyle="{'touch-action':'none'}" :closeable="true" :safeAreaInsetBottom="false" :round="0" mode="center" @close="close">
|
| | | <view class="box" @touchmove.stop.prevent="preventHandle">
|
| | | <text class="box_a">{{info.roomName || ''}}</text>
|
| | | <text class="box_b" v-if="time > 0">äºç»´ç {{time}}ç§å
ææ</text>
|
| | | <text class="box_b" v-else>äºç»´ç å·²è¿æï¼è¯·ç¹å»äºç»´ç å·æ°</text>
|
| | | <view class="qrcode" @click="Refresh(1)">
|
| | | <image :src="qrurl" mode="widthFix"></image>
|
| | | </view>
|
| | | <text class="box_c">åºç¤ºè¯¥äºç»´ç ï¼æ«ç è¿å
¥ä¼è®®å®¤</text>
|
| | | <text class="box_d" v-if="info.roomUser">妿æä¸å¼è¯·è系管çåï¼</text>
|
| | | <text class="box_e" v-if="info.roomUser">{{info.roomUser.realname}} <template v-if="info.roomUser.mobile">{{info.roomUser.mobile}}</template></text>
|
| | | </view>
|
| | | </u-popup>
|
| | | </view>
|
| | |
|
| | | <u-modal
|
| | | :show="show1"
|
| | | title="æç¤º"
|
| | | content='æ¯å¦ç¡®è®¤åæ¶å½åä¼è®®'
|
| | | @confirm="confirm"
|
| | | @cancel="close1"
|
| | | ref="uModal"
|
| | | :showCancelButton="true"
|
| | | asyncClose="true"></u-modal>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { mapState, mapMutations } from 'vuex'
|
| | | import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | roomId: '',
|
| | | pageShow: false,
|
| | | show: false,
|
| | | show1: false,
|
| | | info: {},
|
| | | val: '',
|
| | | time: 0,
|
| | | link: '',
|
| | | qrurl: '',
|
| | | timer: null,
|
| | | timeValue: '',
|
| | | isShow: false,
|
| | | imageUrl: 'https://dmtest.ahapp.net/file/projects/20230511/13f256b832db4a4fadc5e6770f5727bf.png'
|
| | | };
|
| | | },
|
| | | components: { tkiQrcode },
|
| | | onLoad(options) {
|
| | | // æ«ç è¿å
¥
|
| | | if (options.scene) {
|
| | | console.log('æ«ç è¿å
¥')
|
| | | let scene = decodeURIComponent(options.scene);
|
| | | console.log(scene)
|
| | | let roomId = scene.substring(0, scene.indexOf('|'))
|
| | | this.roomId = roomId
|
| | | }
|
| | | // å享è¿å
¥
|
| | | if (options.shareId) {
|
| | | console.log('å享è¿å
¥')
|
| | | this.roomId = options.shareId
|
| | | }
|
| | | // æ£å¸¸è¿å
¥
|
| | | if (options.id) {
|
| | | this.roomId = options.id
|
| | | }
|
| | | this.getdesc()
|
| | | this.getSYSTEM()
|
| | | },
|
| | | computed: {
|
| | | ...mapState(['userInfo', 'token'])
|
| | | },
|
| | | onShareAppMessage({from,target}) {
|
| | | if (from == 'button') {
|
| | | return {
|
| | | title: this.info.meetingName,
|
| | | path: `/packagesMine/meetingDetails/meetingDetails?shareId=${this.info.id}`,
|
| | | imageUrl: this.imageUrl
|
| | | }
|
| | | }
|
| | | },
|
| | | methods: {
|
| | | ...mapMutations(["setToken", "setUserInfo"]),
|
| | | // å·æ°äºç»´ç
|
| | | Refresh(type) {
|
| | | if (this.time !== 0) return
|
| | | uni.showLoading({
|
| | | title: 'å è½½ä¸',
|
| | | mask: true
|
| | | });
|
| | | uni.request({
|
| | | url: `${this.$baseUrl}web/meeting/getQrCodeImg?id=${this.info.id}&token=${this.token}`,//urlå°å
|
| | | method: 'GET',
|
| | | responseType: 'arraybuffer',
|
| | | header: {
|
| | | 'Content-Type': 'application/json'
|
| | | },
|
| | | success: res => {
|
| | | const arrayBuffer = new Uint8Array(res.data)
|
| | | const base64 = "data:image/png;base64," + uni.arrayBufferToBase64(arrayBuffer) //è¿ééè¦æ·»å åç¼
|
| | | this.qrurl = base64
|
| | | if (type === 1) {
|
| | | this.time = Number(this.timeValue) * 60
|
| | | this.getTime()
|
| | | }
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | | }
|
| | | });
|
| | | },
|
| | | onChange(e) {
|
| | | this.timeData = e
|
| | | },
|
| | | preventHandle() {
|
| | | return
|
| | | },
|
| | | getTime() {
|
| | | this.timer = setInterval(() => {
|
| | | if (this.time === 0) {
|
| | | clearInterval(this.timer)
|
| | | this.timer = null
|
| | | this.time = 0
|
| | | return
|
| | | }
|
| | | this.time = this.time - 1
|
| | | }, 1000)
|
| | | },
|
| | | // 访客ç»å½è·åä¿¡æ¯
|
| | | getphonenumber(e) {
|
| | | var that = this
|
| | | if (e.detail.errMsg === 'getPhoneNumber:ok') {
|
| | | uni.login({
|
| | | provider: 'MP-WEIXIN',
|
| | | success: function (loginRes) {
|
| | | that.$u.api.visitorLogin({
|
| | | code: loginRes.code
|
| | | }).then(res => {
|
| | | if (res.data.code === 500) {
|
| | | that.$u.api.visitorWxPhone({
|
| | | encryptedData: e.detail.encryptedData,
|
| | | iv: e.detail.iv,
|
| | | openId: res.data.openId,
|
| | | sessionKey: res.data.sessionKey
|
| | | }).then(resa => {
|
| | | that.setToken(resa.data.token)
|
| | | that.setUserInfo(resa.data.systemUser)
|
| | | })
|
| | | } else {
|
| | | that.setToken(res.data.token)
|
| | | that.setUserInfo(res.data.systemUser)
|
| | | }
|
| | | })
|
| | | }
|
| | | });
|
| | | }
|
| | | },
|
| | | // 访客ç»å½
|
| | | wxlogin() {
|
| | | var that = this
|
| | | uni.login({
|
| | | provider: 'MP-WEIXIN',
|
| | | success: function (loginRes) {
|
| | | that.$u.api.visitorLogin({
|
| | | code: loginRes.code
|
| | | }).then(res => {
|
| | | that.setToken(res.data.token)
|
| | | that.setUserInfo(res.data.systemUser)
|
| | | })
|
| | | }
|
| | | });
|
| | | },
|
| | | getSYSTEM() {
|
| | | this.$u.api.getSystemDictData({
|
| | | dictCode: 'SYSTEM',
|
| | | label: 'QR_OPENBOOK_VALIDTIME'
|
| | | }).then(res => {
|
| | | // this.time = res.data.code
|
| | | this.time = Number(res.data.code) * 60
|
| | | this.timeValue = Number(res.data.code)
|
| | | })
|
| | | this.$u.api.getSystemDictData({
|
| | | dictCode: 'SYSTEM',
|
| | | label: 'H5_LINK_ADDR'
|
| | | }).then(res => {
|
| | | this.link = res.data.code
|
| | | })
|
| | | },
|
| | | edit() {
|
| | | if (this.info.meetingStatus !== 1) {
|
| | | uni.showToast({
|
| | | title: 'ä¼è®®ä¸å¯ç¼è¾',
|
| | | icon: "none",
|
| | | duration: 2000
|
| | | });
|
| | | return
|
| | | }
|
| | | uni.navigateTo({
|
| | | url: `/packagesMine/confirmAppointment/confirmAppointment?roomId=${this.info.roomId}&descid=${this.info.id}&timeList=${JSON.stringify(this.info.bookingTimeList)}`
|
| | | });
|
| | | },
|
| | | close1() {
|
| | | this.show1 = false
|
| | | },
|
| | | confirm() {
|
| | | var that = this
|
| | | that.$u.api.reservationCancel({
|
| | | id: that.roomId
|
| | | }).then(res => {
|
| | | that.show1 = false;
|
| | | if (res.code === 200) {
|
| | | that.getdesc()
|
| | | uni.navigateBack({
|
| | | delta: 1
|
| | | });
|
| | | }
|
| | | })
|
| | | },
|
| | | closeRoom() {
|
| | | this.show1 = true;
|
| | | },
|
| | | copy() {
|
| | | let val = `${this.info.bookingUser.realname} é请æ¨å å
¥ä¼è®®
|
| | | ä¼è®®ä¸»é¢ï¼${this.info.meetingName}
|
| | | ä¼è®®å®¤ï¼${this.info.roomName}
|
| | | ä¼è®®æ¶é´ï¼${this.info.meetingDate} ${this.info.meetingTime}
|
| | | ç¹å»é¾æ¥ç´æ¥å å
¥ä¼è®®ï¼
|
| | | ${this.link}?id=${this.info.id}`
|
| | | uni.setClipboardData({
|
| | | data: val,
|
| | | success: function () {
|
| | | uni.showToast({
|
| | | title: 'ä¼è®®ä¿¡æ¯å¤å¶æåï¼å»å享ç»åäºå§~',
|
| | | icon:'none',
|
| | | duration: 2000
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | | close() {
|
| | | this.pageShow = false
|
| | | this.show = false
|
| | | this.time = 0
|
| | | clearInterval(this.timer)
|
| | | this.timer = null
|
| | | uni.setScreenBrightness({
|
| | | value: 0.5,
|
| | | success: function () {
|
| | | console.log('success');
|
| | | }
|
| | | });
|
| | | },
|
| | | open() {
|
| | | var that = this
|
| | | this.time = 0
|
| | | |
| | | this.Refresh(2)
|
| | | |
| | | this.time = this.timeValue * 60
|
| | | this.getTime()
|
| | | |
| | | that.pageShow = true
|
| | |
|
| | | that.show = true
|
| | | uni.setScreenBrightness({
|
| | | value: 1,
|
| | | success: function () {
|
| | | console.log('success');
|
| | | }
|
| | | });
|
| | | },
|
| | | getQrCodes() {
|
| | | |
| | | },
|
| | | getdesc() {
|
| | | this.$u.api.meetingDetail({ id: this.roomId })
|
| | | .then(res => {
|
| | | this.info = res.data
|
| | | if (res.data.meetingStatus === 3) return
|
| | | res.data.userResponseList.forEach(item => {
|
| | | if (item.id === this.userInfo.id) {
|
| | | this.isShow = true
|
| | | }
|
| | | })
|
| | | if (!this.isShow && this.userInfo && this.userInfo.id) {
|
| | | uni.showToast({
|
| | | title: 'æ¨å·²ç»ä¸å¨å½åä¼è®®',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | }
|
| | | })
|
| | | },
|
| | | qrR(e) {
|
| | | console.log(e)
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .time {
|
| | | @include flex;
|
| | | align-items: center;
|
| | |
|
| | | &__custom {
|
| | | margin-top: 4px;
|
| | | width: 22px;
|
| | | height: 22px;
|
| | | background-color: $u-primary;
|
| | | border-radius: 4px;
|
| | | /* #ifndef APP-NVUE */
|
| | | display: flex;
|
| | | /* #endif */
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | |
| | | &__item {
|
| | | color: #fff;
|
| | | font-size: 12px;
|
| | | text-align: center;
|
| | | }
|
| | | }
|
| | | |
| | | &__doc {
|
| | | color: $u-primary;
|
| | | padding: 0px 4px;
|
| | | }
|
| | | |
| | | &__item {
|
| | | color: #606266;
|
| | | font-size: 15px;
|
| | | margin-right: 4px;
|
| | | }
|
| | | }
|
| | | </style>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .details {
|
| | | width: 100%;
|
| | | padding-bottom: calc(140rpx + env(safe-area-inset-bottom));
|
| | | .details_head {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | background-color: #ffffff;
|
| | | text {
|
| | | &:first-child {
|
| | | font-size: 36rpx;
|
| | | font-family: PingFangSC-Semibold, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | | &:last-child {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 30rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | .details_content {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #ffffff;
|
| | | margin-top: 20rpx;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | .details_content_item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | padding-bottom: 30rpx;
|
| | | margin-top: 30rpx;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | &:first-child {
|
| | | margin-top: 0 !important;
|
| | | }
|
| | | &:last-child {
|
| | | border: none !important;
|
| | | padding-bottom: 0 !important;
|
| | | }
|
| | | .label {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-bottom: 22rpx;
|
| | | }
|
| | | .list {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | .list_item {
|
| | | width: 100%;
|
| | | word-break: break-all;
|
| | | margin-bottom: 24rpx;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | }
|
| | | }
|
| | | }
|
| | | .content {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | flex-wrap: wrap;
|
| | | text {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | .details_footer {
|
| | | width: 100%;
|
| | | padding: 20rpx 30rpx calc(20rpx + env(safe-area-inset-bottom)) 30rpx;
|
| | | box-sizing: border-box;
|
| | | background-color: #ffffff;
|
| | | position: fixed;
|
| | | bottom: 0;
|
| | | left: 0;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | .details_footer_submit {
|
| | | width: 100%;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | text-align: center;
|
| | | background: #0055FF;
|
| | | border-radius: 4rpx;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | .details_footer_left {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | .item {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | margin-right: 40rpx;
|
| | | image {
|
| | | width: 44rpx;
|
| | | height: 44rpx;
|
| | | }
|
| | | text {
|
| | | font-size: 20rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 8rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | .details_footer_right {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | .btn1 {
|
| | | flex: 1;
|
| | | height: 72rpx;
|
| | | line-height: 72rpx;
|
| | | text-align: center;
|
| | | border-radius: 4rpx;
|
| | | border: 2rpx solid #0055FF;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | margin-right: 20rpx;
|
| | | overflow: hidden;
|
| | | position: relative;
|
| | | button {
|
| | | width: 100vw;
|
| | | height: 300rpx;
|
| | | position: absolute;
|
| | | top: -20rpx;
|
| | | left: -20rpx;
|
| | | background: rgba(0, 0, 0, 0);
|
| | | border: none;
|
| | | z-index: 2;
|
| | | }
|
| | | }
|
| | | .btn2 {
|
| | | flex: 1;
|
| | | height: 72rpx;
|
| | | line-height: 72rpx;
|
| | | text-align: center;
|
| | | background: #0055FF;
|
| | | box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
|
| | | border-radius: 4rpx;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | }
|
| | | }
|
| | | .details_ma /deep/ {
|
| | | .u-popup__content {
|
| | | width: 100%;
|
| | | .box {
|
| | | width: 100%;
|
| | | padding: 80rpx 0;
|
| | | box-sizing: border-box;
|
| | | background-color: #ffffff;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | flex-direction: column;
|
| | | .box_a {
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | font-size: 36rpx;
|
| | | font-family: PingFangSC-Semibold, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | | .box_b {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | margin-top: 40rpx;
|
| | | }
|
| | | .qrcode {
|
| | | width: 440rpx;
|
| | | height: 440rpx;
|
| | | margin-top: 40rpx;
|
| | | overflow: hidden;
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | .box_c {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | margin-top: 40rpx;
|
| | | }
|
| | | .box_d {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 32rpx;
|
| | | }
|
| | | .box_e {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | }
|
| | | </style>
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <view class="notice">
|
| | | <view class="notice_item" v-for="(item, index) in list" :key="index" @click="jump(item)">
|
| | | <view class="left">
|
| | | <view class="left_dian" v-if="item.status === 0"></view>
|
| | | <image src="@/static/meeting/icon/xiaoxi_ic_gonggao@2x.png" v-if="item.type === 1" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/xiaoxi_ic_gonggao@2x(1).png" v-else mode="widthFix"></image>
|
| | | </view>
|
| | | <view class="right">
|
| | | <view class="right_a">{{item.title}}</view>
|
| | | <view class="right_b" v-if="item.type === 1">
|
| | | <view class="right_b_label">ä¼è®®ä¸»é¢ï¼</view>
|
| | | <view class="right_b_val">{{item.meetingDetailResponse.meetingName}}</view>
|
| | | </view>
|
| | | <view class="right_b" v-if="item.type === 1">
|
| | | <view class="right_b_label">ä¼è®®æ¶é´ï¼</view>
|
| | | <view class="right_b_val">{{item.meetingDetailResponse.meetingDate}} {{item.meetingDetailResponse.meetingTime}}</view>
|
| | | </view>
|
| | | <view class="right_b" v-if="item.type === 1">
|
| | | <view class="right_b_label">ä¼è®®å®¤ï¼</view>
|
| | | <view class="right_b_val">{{item.meetingDetailResponse.roomName}}</view>
|
| | | </view>
|
| | | <view class="right_b" v-if="item.type === 1">
|
| | | <view class="right_b_label">é¢çº¦äººï¼</view>
|
| | | <view class="right_b_val">{{item.meetingDetailResponse.bookingUserName}}</view>
|
| | | </view>
|
| | | <view class="right_c" v-if="item.type !== 1">{{item.createDate}}</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | page: 0,
|
| | | next: false,
|
| | | list: []
|
| | | };
|
| | | },
|
| | | onLoad() {
|
| | | this.getList()
|
| | | },
|
| | | onReachBottom(){
|
| | | this.getList()
|
| | | },
|
| | | methods: {
|
| | | getList() {
|
| | | if (!this.next) {
|
| | | this.page = this.page + 1
|
| | | this.$u.api.findNoticePage({
|
| | | capacity: 20,
|
| | | model: {
|
| | | |
| | | },
|
| | | page: this.page
|
| | | }).then(res => {
|
| | | if (res.data.records.length > 0) {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | | }
|
| | | if (res.data.records.length < 20) {
|
| | | this.next = false
|
| | | }
|
| | | })
|
| | | }
|
| | | },
|
| | | jump(item) {
|
| | | var that = this
|
| | | if (item.type === 0) {
|
| | | uni.navigateTo({
|
| | | url: `/packagesMine/notificationDetails/notificationDetails?content=${item.id}`
|
| | | });
|
| | | } else {
|
| | | that.$u.api.getMemberDTO({ id: item.id })
|
| | | .then(res => {
|
| | | that.list.forEach(element => {
|
| | | if (element.id === item.id) {
|
| | | element.status = 1
|
| | | }
|
| | | })
|
| | | uni.navigateTo({
|
| | | url: `/packagesMine/meetingDetails/meetingDetails?id=${item.meetingDetailResponse.id}`
|
| | | });
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .notice {
|
| | | width: 100%;
|
| | | padding: 26rpx 30rpx;
|
| | | box-sizing: border-box;
|
| | | .notice_item {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | align-items: flex-start;
|
| | | justify-content: space-between;
|
| | | background-color: #fff;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | margin-bottom: 20rpx;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | }
|
| | | .left {
|
| | | flex-shrink: 0;
|
| | | width: 72rpx;
|
| | | height: 72rpx;
|
| | | position: relative;
|
| | | margin-right: 24rpx;
|
| | | .left_dian {
|
| | | position: absolute;
|
| | | right: 0;
|
| | | top: 0;
|
| | | width: 18rpx;
|
| | | height: 18rpx;
|
| | | background: #F62710;
|
| | | border: 2rpx solid #FFFFFF;
|
| | | border-radius: 50%;
|
| | | }
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | .right {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | .right_a {
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC-Medium, PingFang SC;
|
| | | font-weight: 500;
|
| | | color: #222222;
|
| | | margin-bottom: 24rpx;
|
| | | }
|
| | | .right_c {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | }
|
| | | .right_b {
|
| | | display: flex;
|
| | | align-items: flex-start;
|
| | | margin-bottom: 24rpx;
|
| | | &:last-child {
|
| | | margin-bottom: 0 !important;
|
| | | }
|
| | | .right_b_label {
|
| | | flex-shrink: 0;
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | }
|
| | | .right_b_val {
|
| | | flex: 1;
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </style>
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="details">
|
| | | <view class="details_head">
|
| | | <text>{{info.title}}</text>
|
| | | <text>{{info.createDate}}</text>
|
| | | </view> |
| | | <u-parse :content="content"></u-parse> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return {
|
| | | info: {}, |
| | | content: '' |
| | | }; |
| | | },
|
| | | onLoad(option) {
|
| | | this.$u.api.getNoticeDetail({ id: option.content })
|
| | | .then(res => {
|
| | | this.content = res.data.content
|
| | | this.info = res.data
|
| | | })
|
| | | } |
| | | } |
| | | </script> |
| | |
|
| | | <style>
|
| | | page {
|
| | | background-color: #ffffff;
|
| | | }
|
| | | </style>
|
| | | |
| | | <style lang="scss"> |
| | | .details {
|
| | | width: 100%;
|
| | | padding: 30rpx;
|
| | | box-sizing: border-box;
|
| | | .details_head {
|
| | | width: 100%;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | margin-bottom: 38rpx;
|
| | | text {
|
| | | &:first-child {
|
| | | font-size: 40rpx;
|
| | | font-family: PingFangSC-Medium, PingFang SC;
|
| | | font-weight: 500;
|
| | | color: #222222;
|
| | | }
|
| | | &:last-child {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #999999;
|
| | | margin-top: 30rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <view class="reservation">
|
| | | <view class="date">
|
| | | <view class="date_head">
|
| | | <image src="@/static/meeting/icon/ar_left@2x.png" mode="widthFix" @click="getPreviousDays" v-if="!disable"></image>
|
| | | <image src="@/static/meeting/icon/ar_left_disable.png" mode="widthFix" v-else></image>
|
| | | <text @click="openDate">{{date}}</text>
|
| | | <image src="@/static/meeting/icon/ar_right@2x.png" mode="widthFix" @click="getNextDays"></image>
|
| | | </view>
|
| | | <scroll-view scroll-x="true" class="date_cate">
|
| | | <view class="date_cate_item" v-for="(item, index) in roomList" :key="index" @click="clickRoom(index)">
|
| | | <text :class="i === index ? 'active' : ''">{{item.name}}</text>
|
| | | <view class="date_cate_item_h" v-show="i === index"></view>
|
| | | </view>
|
| | | </scroll-view>
|
| | | <view class="date_list">
|
| | | <view
|
| | | :style="{ background: item.active ? '#0055FF !important;' : '' }"
|
| | | :class="item.isUse ? 'date_list_item disable' : 'date_list_item'"
|
| | | v-for="(item, index) in timeList"
|
| | | :key="index"
|
| | | @click="clickTime(item, index)">
|
| | | <text :style="{ color: item.active ? '#fff !important;' : '' }">{{item.startTime}}-{{item.endTime}}</text>
|
| | | </view>
|
| | | <view class="date_list_item1"></view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="footer">
|
| | | <view class="footer_text">
|
| | | <view class="label">已鿩ï¼</view>
|
| | | <view class="content" v-if="selected.length > 0">{{roomList[i].name}}ï½{{selectedDate}}</view>
|
| | | </view>
|
| | | <view class="footer_submit">
|
| | | <view class="footer_submit_left">
|
| | | <view class="footer_submit_left_item">
|
| | | <view class="item_hz"></view>
|
| | | <text>已鿩</text>
|
| | | </view>
|
| | | <view class="footer_submit_left_item">
|
| | | <view class="item_hz ke"></view>
|
| | | <text>å¯é¢çº¦</text>
|
| | | </view>
|
| | | <view class="footer_submit_left_item">
|
| | | <view class="item_hz bu"></view>
|
| | | <text>ä¸å¯é¢çº¦</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="footer_submit_right" @click="submit">
|
| | | 确认é¢çº¦
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <u-calendar :defaultDate="defaultDateMultiple" :show="dateShow" @confirm="selectDate" @close="closeDate"></u-calendar>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { getDay, getPreviousDay, getNowDate } from '@/utils/utils.js'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | i: 0,
|
| | | date: '',
|
| | | stringDate: '',
|
| | | number: 0,
|
| | | selected: [],
|
| | | roomList: [],
|
| | | timeList: [],
|
| | | |
| | | status: 0,
|
| | | startnum: '',
|
| | | endnum: '',
|
| | | |
| | | dateShow: false,
|
| | | time: '',
|
| | | |
| | | disable: true,
|
| | | defaultDateMultiple: []
|
| | | };
|
| | | },
|
| | | onLoad() {
|
| | | this.date = getDay().today
|
| | | this.stringDate = getDay().date
|
| | | this.defaultDateMultiple = [getDay().date]
|
| | | this.getList()
|
| | | },
|
| | | computed: {
|
| | | selectedDate() {
|
| | | if (this.selected.length > 0) {
|
| | | let start = this.selected[0].date.substring(0, 5)
|
| | | let end = this.selected[this.selected.length - 1].date.substring(6, 11)
|
| | | return `${start}-${end}`
|
| | | }
|
| | | return ''
|
| | | }
|
| | | },
|
| | | methods: {
|
| | | closeDate() {
|
| | | this.dateShow = false
|
| | | },
|
| | | selectDate(e) {
|
| | | this.number = 0
|
| | | this.disable = false
|
| | | this.time = getPreviousDay(this.number, e[0]).date
|
| | | this.date = getPreviousDay(this.number, e[0]).today
|
| | | this.stringDate = getPreviousDay(this.number, e[0]).date
|
| | | this.defaultDateMultiple = [getPreviousDay(this.number, e[0]).date]
|
| | | this.getOpeningHours()
|
| | | this.dateShow = false
|
| | | },
|
| | | openDate() {
|
| | | this.dateShow = true
|
| | | },
|
| | | submit() {
|
| | | if (this.selected.length === 0) {
|
| | | uni.showToast({
|
| | | title: '请å
éæ©é¢çº¦æ¶é´',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | return
|
| | | }
|
| | | let time = `${this.date.substring(0, 11)} ${this.selectedDate}`
|
| | | let timeList = JSON.stringify(this.selected)
|
| | | let startTime = `${this.stringDate} ${this.selectedDate.substring(0, 5)}`
|
| | | let endTime = `${this.stringDate} ${this.selectedDate.substring(6, 11)}`
|
| | | uni.navigateTo({
|
| | | url: `/packagesMine/confirmAppointment/confirmAppointment?endTime=${endTime}&startTime=${startTime}&id=${this.roomList[this.i].id}&time=${time}&list=${timeList}`
|
| | | });
|
| | | },
|
| | | // 鿩弿¾æ¶é´
|
| | | clickTime(obj, index) {
|
| | | if (obj.status === 1) return
|
| | | |
| | | if (this.status === 0) {
|
| | | this.timeList.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | this.selected = []
|
| | | this.timeList[index].active = !this.timeList[index].active
|
| | | this.startnum = index
|
| | | this.status = 1
|
| | | } else if (this.status === 1) {
|
| | | this.endnum = index
|
| | | |
| | | let startnum = ''
|
| | | let endnum = ''
|
| | | |
| | | if (this.startnum > this.endnum) {
|
| | | startnum = this.startnum
|
| | | endnum = this.endnum
|
| | | } else {
|
| | | startnum = this.endnum
|
| | | endnum = this.startnum
|
| | | }
|
| | | for (let i = 0; i < this.timeList.length; i++) {
|
| | | if (i <= startnum && i >= endnum) {
|
| | | if (this.timeList[i].isUse) {
|
| | | uni.showToast({
|
| | | title: 'æéæ¥æå
å«ä¸å¯éæ¥æ',
|
| | | icon: 'none',
|
| | | duration: 2000
|
| | | });
|
| | | this.status = 0
|
| | | return
|
| | | }
|
| | | }
|
| | | }
|
| | | this.timeList.forEach((element, i) => {
|
| | | if (i <= startnum && i >= endnum) {
|
| | | element.active = true
|
| | | this.selected.push({date: `${element.startTime}-${element.endTime}`, timeId: element.id, id: element.bookingTimeId})
|
| | | } else {
|
| | | element.active = false
|
| | | }
|
| | | })
|
| | | this.status = 0
|
| | | }
|
| | | },
|
| | | // ä¼è®®å®¤å¼æ¾æ¶é´
|
| | | getOpeningHours() {
|
| | | this.$u.api.getRoomUseTime({ |
| | | roomId: this.roomList[this.i].id,
|
| | | yudingDate: this.stringDate
|
| | | }).then(res => {
|
| | | res.data.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | this.timeList = res.data
|
| | | })
|
| | | },
|
| | | // 忢ä¼è®®å®¤
|
| | | clickRoom(i) {
|
| | | this.i = i
|
| | | this.status = 0
|
| | | this.selected = []
|
| | | this.timeList = []
|
| | | this.getOpeningHours()
|
| | | },
|
| | | getList() {
|
| | | this.$u.api.roomsList()
|
| | | .then(res => {
|
| | | if (res.data.length > 0) {
|
| | | this.roomList = res.data
|
| | | this.getOpeningHours()
|
| | | }
|
| | | })
|
| | | },
|
| | | // ä¸ä¸å¤©æ¥æ
|
| | | getPreviousDays() {
|
| | | if (this.disable) true
|
| | | if (getPreviousDay(1, this.stringDate).date === getDay().date) {
|
| | | this.disable = true
|
| | | } else {
|
| | | this.disable = false
|
| | | }
|
| | | this.number = this.number + 1
|
| | | this.date = getPreviousDay(this.number, this.time ? this.time : '').today
|
| | | this.stringDate = getPreviousDay(this.number, this.time ? this.time : '').date
|
| | | this.defaultDateMultiple = [getPreviousDay(this.number, this.time ? this.time : '').date]
|
| | | this.getOpeningHours()
|
| | | },
|
| | | // ä¸ä¸è·³æ¥æ
|
| | | getNextDays() {
|
| | | this.disable = false
|
| | | this.number = this.number - 1
|
| | | this.date = getPreviousDay(this.number, this.time ? this.time : '').today
|
| | | this.stringDate = getPreviousDay(this.number, this.time ? this.time : '').date
|
| | | this.defaultDateMultiple = [getPreviousDay(this.number, this.time ? this.time : '').date]
|
| | | this.getOpeningHours()
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style>
|
| | | page {
|
| | | background-color: #ffffff !important;
|
| | | }
|
| | | </style>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .reservation {
|
| | | width: 100%;
|
| | | padding-bottom: calc(env(safe-area-inset-bottom) + 160rpx);
|
| | | .date {
|
| | | width: 100%;
|
| | | padding: 30rpx 0;
|
| | | box-sizing: border-box;
|
| | | .date_head {
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | image {
|
| | | width: 30rpx;
|
| | | height: 30rpx;
|
| | | }
|
| | | text {
|
| | | font-size: 32rpx;
|
| | | font-family: PingFangSC-Semibold, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | margin: 0 40rpx
|
| | | }
|
| | | }
|
| | | .date_cate {
|
| | | white-space: nowrap;
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | // padding-bottom: 32rpx;
|
| | | height: 70rpx;
|
| | | box-sizing: border-box;
|
| | | margin-top: 62rpx;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | .date_cate_item {
|
| | | display: inline-block;
|
| | | margin-right: 54rpx;
|
| | | position: relative;
|
| | | &:last-child {
|
| | | margin-right: 0 !important;
|
| | | }
|
| | | .date_cate_item_h {
|
| | | position: absolute;
|
| | | bottom: -30rpx;
|
| | | left: 50%;
|
| | | transform: translate(-50%, 0);
|
| | | width: 60rpx;
|
| | | height: 10rpx;
|
| | | background-color: #0055FF;
|
| | | }
|
| | | .active {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Semibold, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #0055FF;
|
| | | }
|
| | | text {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | }
|
| | | .date_list {
|
| | | width: 100%;
|
| | | padding: 28rpx 30rpx;
|
| | | box-sizing: border-box;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | flex-wrap: wrap;
|
| | | .date_list_item1 {
|
| | | width: 220rpx;
|
| | | height: 0;
|
| | | }
|
| | | .active {
|
| | | background: #0055FF !important;
|
| | | text {
|
| | | color: #FFFFFF !important;
|
| | | }
|
| | | }
|
| | | .disable {
|
| | | background: #CCCCCC !important;
|
| | | text {
|
| | | color: #999999 !important;
|
| | | }
|
| | | }
|
| | | .date_list_item {
|
| | | width: 220rpx;
|
| | | height: 80rpx;
|
| | | background: #F7F7F7;
|
| | | border-radius: 4rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | margin-bottom: 24rpx;
|
| | | text {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | .footer {
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | box-sizing: border-box;
|
| | | // height: 100rpx;
|
| | | background: #FFFFFF;
|
| | | // box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
|
| | | position: fixed;
|
| | | bottom: 0;
|
| | | padding-bottom: env(safe-area-inset-bottom);
|
| | | flex-direction: column;
|
| | | .footer_text {
|
| | | width: 100%;
|
| | | height: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | margin-bottom: 30rpx;
|
| | | .label {
|
| | | flex-shrink: 0;
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | margin-right: 20rpx;
|
| | | }
|
| | | .content {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | }
|
| | | }
|
| | | .footer_submit {
|
| | | width: 100%;
|
| | | height: 100rpx;
|
| | | box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | .footer_submit_left {
|
| | | flex: 1;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | .footer_submit_left_item {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | margin-right: 20rpx;
|
| | | &:last-child {
|
| | | margin-right: 0 !important;
|
| | | }
|
| | | .item_hz {
|
| | | width: 32rpx;
|
| | | height: 32rpx;
|
| | | background: #0055FF;
|
| | | border-radius: 4rpx;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | | .ke {
|
| | | background: #F7F7F7 !important;
|
| | | }
|
| | | .bu {
|
| | | background: #CCCCCC !important; |
| | | }
|
| | | text {
|
| | | font-size: 26rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | }
|
| | | .footer_submit_right {
|
| | | flex-shrink: 0;
|
| | | width: 184rpx;
|
| | | height: 72rpx;
|
| | | line-height: 72rpx;
|
| | | text-align: center;
|
| | | background: #0055FF;
|
| | | box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
|
| | | border-radius: 4rpx;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </style>
|
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template>
|
| | | <view class="select">
|
| | | <view class="select_input">
|
| | | <view class="select_input_box">
|
| | | <u--input
|
| | | placeholder="æç´¢é¨é¨/人å"
|
| | | prefixIcon="search"
|
| | | v-model="keyword"
|
| | | @confirm="confirm"
|
| | | prefixIconStyle="font-size: 26rpx;color: #B2B2B2"
|
| | | ></u--input>
|
| | | </view>
|
| | | </view>
|
| | | <view class="select_list" v-if="list && list.length > 0">
|
| | | <view class="select_list_item" v-for="(item, index) in list" :key="index" @click="clickItem(index)">
|
| | | <view class="left">
|
| | | <view class="left_img">
|
| | | <image :src="item.prefixUrl + item.avatar" mode="widthFix" v-if="item.avatar"></image>
|
| | | <view class="left_img_t">{{ item.realname.substring(0, 1) }}</view>
|
| | | </view>
|
| | | <view class="left_info">
|
| | | <view class="left_info_top">
|
| | | <text>{{item.realname}}</text>
|
| | | <text v-if="item.status === 1">æä¼è®®</text>
|
| | | </view>
|
| | | <view class="left_info_bm">{{item.departmentName}}</view>
|
| | | </view>
|
| | | </view>
|
| | | <image class="xuan" v-if="!item.active" src="@/static/meeting/icon/ic_choose@2x.png" mode="widthFix"></image>
|
| | | <image class="xuan" v-else src="@/static/meeting/icon/ic_choose_sel@2x.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="select_list" v-else>
|
| | | <view class="select_list_wu">
|
| | | <image src="@/static/meeting/common/364.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="select_zw"></view>
|
| | | <view class="select_footer">
|
| | | <view class="footer_top">
|
| | | <view class="footer_top_label">已鿩ï¼</view>
|
| | | <view class="footer_top_content">
|
| | | {{users}}
|
| | | </view>
|
| | | <image @click="show = true" src="@/static/meeting/icon/renyuan_ic_open@2x.png" mode="widthFix"></image>
|
| | | </view>
|
| | | <view class="footer_btn" @click="go">确认({{selected.length}}/{{list.length}})</view>
|
| | | </view>
|
| | | <u-popup :show="show" :round="20" mode="bottom" @close="show = false">
|
| | | <view class="select_box">
|
| | | <view class="select_box_head">
|
| | | <text>已鿩ï¼{{selected.length}}人</text>
|
| | | <text @click="show = false">确认</text>
|
| | | </view>
|
| | | <scroll-view scroll-y="true" class="select_box_list">
|
| | | <view class="select_box_list_item" v-for="(item, index) in selected" :key="index">
|
| | | <view class="left">
|
| | | <view class="left_img">
|
| | | <image :src="item.prefixUrl + item.avatar" mode="widthFix" v-if="item.avatar"></image>
|
| | | <view class="left_img_t" v-else>{{ item.realname.substring(0, 1) }}</view>
|
| | | </view>
|
| | | <view class="left_info">
|
| | | <text>{{item.realname}}</text>
|
| | | <text>{{item.departmentName}}</text>
|
| | | </view>
|
| | | </view>
|
| | | <view class="dele" @click="dele(index)">ç§»é¤</view>
|
| | | </view>
|
| | | </scroll-view>
|
| | | </view>
|
| | | </u-popup>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | show: false,
|
| | | next: false,
|
| | | page: 0,
|
| | | list: [],
|
| | | keyword: '',
|
| | | selectedName: [],
|
| | | selectedIds: [],
|
| | | selected: [],
|
| | | |
| | | startTime: '',
|
| | | endTime: ''
|
| | | };
|
| | | },
|
| | | onLoad(option) {
|
| | | this.startTime = option.startTime
|
| | | this.endTime = option.endTime
|
| | | this.getList()
|
| | | },
|
| | | computed: {
|
| | | users() {
|
| | | return this.selectedName.join('ï¼')
|
| | | }
|
| | | },
|
| | | methods: {
|
| | | go() {
|
| | | uni.$emit('user', { userList: this.selectedIds, usersName: this.users })
|
| | | uni.navigateBack({
|
| | | delta: 1
|
| | | });
|
| | | },
|
| | | dele(i) {
|
| | | this.list.forEach(item => {
|
| | | if (item.id === this.selectedIds[i].userId) {
|
| | | item.active = false
|
| | | }
|
| | | })
|
| | | this.selectedName.splice(i, 1)
|
| | | this.selectedIds.splice(i, 1)
|
| | | this.selected.splice(i, 1)
|
| | | },
|
| | | confirm() {
|
| | | this.list = []
|
| | | this.next = false
|
| | | this.page = 0
|
| | | this.getList()
|
| | | },
|
| | | clickItem(i) {
|
| | | this.selectedName = []
|
| | | this.selectedIds = []
|
| | | this.selected = []
|
| | | this.list[i].active = !this.list[i].active
|
| | | this.list.forEach(item => {
|
| | | if (item.active) {
|
| | | this.selectedName.unshift(item.realname)
|
| | | this.selectedIds.unshift({ userId: item.id })
|
| | | this.selected.unshift(item)
|
| | | }
|
| | | })
|
| | | },
|
| | | getList() {
|
| | | if (!this.next) {
|
| | | this.$u.api.userPage({
|
| | | capacity: 20,
|
| | | page: this.page,
|
| | | model: {
|
| | | keyword: this.keyword,
|
| | | startTime: this.startTime,
|
| | | endTime: this.endTime
|
| | | }
|
| | | }).then(res => {
|
| | | if (res.data.records.length > 0) {
|
| | | res.data.records.forEach(item => {
|
| | | item.active = false
|
| | | })
|
| | | this.list = [...this.list, ...res.data.records]
|
| | | this.page = this.page + 1
|
| | | }
|
| | | if (res.data.records.length < 20) {
|
| | | this.next = true
|
| | | }
|
| | | })
|
| | | }
|
| | | }
|
| | | },
|
| | | onReachBottom(){
|
| | | this.getList()
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style>
|
| | | page {
|
| | | background-color: #fff !important;
|
| | | }
|
| | | </style>
|
| | |
|
| | | <style lang="scss" scoped>
|
| | | .select {
|
| | | width: 100%;
|
| | | .select_input {
|
| | | width: 100%;
|
| | | position: sticky;
|
| | | top: 0;
|
| | | padding: 20rpx 30rpx;
|
| | | box-sizing: border-box;
|
| | | background: #ffffff;
|
| | | .select_input_box /deep/ {
|
| | | width: 100%;
|
| | | background: #F7F7F7;
|
| | | .u-border {
|
| | | border: none !important;
|
| | | }
|
| | | }
|
| | | }
|
| | | .select_list {
|
| | | width: 100%;
|
| | | padding: 0 30rpx;
|
| | | margin-top: 16rpx;
|
| | | box-sizing: border-box;
|
| | | .select_list_wu {
|
| | | width: 100%;
|
| | | margin-top: 50rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | image {
|
| | | width: 340rpx;
|
| | | height: 364rpx;
|
| | | }
|
| | | }
|
| | | .select_list_item {
|
| | | width: 100%;
|
| | | height: 138rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | .left {
|
| | | display: flex;
|
| | | align-items: flex-start;
|
| | | .left_img {
|
| | | width: 64rpx;
|
| | | height: 64rpx;
|
| | | margin-right: 20rpx;
|
| | | border-radius: 50%;
|
| | | overflow: hidden;
|
| | | .left_img_t {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | background-color: #0055FF;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | .left_info {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | .left_info_top {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | text {
|
| | | &:nth-child(1) {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | | &:nth-child(2) {
|
| | | padding: 8rpx;
|
| | | border-radius: 4rpx;
|
| | | border: 1rpx solid #F62710;
|
| | | font-size: 22rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #F62710;
|
| | | }
|
| | | }
|
| | | }
|
| | | .left_info_bm {
|
| | | font-size: 24rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 16rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | .xuan {
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | .select_zw {
|
| | | width: 100%;
|
| | | height: calc(198rpx + env(safe-area-inset-bottom));
|
| | | }
|
| | | .select_footer {
|
| | | width: 100%;
|
| | | position: fixed;
|
| | | bottom: 0;
|
| | | box-sizing: border-box;
|
| | | padding: 22rpx 30rpx calc(22rpx + env(safe-area-inset-bottom)) 30rpx;
|
| | | background: #FFFFFF;
|
| | | box-shadow: 0rpx 0rpx 6rpx 0rpx #B2B2B2;
|
| | | .footer_top {
|
| | | width: 100%;
|
| | | height: 44rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | .footer_top_label {
|
| | | flex-shrink: 0;
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | .footer_top_content {
|
| | | flex: 1;
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | overflow:hidden;
|
| | | white-space: nowrap;
|
| | | text-overflow: ellipsis;
|
| | | -o-text-overflow:ellipsis;
|
| | | }
|
| | | image {
|
| | | width: 44rpx;
|
| | | height: 44rpx;
|
| | | }
|
| | | }
|
| | | .footer_btn {
|
| | | width: 100%;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | text-align: center;
|
| | | background: #0055FF;
|
| | | border-radius: 4rpx;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | margin-top: 22rpx;
|
| | | }
|
| | | }
|
| | | .select_box {
|
| | | width: 100%;
|
| | | padding: 40rpx 30rpx;
|
| | | box-sizing: border-box;
|
| | | .select_box_head {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | margin-bottom: 40rpx;
|
| | | text {
|
| | | &:first-child {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Semibold, PingFang SC;
|
| | | font-weight: 600;
|
| | | color: #222222;
|
| | | }
|
| | | &:last-child {
|
| | | font-size: 28rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #0055FF;
|
| | | }
|
| | | }
|
| | | }
|
| | | .select_box_list {
|
| | | width: 100%;
|
| | | max-height: 700rpx;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | .select_box_list_item {
|
| | | width: 100%;
|
| | | height: 134rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | .left {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | .left_img {
|
| | | width: 64rpx;
|
| | | height: 64rpx;
|
| | | margin-right: 20rpx;
|
| | | border-radius: 50%;
|
| | | overflow: hidden;
|
| | | .left_img_t {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | background-color: #0055FF;
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | .left_info {
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | text {
|
| | | &:first-child {
|
| | | font-size: 30rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #222222;
|
| | | }
|
| | | &:last-child {
|
| | | font-size: 24rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #666666;
|
| | | margin-top: 20rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | .dele {
|
| | | width: 80rpx;
|
| | | height: 48rpx;
|
| | | line-height: 48rpx;
|
| | | text-align: center;
|
| | | border-radius: 4rpx;
|
| | | border: 1rpx solid #999999;
|
| | | font-size: 24rpx;
|
| | | font-family: PingFangSC-Regular, PingFang SC;
|
| | | font-weight: 400;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </style>
|
| | |
| | | }, |
| | | "pages": [ |
| | | { |
| | | "path" : "pages/notice/notice", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "å
¥åºé¡»ç¥", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/notice/notice", |
| | | "style": { |
| | | "navigationBarTitleText": "å
¥åºé¡»ç¥", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/index/index", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "åææ°è½æº", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "åææ°è½æº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/login/login", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "ç»å½", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/login/login", |
| | | "style": { |
| | | "navigationBarTitleText": "ç»å½", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/answer/answer", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "çé¢", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/answer/answer", |
| | | "style": { |
| | | "navigationBarTitleText": "çé¢", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/userinfo/userinfo", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "个人信æ¯", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/userinfo/userinfo", |
| | | "style": { |
| | | "navigationBarTitleText": "个人信æ¯", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/visitorApplication/visitorApplication", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "访客ç³è¯·", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/visitorApplication/visitorApplication", |
| | | "style": { |
| | | "navigationBarTitleText": "访客ç³è¯·", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/visitorApproval/visitorApproval", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "访客审æ¹", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/visitorApproval/visitorApproval", |
| | | "style": { |
| | | "navigationBarTitleText": "访客审æ¹", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/laborApplication/laborApplication", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "å³å¡ç³è¯·", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/laborApplication/laborApplication", |
| | | "style": { |
| | | "navigationBarTitleText": "å³å¡ç³è¯·", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/applicationRecord/applicationRecord", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "ç³è¯·è®°å½", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/applicationRecord/applicationRecord", |
| | | "style": { |
| | | "navigationBarTitleText": "ç³è¯·è®°å½", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/personnel/personnel", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "人å管ç", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/personnel/personnel", |
| | | "style": { |
| | | "navigationBarTitleText": "人å管ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/newPersonnel/newPersonnel", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "æ°å¢äººå", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/newPersonnel/newPersonnel", |
| | | "style": { |
| | | "navigationBarTitleText": "æ°å¢äººå", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/changePassword/changePassword", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "ä¿®æ¹å¯ç ", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/changePassword/changePassword", |
| | | "style": { |
| | | "navigationBarTitleText": "ä¿®æ¹å¯ç ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/appointmentDetails/appointmentDetails", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "é¢çº¦è¯¦æ
", |
| | | "enablePullDownRefresh" : false |
| | | "path": "pages/appointmentDetails/appointmentDetails", |
| | | "style": { |
| | | "navigationBarTitleText": "é¢çº¦è¯¦æ
", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/cropping/cropping", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "å¾çè£åª", |
| | | "enablePullDownRefresh" : false, |
| | | "path": "pages/cropping/cropping", |
| | | "style": { |
| | | "navigationBarTitleText": "å¾çè£åª", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | // ä¼è®®å®¤ |
| | | { |
| | | "path": "pages/meeting/index/index", |
| | | "style": { |
| | | "navigationStyle": "custom", |
| | | "mp-alipay": { |
| | | "transparentTitle": "always", |
| | | "titlePenetrate": "YES" |
| | | }, |
| | | "app-plus": { |
| | | "bounce": "none" |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/mine/mine", |
| | | "style": { |
| | | "navigationStyle": "custom", |
| | | "navigationBarTextStyle": "white", |
| | | "navigationBarTitleText": "æç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/login/login", |
| | | "style": { |
| | | "navigationStyle": "custom", |
| | | "navigationBarTitleText": "ç»å½", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/personal/personal", |
| | | "style": { |
| | | "navigationBarTitleText": "ä¸ªäººèµæ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/myAppointment/myAppointment", |
| | | "style": { |
| | | "navigationBarTitleText": "æé¢çº¦çä¼è®®å®¤", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/manage/manage", |
| | | "style": { |
| | | "navigationBarTitleText": "æç®¡ççä¼è®®å®¤", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/meeting/changePassword/changePassword", |
| | | "style": { |
| | | "navigationBarTitleText": "ä¿®æ¹å¯ç ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | } |
| | | ], |
| | | "subPackages": [ |
| | | "subPackages": [ |
| | | { |
| | | "root": "n_pages", |
| | | "pages": [ |
| | | { |
| | | "path": "login/login", |
| | | "style": { |
| | | "navigationBarTitleText" : "ç»å½", |
| | | "enablePullDownRefresh" : false, |
| | | "navigationBarTitleText": "ç»å½", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path": "index/index", |
| | | "style": { |
| | | "navigationBarTitleText" : "åææ°è½æº", |
| | | "enablePullDownRefresh" : false, |
| | | "navigationBarTitleText": "åææ°è½æº", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "applicationRecord/applicationRecord", |
| | | "path": "applicationRecord/applicationRecord", |
| | | "style": { |
| | | "navigationBarTitleText" : "ç³è¯·è®°å½", |
| | | "enablePullDownRefresh" : false, |
| | | "navigationBarTitleText": "ç³è¯·è®°å½", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "visitorApproval/visitorApproval", |
| | | "path": "visitorApproval/visitorApproval", |
| | | "style": { |
| | | "navigationBarTitleText" : "访客审æ¹", |
| | | "enablePullDownRefresh" : false, |
| | | "navigationBarTitleText": "访客审æ¹", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "visitorApplication/visitorApplication", |
| | | "path": "visitorApplication/visitorApplication", |
| | | "style": { |
| | | "navigationBarTitleText" : "访客ç³è¯·", |
| | | "enablePullDownRefresh" : false, |
| | | "navigationBarTitleText": "访客ç³è¯·", |
| | | "enablePullDownRefresh": false, |
| | | "navigationStyle": "custom" |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "root": "packagesMine", |
| | | "name": "mine", |
| | | "pages": [ |
| | | { |
| | | "path": "notice/notice", |
| | | "style": { |
| | | "navigationBarTitleText": "éç¥", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "notificationDetails/notificationDetails", |
| | | "style": { |
| | | "navigationBarTitleText": "éç¥è¯¦æ
", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "meetingDetails/meetingDetails", |
| | | "style": { |
| | | "navigationBarTitleText": "ä¼è®®è¯¦æ
", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "reservation/reservation", |
| | | "style": { |
| | | "navigationBarTitleText": "é¢çº¦", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "confirmAppointment/confirmAppointment", |
| | | "style": { |
| | | "navigationBarTitleText": "确认é¢çº¦", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "selectPersonnel/selectPersonnel", |
| | | "style": { |
| | | "navigationBarTitleText": "éæ©äººå", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | } |
| | | ] |
| | |
| | | "backgroundColor": "#ffffff" |
| | | }, |
| | | "uniIdRouter": {} |
| | | } |
| | | } |
| | |
| | | <template>
|
| | | <view class="container">
|
| | | <!-- èªå®ä¹å¤´é¨ --> |
| | | <!-- èªå®ä¹å¤´é¨ -->
|
| | | <navigation Title="æºè½ä¼è®®å®¤"></navigation>
|
| | | <you-scroll ref="scroll" @onPullDown="onPullDown" @More="More">
|
| | | <!-- éç¥å
Œ -->
|
| | | <view class="container_a" @click="jump">
|
| | | <view class="container_a_left">
|
| | | <image src="@/static/icon/home_ic_notice@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/home_ic_notice@2x.png" mode="widthFix"></image>
|
| | | </view>
|
| | | <view class="container_a_right">
|
| | | <text>{{news.title}}</text>
|
| | |
| | | </view>
|
| | | <view class="container_c_head_right" @click="show = true">
|
| | | <text>{{roomName.length > 10 ? roomName.substring(0, 8) + '...' : roomName}}</text>
|
| | | <image src="@/static/icon/ar_open@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/ar_open@2x.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="container_c_list" v-if="list && list.length > 0">
|
| | |
| | | </view>
|
| | | <view class="container_c_list" v-else>
|
| | | <view class="container_c_list_wu">
|
| | | <image src="@/static/common/364.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/common/364.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | </style> |
| | | </style>
|
| | |
| | | <template>
|
| | | <page-meta :page-style="'overflow:'+(pageShow?'hidden':'visible')"></page-meta> |
| | | <view class="manage"> |
| | | <page-meta :page-style="'overflow:'+(pageShow?'hidden':'visible')"></page-meta>
|
| | | <view class="manage">
|
| | | <view class="manage_head">
|
| | | <view class="manage_head_input">
|
| | | <u--input
|
| | |
| | | <view class="top_left_content">
|
| | | <text>{{item.name}}</text>
|
| | | <view class="top_left_content_time">
|
| | | <image src="@/static/icon/ic_time@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/ic_time@2x.png" mode="widthFix"></image>
|
| | | <text>{{item.startTime}}-{{item.endTime}}</text>
|
| | | </view>
|
| | | </view>
|
| | |
| | |
|
| | | <view class="manage_list" v-else>
|
| | | <view class="manage_list_wu">
|
| | | <image src="@/static/common/364.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/common/364.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | |
| | | </view>
|
| | | </u-popup>
|
| | | </view>
|
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { mapState } from 'vuex' |
| | | export default { |
| | | data() { |
| | | return { |
| | | import { mapState } from 'vuex'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | value: '',
|
| | | next: false,
|
| | | list: [],
|
| | |
| | | qrurl: '',
|
| | | id: '',
|
| | | pageShow: false,
|
| | | icon: require('@/static/common/123.png') |
| | | }; |
| | | icon: require('@/static/meeting/common/123.png')
|
| | | };
|
| | | },
|
| | | onLoad() {
|
| | | this.getList()
|
| | |
| | | })
|
| | | }
|
| | | }
|
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .manage {
|
| | | width: 100%;
|
| | | .details_ma /deep/ {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | </style> |
| | | }
|
| | | </style>
|
| | |
| | | data() {
|
| | | return {
|
| | | backgroundImage: 'https://dmtest.ahapp.net/file/projects/20230511/7d1f149816e24e68bb2df9011be53990.png',
|
| | | avatar: require('@/static/common/default_user@2x.png'),
|
| | | avatar: require('@/static/meeting/common/default_user@2x.png'),
|
| | | list: [
|
| | | { name: 'ä¸ªäººèµæ', path: '/pages/personal/personal', icon: require('@/static/icon/wd_ic_ziliao@2x.png') },
|
| | | { name: 'æé¢çº¦çä¼è®®å®¤', path: '/pages/myAppointment/myAppointment', icon: require('@/static/icon/wd_ic_yuyue@2x.png') },
|
| | | { name: 'æç®¡ççä¼è®®å®¤', path: '/pages/manage/manage', icon: require('@/static/icon/wd_ic_guanli@2x.png') },
|
| | | { name: 'ä¿®æ¹å¯ç ', path: '/pages/changePassword/changePassword', icon: require('@/static/icon/wd_ic_mima@2x.png') }
|
| | | { name: 'ä¸ªäººèµæ', path: '/pages/personal/personal', icon: require('@/static/meeting/icon/wd_ic_ziliao@2x.png') },
|
| | | { name: 'æé¢çº¦çä¼è®®å®¤', path: '/pages/myAppointment/myAppointment', icon: require('@/static/meeting/icon/wd_ic_yuyue@2x.png') },
|
| | | { name: 'æç®¡ççä¼è®®å®¤', path: '/pages/manage/manage', icon: require('@/static/meeting/icon/wd_ic_guanli@2x.png') },
|
| | | { name: 'ä¿®æ¹å¯ç ', path: '/pages/changePassword/changePassword', icon: require('@/static/meeting/icon/wd_ic_mima@2x.png') }
|
| | | ]
|
| | | }
|
| | | },
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | </style> |
| | | </style>
|
| | |
| | | <template>
|
| | | <page-meta :page-style="'overflow:'+(pageShow?'hidden':'visible')"></page-meta> |
| | | <view class="yuyue"> |
| | | <page-meta :page-style="'overflow:'+(pageShow?'hidden':'visible')"></page-meta>
|
| | | <view class="yuyue">
|
| | | <view class="yuyue_head">
|
| | | <view class="yuyue_head_input">
|
| | | <u--input
|
| | |
| | | <view class="item_d" v-if="i === 0">
|
| | | <view class="item_d_left">
|
| | | <view class="item_d_left_item" @click.stop="copy(item)" v-if="item.meetingStatus !== 3">
|
| | | <image src="@/static/icon/ic_copy@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/ic_copy@2x.png" mode="widthFix"></image>
|
| | | <text>å¤å¶</text>
|
| | | </view>
|
| | | <view class="item_d_left_item" @click="fenxiang(item)" v-if="item.meetingStatus !== 3">
|
| | | <button open-type="share"></button>
|
| | | <image src="@/static/icon/ic_fenxiang@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/ic_fenxiang@2x.png" mode="widthFix"></image>
|
| | | <text>å享</text>
|
| | | </view>
|
| | | <view class="item_d_left_item" v-if="item.meetingStatus === 1" @click.stop="closeRoom(item.meetingStatus, item.id)">
|
| | | <image src="@/static/icon/ic_cancel@2x.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/icon/ic_cancel@2x.png" mode="widthFix"></image>
|
| | | <text>åæ¶</text>
|
| | | </view>
|
| | | </view>
|
| | |
| | |
|
| | | <view class="yuyue_content" v-else>
|
| | | <view class="yuyue_content_wu">
|
| | | <image src="@/static/common/364.png" mode="widthFix"></image>
|
| | | <image src="@/static/meeting/common/364.png" mode="widthFix"></image>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | |
| | | @cancel="close1"
|
| | | ref="uModal"
|
| | | :showCancelButton="true"
|
| | | asyncClose="true"></u-modal> |
| | | </view> |
| | | </template> |
| | | |
| | | asyncClose="true"></u-modal>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { mapState } from 'vuex'
|
| | | import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue" |
| | | export default { |
| | | data() { |
| | | import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | i: 0,
|
| | | show: false, |
| | | show: false,
|
| | | cate: [
|
| | | { name: 'æªå¼å§', id: 1 },
|
| | | { name: 'å·²ç»æ', id: 2 }
|
| | |
| | | title: '',
|
| | | path: '',
|
| | | imageUrl: 'https://dmtest.ahapp.net/file/projects/20230511/13f256b832db4a4fadc5e6770f5727bf.png'
|
| | | } |
| | | }; |
| | | }
|
| | | };
|
| | | },
|
| | | computed: {
|
| | | ...mapState(['token'])
|
| | |
| | | })
|
| | | }
|
| | | }
|
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .yuyue {
|
| | | width: 100%;
|
| | | .details_ma /deep/ {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | } |
| | | </style> |
| | | }
|
| | | </style>
|
| | |
| | | @confirm="confirmDate"
|
| | | @cancel="isShow = false"
|
| | | ></u-datetime-picker>
|
| | | </view> |
| | | </template> |
| | | |
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { mapState, mapMutations } from 'vuex'
|
| | |
|
| | |
| | | show1: false,
|
| | | minDate: Number(new Date('1980-01-01')),
|
| | | maxDate: Number(new Date()),
|
| | | defaultAvatar: require('@/static/common/default_user@2x.png'),
|
| | | defaultAvatar: require('@/static/meeting/common/default_user@2x.png'),
|
| | | columns: [
|
| | | ['ç·', '女']
|
| | | ],
|
| | |
| | | })
|
| | | }
|
| | | }
|
| | | } |
| | | </script> |
| | | }
|
| | | </script>
|
| | |
|
| | | <style>
|
| | | page {
|
| | | background-color: #fff !important;
|
| | | }
|
| | | </style>
|
| | | |
| | |
|
| | | <style lang="scss" scoped>
|
| | | .personal {
|
| | | width: 100%;
|
| | |
| | | color: #FFFFFF;
|
| | | }
|
| | | }
|
| | | } |
| | | }
|
| | | </style> |
| | |
| | | |
| | | Vue.use(Vuex) |
| | | |
| | | const openId = uni.getStorageSync('openId'); |
| | | const member = uni.getStorageSync('member'); |
| | | const openId = uni.getStorageSync('openId') |
| | | const member = uni.getStorageSync('member') |
| | | |
| | | // meeting |
| | | const navHeight = uni.getStorageSync('navHeight') |
| | | const statusbarHeight = uni.getStorageSync('statusbarHeight') |
| | | const height = uni.getStorageSync('height') |
| | | const token = uni.getStorageSync('token') |
| | | const time = uni.getStorageSync('time') |
| | | const userInfo = uni.getStorageSync('userInfo') |
| | | const sessionKey = uni.getStorageSync('sessionKey') |
| | | |
| | | const store = new Vuex.Store({ |
| | | |
| | | |
| | | state: { |
| | | openId: openId || '', |
| | | member: member || null |
| | | member: member || null, |
| | | statusbarHeight: statusbarHeight || '0', |
| | | navHeight: navHeight || '0', |
| | | token: token || null, |
| | | time: time || null, |
| | | userInfo: userInfo || {}, |
| | | height: height || '0', |
| | | sessionKey: sessionKey || '' |
| | | }, |
| | | |
| | | |
| | | mutations: { |
| | | // 设置openId |
| | | setOpenId(state, val) { |
| | | state.openId = val |
| | | uni.setStorageSync('openId', val); |
| | | uni.setStorageSync('openId', val) |
| | | }, |
| | | // è®¾ç½®ç¨æ·ä¿¡æ¯ |
| | | setMember(state, val) { |
| | | state.member = val |
| | | uni.setStorageSync('member', val); |
| | | uni.setStorageSync('member', val) |
| | | }, |
| | | // è®¾ç½®å¯¼èªæ é«åº¦ |
| | | setHeight(state, val) { |
| | | state.navHeight = val.navHeight |
| | | state.statusbarHeight = val.statusbarHeight |
| | | state.height = val.height |
| | | uni.setStorageSync('navHeight', val.navHeight) |
| | | uni.setStorageSync('statusbarHeight', val.statusbarHeight) |
| | | uni.setStorageSync('height', val.height) |
| | | }, |
| | | // 设置ç¼åtoken |
| | | setToken(state, token) { |
| | | state.token = token |
| | | uni.setStorageSync('token', token) |
| | | }, |
| | | // è®¾ç½®è¿ææ¶é´æ³ |
| | | setTimeStamp(state, time) { |
| | | state.time = time |
| | | uni.setStorageSync('time', time) |
| | | }, |
| | | // è®¾ç½®ç¨æ·ä¿¡æ¯ |
| | | setUserInfo(state, obj) { |
| | | state.userInfo = obj |
| | | uni.setStorageSync('userInfo', obj) |
| | | }, |
| | | // 设置SessionKey |
| | | setSessionKey(state, val) { |
| | | state.sessionKey = val |
| | | uni.setStorageSync('sessionKey', val) |
| | | }, |
| | | // æ¸
空ææç¼å |
| | | empty(state) { |
| | | state.token = '' |
| | | state.userInfo = '' |
| | | uni.removeStorageSync('userInfo') |
| | | uni.removeStorageSync('token') |
| | | } |
| | | }, |
| | | actions: { |
| | | // è·åç¶æé«åº¦ |
| | | getHeight(context) { |
| | | let res = uni.getMenuButtonBoundingClientRect() |
| | | let status = uni.getSystemInfoSync() |
| | | var height = res.height |
| | | let statusbarHeight = status.statusBarHeight |
| | | let navHeight = res.height + (res.top - statusbarHeight) * 2 |
| | | context.commit('setHeight', { statusbarHeight, navHeight, height }) |
| | | } |
| | | } |
| | | |
| | | |
| | | }) |
| | | |
| | | export default store; |
| | | export default store |
| | |
| | | import { baseUrl } from './http.api' |
| | | |
| | | const install = (Vue, vm) => { |
| | | |
| | | |
| | | uni.$u.http.setConfig((config) => { |
| | | config.baseURL = baseURL; |
| | | config.timeout = 60000; |
| | | return config; |
| | | config.baseURL = baseUrl |
| | | config.timeout = 60000 |
| | | return config |
| | | }) |
| | | |
| | | Vue.prototype.$baseUrl = baseUrl; |
| | | Vue.prototype.$uploadUrl = uploadUrl; |
| | | |
| | | |
| | | Vue.prototype.$baseUrl = baseUrl |
| | | |
| | | let ordinaryLogin = (params = {}) => uni.$u.http.get('web/account/ordinaryLogin', { params }) |
| | | let wxEmpower = (params = {}) => uni.$u.http.get('web/account/wxEmpower', { params }) |
| | | let editUserInfo = (data = {}) => vm.$u.http.post('web/account/editUserInfo', data); |
| | | let getUserInfo = (params = {}) => vm.$u.http.get('web/account/getUserInfo', { params }); |
| | | let roomsList = (params = {}) => vm.$u.http.get('web/rooms/roomsList', { params }); |
| | | let getRoomUseTime = (data = {}) => vm.$u.http.post('web/rooms/getRoomUseTime', data); |
| | | let userPage = (data = {}) => vm.$u.http.post('web/meeting/userPage', data); |
| | | let getRoomDetail = (params = {}) => vm.$u.http.get('web/rooms/getRoomDetail', { params }); |
| | | let reservationMeeting = (data = {}) => vm.$u.http.post('web/meeting/reservationMeeting', data); |
| | | let meetingDetail = (params = {}) => vm.$u.http.get('web/meeting/meetingDetail', { params }); |
| | | let getQrCode = (params = {}) => vm.$u.http.get('web/meeting/getQrCode', { params }); |
| | | let reservationCancel = (params = {}) => vm.$u.http.get('web/meeting/reservationCancel', { params }); |
| | | let resetPwd = (data = {}) => vm.$u.http.post('web/account/resetPwd', data); |
| | | let myMeetingPage = (data = {}) => vm.$u.http.post('web/meeting/myMeetingPage', data); |
| | | let myRoomsPage = (data = {}) => vm.$u.http.post('web/rooms/myRoomsPage', data); |
| | | let findNoticePage = (data = {}) => vm.$u.http.post('web/notice/findNoticePage', data); |
| | | let getMemberDTO = (params = {}) => vm.$u.http.get('web/notice/getMemberDTO', { params }); |
| | | let findNewNotice = (params = {}) => vm.$u.http.get('web/notice/findNewNotice', { params }); |
| | | let monthMeeting = (params = {}) => vm.$u.http.get('web/meeting/monthMeeting', { params }); |
| | | let roomsGetQrCode = (params = {}) => vm.$u.http.get('web/rooms/getQrCode', { params }); |
| | | let getSystemDictData = (params = {}) => vm.$u.http.get('web/util/getSystemDictData', { params }); |
| | | let getQrCodeImg = (params = {}) => vm.$u.http.get('web/meeting/getQrCodeImg', { params }); |
| | | let visitorLogin = (params = {}) => vm.$u.http.get('web/account/visitorLogin', { params }); |
| | | let visitorWxPhone = (data = {}) => vm.$u.http.post('web/account/visitorWxPhone', data); |
| | | let getNoticeDetail = (params = {}) => vm.$u.http.get('web/notice/getNoticeDetail', { params }); |
| | | let editUserInfo = (data = {}) => vm.$u.http.post('web/account/editUserInfo', data) |
| | | let getUserInfo = (params = {}) => vm.$u.http.get('web/account/getUserInfo', { params }) |
| | | let roomsList = (params = {}) => vm.$u.http.get('web/rooms/roomsList', { params }) |
| | | let getRoomUseTime = (data = {}) => vm.$u.http.post('web/rooms/getRoomUseTime', data) |
| | | let userPage = (data = {}) => vm.$u.http.post('web/meeting/userPage', data) |
| | | let getRoomDetail = (params = {}) => vm.$u.http.get('web/rooms/getRoomDetail', { params }) |
| | | let reservationMeeting = (data = {}) => vm.$u.http.post('web/meeting/reservationMeeting', data) |
| | | let meetingDetail = (params = {}) => vm.$u.http.get('web/meeting/meetingDetail', { params }) |
| | | let getQrCode = (params = {}) => vm.$u.http.get('web/meeting/getQrCode', { params }) |
| | | let reservationCancel = (params = {}) => vm.$u.http.get('web/meeting/reservationCancel', { params }) |
| | | let resetPwd = (data = {}) => vm.$u.http.post('web/account/resetPwd', data) |
| | | let myMeetingPage = (data = {}) => vm.$u.http.post('web/meeting/myMeetingPage', data) |
| | | let myRoomsPage = (data = {}) => vm.$u.http.post('web/rooms/myRoomsPage', data) |
| | | let findNoticePage = (data = {}) => vm.$u.http.post('web/notice/findNoticePage', data) |
| | | let getMemberDTO = (params = {}) => vm.$u.http.get('web/notice/getMemberDTO', { params }) |
| | | let findNewNotice = (params = {}) => vm.$u.http.get('web/notice/findNewNotice', { params }) |
| | | let monthMeeting = (params = {}) => vm.$u.http.get('web/meeting/monthMeeting', { params }) |
| | | let roomsGetQrCode = (params = {}) => vm.$u.http.get('web/rooms/getQrCode', { params }) |
| | | let getSystemDictData = (params = {}) => vm.$u.http.get('web/util/getSystemDictData', { params }) |
| | | let getQrCodeImg = (params = {}) => vm.$u.http.get('web/meeting/getQrCodeImg', { params }) |
| | | let visitorLogin = (params = {}) => vm.$u.http.get('web/account/visitorLogin', { params }) |
| | | let visitorWxPhone = (data = {}) => vm.$u.http.post('web/account/visitorWxPhone', data) |
| | | let getNoticeDetail = (params = {}) => vm.$u.http.get('web/notice/getNoticeDetail', { params }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | vm.$u.api = { |
| | | ordinaryLogin, |
| | | wxEmpower, |
| | |
| | | visitorLogin, |
| | | visitorWxPhone, |
| | | getNoticeDetail |
| | | }; |
| | | } |
| | | } |
| | | |
| | | export default { install } |