| | |
| | | NODE_ENV = 'development' |
| | | |
| | | VUE_APP_API_URL = 'http://localhost:10010' |
| | | VUE_APP_API_URL = 'http://192.168.0.139:10010' |
| | | VUE_APP_API_URL = 'http://192.168.137.1:10010' |
| | | # VUE_APP_API_URL = 'http://10.50.250.178:8088/gateway_interface' |
| | |
| | | import request from '../../utils/request' |
| | | // æ¥è¯¢ |
| | | export function fetchList (data) { |
| | | export function fetchList(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/page', data, { |
| | | trim: true |
| | | }) |
| | | } |
| | | |
| | | // 导åºExcel |
| | | export function exportExcel (data) { |
| | | export function exportExcel(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/exportExcel', data, { |
| | | trim: true, |
| | | download: true |
| | |
| | | } |
| | | |
| | | // å建 |
| | | export function create (data) { |
| | | export function create(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/create', data) |
| | | } |
| | | |
| | | // ä¿®æ¹ |
| | | export function updateById (data) { |
| | | export function updateById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/bookings/updateById', data) |
| | | } |
| | | // åæ¶ |
| | | export function cancelById (data) { |
| | | export function cancelById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/reservationCancel', data) |
| | | } |
| | | // ç»æ |
| | | export function overBookById (data) { |
| | | // å¼å§ |
| | | export function startById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/start', data) |
| | | } |
| | | // æåå¼å§ |
| | | export function startEarlyById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/startEarly', data) |
| | | } |
| | | // |
| | | export function overBookById(data) { |
| | | return request.post('/meetingAdmin/cloudService/business/meeting/reservationOver', data) |
| | | } |
| | | // é¢å®è¯¦æ
|
| | | export function BookDetailById (params) { |
| | | export function BookDetailById(params) { |
| | | return request.get('/meetingAdmin/cloudService/web/meeting/meetingDetail', { |
| | | params |
| | | }) |
| | | } |
| | | |
| | | // å é¤ |
| | | export function deleteById (id) { |
| | | export function deleteById(id) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/delete/${id}`) |
| | | } |
| | | |
| | | // æ ¹æ®IDæ¥è¯¢ |
| | | export function bookingsDetail (id) { |
| | | export function bookingsDetail(id) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/${id}`) |
| | | } |
| | | |
| | | // æ¹éå é¤ |
| | | export function deleteByIdInBatch (ids) { |
| | | export function deleteByIdInBatch(ids) { |
| | | return request.get('/meetingAdmin/cloudService/business/bookings/delete/batch', { |
| | | params: { |
| | | ids |
| | |
| | | } |
| | | |
| | | // ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡ |
| | | export function getRoomStatistics (yearNum, roomId) { |
| | | export function getRoomStatistics(yearNum, roomId) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/getRoomStatistics?yearNum=${yearNum}&roomId=${roomId}`) |
| | | } |
| | | // ä¼è®®å®¤ä½¿ç¨æ¶é¿ç»è®¡å¯¼åºExcel |
| | | export function exportRoomStatistics (data) { |
| | | export function exportRoomStatistics(data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/exportRoomStatistics`, data, { |
| | | trim: true, |
| | | download: true |
| | |
| | | } |
| | | |
| | | // 人ååå ä¼è®®æ¶å¸¸ |
| | | export function getUserStatistics (data) { |
| | | export function getUserStatistics(data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/getUserStatistics`, data) |
| | | } |
| | | // 人åå伿¶é¿ç»è®¡å¯¼åºExcel |
| | | export function exportUserStatistics (data) { |
| | | export function exportUserStatistics(data) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/exportUserStatistics`, data, { |
| | | trim: true, |
| | | download: true |
| | |
| | | } |
| | | |
| | | // |
| | | export function reservationCancel (type) { |
| | | export function reservationCancel(type) { |
| | | return request.get(`/meetingAdmin/cloudService/business/bookings/reservationCancel?type=${type}`) |
| | | } |
| | | // |
| | | export function findMothBookingMeet ({roomId, dateMonth}) { |
| | | export function findMothBookingMeet({ roomId, dateMonth }) { |
| | | return request.post(`/meetingAdmin/cloudService/business/bookings/findMothBookingMeet?roomId=${roomId}&dateMonth=${dateMonth}`) |
| | | } |
| | |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="å§å" min-width="110px"> |
| | | <template slot-scope="{row}"> |
| | | <span>{{ row.name }}</span> |
| | | <span class="zhuguan" v-if="row.headStatus == 1">主管</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="phone" label="ææºå·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="idcardDecode" label="身份è¯å·" min-width="100px"></el-table-column> |
| | | <el-table-column label="æ§å«" min-width="100px"> |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import '@/assets/style/variables.scss'; |
| | | .box { |
| | | width: 100%; |
| | | display: flex; |
| | |
| | | height: 100%; |
| | | } |
| | | } |
| | | .zhuguan{ |
| | | color: $primary-color; |
| | | border: 1px solid $primary-color; |
| | | padding: 0px 3px; |
| | | border-radius: 4px; |
| | | margin-left: 6px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:member:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form |
| | | ref="searchForm" |
| | | slot="search-form" |
| | | :model="searchForm" |
| | | label-width="100px" |
| | | inline |
| | | > |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="å§å" prop="name"> |
| | | <el-input |
| | | v-model="searchForm.name" |
| | | placeholder="请è¾å
¥è®¿å®¢åç§°" |
| | | @keypress.enter.native="search" |
| | | ></el-input> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥è®¿å®¢åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»ç»åç§°" prop="companyName"> |
| | | <el-input |
| | | v-model="searchForm.companyName" |
| | | placeholder="请è¾å
¥ç»ç»åç§°" |
| | | @keypress.enter.native="search" |
| | | ></el-input> |
| | | <el-input v-model="searchForm.companyName" placeholder="请è¾å
¥ç»ç»åç§°" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨æ·ç±»å" prop="type"> |
| | | <el-select v-model="searchForm.type" placeholder="è¯·éæ©"> |
| | |
| | | <!-- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">--> |
| | | <!-- <li><el-button type="primary" v-permissions="['business:member:create']" @click="thaws">离åº</el-button></li>--> |
| | | <!-- </ul>--> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <!-- <el-table-column type="selection" width="55"></el-table-column>--> |
| | | <el-table-column |
| | | prop="name" |
| | | label="å§å" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="phone" |
| | | label="ææºå·" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="companyName" |
| | | label="ç»ç»" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column prop="name" label="å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="ææºå·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="ç»ç»" min-width="100px"></el-table-column> |
| | | <el-table-column label="ç¨æ·ç±»å" min-width="100px"> |
| | | <template slot-scope="{ row }"> |
| | | <span v-if="row.type === 0">å³å¡è®¿å®¢</span> |
| | |
| | | <span v-if="row.type === 2">å
é¨äººå</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="inDate" |
| | | label="å¨åæ¶é´" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="outDate" |
| | | label="ææå°ææ¶é´" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column prop="inDate" label="å¨åæ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="outDate" label="ææå°ææ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column label="è¶
æ¶æ¶é¿" min-width="100px"> |
| | | <template slot-scope="{ row }"> |
| | | <span v-if="row.outStatus === 1" |
| | | >{{ row.timeOut.toString().replace("-", "") }}åé</span |
| | | > |
| | | <span v-if="row.outStatus === 1">{{ row.timeOut.toString().replace("-", "") }}åé</span> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{ row }"> |
| | | <span v-if="row.outStatus === 0">æªè¶
æ¶</span> |
| | | <span style="color: red" v-else-if="row.outStatus === 1" |
| | | >å·²è¶
æ¶</span |
| | | > |
| | | <span style="color: red" v-else-if="row.outStatus === 1">å·²è¶
æ¶</span> |
| | | <span v-else-if="row.outStatus === 2">å³å°è¶
æ¶</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if=" |
| | | containPermissions([ |
| | | 'business:member:update', |
| | | 'business:member:delete', |
| | | ]) |
| | | " |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <el-table-column v-if=" |
| | | containPermissions([ |
| | | 'business:member:update', |
| | | 'business:member:delete', |
| | | ]) |
| | | " label="æä½" min-width="120" fixed="right"> |
| | | <template slot-scope="{ row }"> |
| | | <el-button |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | v-permissions="['business:member:update']" |
| | | @click="departure(row.id)" |
| | | >离å</el-button |
| | | > |
| | | <el-button type="text" icon="el-icon-edit" v-permissions="['business:member:update']" |
| | | @click="departure(row.id)">离å</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | </template> |
| | | </TableLayout> |
| | |
| | | }, |
| | | methods: { |
| | | departure(id) { |
| | | this.$confirm('ç¡®å®ç¦»åºå, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | this.$confirm('ç¡®å®ç¦»åå, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="idcardDecode" label="身份è¯å·" width="150px"></el-table-column> |
| | | <el-table-column prop="visitCompanyName" label="ç»ç»" min-width="100px"></el-table-column> |
| | | <el-table-column prop="visitsCount" label="æè®¿æ¬¡æ°" min-width="100px"></el-table-column> |
| | | <el-table-column prop="visitsLastDate" label="æåæè®¿æ¶é´" min-width="100px"></el-table-column> |
| | | <el-table-column prop="visitTimes" label="æè®¿æ¬¡æ°" min-width="100px"></el-table-column> |
| | | <el-table-column prop="lastVisitDate" label="æåæè®¿æ¶é´" min-width="100px"></el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:visits:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="å§å/ææºå·" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥å§å/ææºå·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="身份è¯å·" prop="idcardNo"> |
| | | <el-input v-model="searchForm.idcardNo" placeholder="请è¾å
¥èº«ä»½è¯å·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="访客åä½" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请è¾å
¥è®¿å®¢åä½" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="审æ¹ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
æäº¤å®¡æ¹" value="0"></el-option> |
| | | <el-option label="审æ¹ä¸" value="1"></el-option> |
| | | <el-option label="å®¡æ ¸éè¿" value="2"></el-option> |
| | | <el-option label="å®¡æ ¸ä¸éè¿" value="3"></el-option> |
| | | <el-option label="åæ¶" value="4"></el-option> |
| | | <el-option label="é¢çº¦æå" value="5"></el-option> |
| | | <el-option label="é¢çº¦å¤±è´¥" value="6"></el-option> |
| | | <el-option label="æè®¿ä¸" value="7"></el-option> |
| | | <el-option label="å·²ç¾ç¦»" value="8"></el-option> |
| | | <el-option label="已失æ" value="9"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:visits:exportExcel']" @click="exportExcel">导åº</el-button>--> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:visits:create', 'business:visits:exportExcel']"> |
| | | <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" v-permissions="['business:visits:create']">æ°å»º</el-button></li> |
| | | <li><el-button type="primary" :loading="isWorking.export" @click="exportExcel" v-permissions="['business:visits:exportExcel']">导åº</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="访客å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="ææºå·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="访客åä½" min-width="100px"></el-table-column> |
| | | <el-table-column prop="receptMemberName" label="被访人" min-width="100px"></el-table-column> |
| | | <el-table-column prop="reason" label="æè®¿äºç±" min-width="100px"></el-table-column> |
| | | <el-table-column label="é¢çº¦æ¶é´" min-width="170px"> |
| | | <template slot-scope="{row}"> |
| | | <span>èµ·ï¼{{row.starttime}}</span><br/> |
| | | <span>æ¢ï¼{{row.endtime}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç¾å°æ¶é´" min-width="170px"> |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.inDate && row.outDate"> |
| | | <span>èµ·ï¼{{row.inDate}}</span><br/> |
| | | <span>æ¢ï¼{{row.outDate}}</span> |
| | | </div> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æ½å·¥äººå" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type == 0">å¦</span> |
| | | <span v-if="row.type == 1">æ¯</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="é访车è¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span>{{row.carNos}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" fixed="right" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">å¾
æäº¤å®¡æ¹</span> |
| | | <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">å¤çä¸</span> |
| | | <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">å·²åæ</span> |
| | | <span style="color: gray;" v-if="row.status === 3" >å·²æç»</span> |
| | | <span v-if="row.status === 4" style="color: gray">åæ¶</span> |
| | | <span v-if="row.status === 5" style="color: green">ä¸åæå</span> |
| | | <span v-if="row.status === 6" style="color: gray">ä¸å失败</span> |
| | | <span v-if="row.status === 7" style="color: green">æè®¿ä¸</span> |
| | | <span v-if="row.status === 8" style="color: red">å·²ç¾ç¦»</span> |
| | | <span v-if="row.status === 9" style="color: gray">已失æ</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:visits:update', 'business:visits:delete'])" |
| | | label="æä½" |
| | | min-width="200" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="departure(row.id)" v-permissions="['business:visits:level']" icon="el-icon-delete" style="color: red" v-if="row.status == 7">离å</el-button> |
| | | <el-button type="text" @click="cancel(row.id)" v-permissions="['business:visits:cancel']" icon="el-icon-delete" style="color: red" v-if="row.status == 5">åæ¶é¢çº¦</el-button> |
| | | <el-button type="text" @click="resend(row.id)" v-permissions="['business:visits:update']" icon="el-icon-edit" v-if="row.status == 6">éæ°ä¸å</el-button> |
| | | <!-- <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('详æ
', row.id)" icon="el-icon-view">详æ
</el-button> --> |
| | | <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">详æ
</el-button> |
| | | <!-- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">æ¥è¯¢å®¡æ¹ç»æ</el-button>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | </pagination> |
| | | <!-- 详æ
--> |
| | | <!-- <OperaVisitsDesWindow ref="OperaVisitsDesWindow" /> --> |
| | | <TaskDetail v-if="isShowDetail" ref="DetailRef" /> |
| | | <!-- æ°å»º --> |
| | | <OperaVisitsWindow @close="isShowEdit = false" @success="search" v-if="isShowEdit" ref="operaVisitsWindowRef" /> |
| | | </template> |
| | | </TableLayout> |
| | | <TableLayout :permissions="['business:visits:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="å§å/ææºå·" prop="name"> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥å§å/ææºå·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="身份è¯å·" prop="idcardNo"> |
| | | <el-input v-model="searchForm.idcardNo" placeholder="请è¾å
¥èº«ä»½è¯å·" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="访客åä½" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请è¾å
¥è®¿å®¢åä½" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="审æ¹ç¶æ" prop="status"> |
| | | <el-select v-model="searchForm.status" placeholder="è¯·éæ©"> |
| | | <el-option label="å¾
æäº¤å®¡æ¹" value="0"></el-option> |
| | | <el-option label="审æ¹ä¸" value="1"></el-option> |
| | | <el-option label="å®¡æ ¸éè¿" value="2"></el-option> |
| | | <el-option label="å®¡æ ¸ä¸éè¿" value="3"></el-option> |
| | | <el-option label="åæ¶" value="4"></el-option> |
| | | <el-option label="é¢çº¦æå" value="5"></el-option> |
| | | <el-option label="é¢çº¦å¤±è´¥" value="6"></el-option> |
| | | <el-option label="æè®¿ä¸" value="7"></el-option> |
| | | <el-option label="å·²ç¾ç¦»" value="8"></el-option> |
| | | <el-option label="已失æ" value="9"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:visits:exportExcel']" @click="exportExcel">导åº</el-button>--> |
| | | <el-button @click="reset">éç½®</el-button> |
| | | </section> |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:visits:create', 'business:visits:exportExcel']"> |
| | | <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" |
| | | v-permissions="['business:visits:create']">æ°å»º</el-button></li> |
| | | <li><el-button type="primary" :loading="isWorking.export" @click="exportExcel" |
| | | v-permissions="['business:visits:exportExcel']">导åº</el-button></li> |
| | | </ul> |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="访客å§å" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="ææºå·" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="访客åä½" min-width="100px"></el-table-column> |
| | | <el-table-column prop="receptMemberName" label="被访人" min-width="100px"></el-table-column> |
| | | <el-table-column prop="reason" label="æè®¿äºç±" min-width="100px"></el-table-column> |
| | | <el-table-column label="é¢çº¦æ¶é´" min-width="170px"> |
| | | <template slot-scope="{row}"> |
| | | <span>èµ·ï¼{{ row.starttime }}</span><br /> |
| | | <span>æ¢ï¼{{ row.endtime }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç¾å°æ¶é´" min-width="170px"> |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.inDate && row.outDate"> |
| | | <span>èµ·ï¼{{ row.inDate }}</span><br /> |
| | | <span>æ¢ï¼{{ row.outDate }}</span> |
| | | </div> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æ½å·¥äººå" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type == 0">å¦</span> |
| | | <span v-if="row.type == 1">æ¯</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="é访车è¾" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span>{{ row.carNos }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" fixed="right" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">å¾
æäº¤å®¡æ¹</span> |
| | | <span v-if="row.status === 1" style="color: rgba(245, 154, 35, 0.996);">å¤çä¸</span> |
| | | <span v-if="row.status === 2" style="color: rgba(245, 154, 35, 0.996);">å·²åæ</span> |
| | | <span style="color: gray;" v-if="row.status === 3">å·²æç»</span> |
| | | <span v-if="row.status === 4" style="color: gray">åæ¶</span> |
| | | <span v-if="row.status === 5" style="color: green">ä¸åæå</span> |
| | | <span v-if="row.status === 6" style="color: gray">ä¸å失败</span> |
| | | <span v-if="row.status === 7" style="color: green">æè®¿ä¸</span> |
| | | <span v-if="row.status === 8" style="color: red">å·²ç¾ç¦»</span> |
| | | <span v-if="row.status === 9" style="color: gray">已失æ</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="containPermissions(['business:visits:update', 'business:visits:delete'])" label="æä½" |
| | | min-width="200" fixed="right"> |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="departure(row.id)" v-permissions="['business:visits:level']" |
| | | icon="el-icon-delete" style="color: red" v-if="row.status == 7">离å</el-button> |
| | | <el-button type="text" @click="cancel(row.id)" v-permissions="['business:visits:cancel']" |
| | | icon="el-icon-delete" style="color: red" v-if="row.status == 5">åæ¶é¢çº¦</el-button> |
| | | <el-button type="text" @click="resend(row.id)" v-permissions="['business:visits:update']" |
| | | icon="el-icon-edit" v-if="row.status == 6">éæ°ä¸å</el-button> |
| | | <!-- <el-button type="text" @click="$refs.OperaVisitsDesWindow.open('详æ
', row.id)" icon="el-icon-view">详æ
</el-button> --> |
| | | <el-button type="text" @click="handleDetail(row)" icon="el-icon-view">详æ
</el-button> |
| | | <!-- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:visits:delete']">æ¥è¯¢å®¡æ¹ç»æ</el-button>--> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | <!-- 详æ
--> |
| | | <!-- <OperaVisitsDesWindow ref="OperaVisitsDesWindow" /> --> |
| | | <TaskDetail v-if="isShowDetail" ref="DetailRef" /> |
| | | <!-- æ°å»º --> |
| | | <OperaVisitsWindow @close="isShowEdit = false" @success="search" v-if="isShowEdit" ref="operaVisitsWindowRef" /> |
| | | </template> |
| | | </TableLayout> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | name: 'Visits', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, TaskDetail, OperaVisitsWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | isShowEdit: false, |
| | | isShowDetail: false, |
| | |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | module: '访客ç³è¯·ä¿¡æ¯è¡¨', |
| | | api: '/business/visits', |
| | |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | handleDetail (row) { |
| | | handleDetail(row) { |
| | | this.isShowDetail = true |
| | | console.log('row', row); |
| | | console.log('row', row) |
| | | this.$nextTick(() => { |
| | | this.$refs.DetailRef.id = row.id |
| | | this.$refs.DetailRef.type = 0 |
| | |
| | | this.$refs.DetailRef.isShowModal = true |
| | | }) |
| | | }, |
| | | handleEdit () { |
| | | handleEdit() { |
| | | this.isShowEdit = true |
| | | this.$nextTick(() => { |
| | | this.$refs.operaVisitsWindowRef.isShowModal = true |
| | | }) |
| | | }, |
| | | departure (id) { |
| | | this.$confirm('ç¡®å®ç¦»åºå, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | departure(id) { |
| | | this.$confirm('ç¡®å®ç¦»åå, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | level(id) |
| | | level(id) |
| | | .then(res => { |
| | | this.page = 1 |
| | | this.getData() |
| | |
| | | |
| | | }) |
| | | }, |
| | | cancel (id) { |
| | | cancel(id) { |
| | | this.$confirm('ç¡®å®åæ¶é¢çº¦å, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | visitCancel(id) |
| | | visitCancel(id) |
| | | .then(res => { |
| | | this.page = 1 |
| | | this.getData() |
| | |
| | | |
| | | }) |
| | | }, |
| | | resend (id) { |
| | | resend(id) { |
| | | this.$confirm('ç¡®å®å°è¯éæ°åèµ·é¢çº¦å, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:bookings:query']"> |
| | | <!-- æç´¢è¡¨å --> |
| | | <el-form |
| | | ref="searchForm" |
| | | slot="search-form" |
| | | :model="searchForm" |
| | | label-width="100px" |
| | | inline |
| | | > |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="ä¼è®®å®¤" prop="roomId"> |
| | | <el-select |
| | | v-model="searchForm.roomId" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ä¼è®®å®¤" |
| | | > |
| | | <el-option |
| | | v-for="item in rooms" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | /> |
| | | <el-select v-model="searchForm.roomId" filterable clearable placeholder="è¯·éæ©ä¼è®®å®¤"> |
| | | <el-option v-for="item in rooms" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="é¢çº¦é¨é¨" prop="department"> |
| | | <el-cascader |
| | | v-model="searchForm.department" |
| | | :options="department" |
| | | :show-all-levels="false" |
| | | clearable |
| | | :props="props" |
| | | ></el-cascader> |
| | | <el-cascader v-model="searchForm.department" :options="department" :show-all-levels="false" clearable |
| | | :props="props"></el-cascader> |
| | | <!-- @change="handleChange" --> |
| | | <!-- <el-select |
| | | v-model="searchForm.departmentId" |
| | |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ä¸»é¢" prop="name"> |
| | | <el-input |
| | | v-model="searchForm.name" |
| | | placeholder="请è¾å
¥ä¼è®®ä¸»é¢" |
| | | @keypress.enter.native="search" |
| | | ></el-input> |
| | | <el-input v-model="searchForm.name" placeholder="请è¾å
¥ä¼è®®ä¸»é¢" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="é¢çº¦äºº" prop="realName"> |
| | | <el-input |
| | | v-model="searchForm.realName" |
| | | placeholder="请è¾å
¥é¢çº¦äºº" |
| | | @keypress.enter.native="search" |
| | | ></el-input> |
| | | <el-input v-model="searchForm.realName" placeholder="请è¾å
¥é¢çº¦äºº" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ä¼è®®ç¶æ" prop="status"> |
| | | <el-select |
| | | v-model="searchForm.meetingStatus" |
| | | filterable |
| | | clearable |
| | | placeholder="è¯·éæ©ç¶æ" |
| | | > |
| | | <el-option |
| | | v-for="item in status" |
| | | :key="item.id" |
| | | :value="item.id" |
| | | :label="item.name" |
| | | /> |
| | | <el-select v-model="searchForm.meetingStatus" filterable clearable placeholder="è¯·éæ©ç¶æ"> |
| | | <el-option v-for="item in status" :key="item.id" :value="item.id" :label="item.name" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="èµ·æ¢æ¶é´" prop="startTime"> |
| | | <el-date-picker |
| | | v-model="date" |
| | | type="datetimerange" |
| | | range-separator="è³" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | :default-time="['00:00:00', '23:59:59']" |
| | | start-placeholder="å¼å§æ¶é´" |
| | | end-placeholder="ç»ææ¶é´" |
| | | @change="selectDate" |
| | | ></el-date-picker> |
| | | <el-date-picker v-model="date" type="datetimerange" range-separator="è³" value-format="yyyy-MM-dd HH:mm:ss" |
| | | :default-time="['00:00:00', '23:59:59']" start-placeholder="å¼å§æ¶é´" end-placeholder="ç»ææ¶é´" |
| | | @change="selectDate"></el-date-picker> |
| | | <!-- <el-date-picker v-model="searchForm.startTime" value-format="yyyy-MM-dd" placeholder="请è¾å
¥å¼å§æ¶é´" @change="search"/> --> |
| | | </el-form-item> |
| | | <el-radio-group |
| | | v-model="searchForm.radio" |
| | | size="small" |
| | | @input="changeRadio" |
| | | > |
| | | <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio"> |
| | | <el-radio-button label="0">å½å¤©</el-radio-button> |
| | | <el-radio-button label="1">è¿7天</el-radio-button> |
| | | <el-radio-button label="2">è¿30天</el-radio-button> |
| | |
| | | </el-form> |
| | | <!-- è¡¨æ ¼åå页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul |
| | | class="toolbar" |
| | | v-permissions="[ |
| | | 'business:bookings:create', |
| | | 'business:bookings:exportExcel', |
| | | ]" |
| | | > |
| | | <ul class="toolbar" v-permissions="[ |
| | | 'business:bookings:create', |
| | | 'business:bookings:exportExcel', |
| | | ]"> |
| | | <li> |
| | | <el-button |
| | | type="primary" |
| | | @click="$refs.operaBookingsWindow.open('æ°å»ºä¼è®®')" |
| | | v-permissions="['business:bookings:create']" |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button type="primary" @click="$refs.operaBookingsWindow.open('æ°å»ºä¼è®®')" |
| | | v-permissions="['business:bookings:create']">æ°å»º</el-button> |
| | | </li> |
| | | <!-- <li><el-button @click="deleteByIdInBatch" v-permissions="['business:bookings:delete']">å é¤</el-button></li> --> |
| | | <li> |
| | | <el-button |
| | | :loading="isWorking.export" |
| | | v-permissions="['business:bookings:exportExcel']" |
| | | @click="exportExcel" |
| | | >导åº</el-button |
| | | > |
| | | <el-button :loading="isWorking.export" v-permissions="['business:bookings:exportExcel']" |
| | | @click="exportExcel">导åº</el-button> |
| | | </li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | border |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table v-loading="isWorking.search" :data="tableData.list" stripe border |
| | | @selection-change="handleSelectionChange"> |
| | | <!-- <el-table-column type="selection" align="center" width="55"></el-table-column> --> |
| | | <el-table-column |
| | | prop="name" |
| | | label="ä¼è®®ä¸»é¢" |
| | | align="center" |
| | | min-width="120px" |
| | | show-overflow-tooltip |
| | | > |
| | | <el-table-column prop="name" label="ä¼è®®ä¸»é¢" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{ row }"> |
| | | <span class="long-title-style">{{ row.name }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="roomName" |
| | | label="ä¼è®®å®¤" |
| | | align="center" |
| | | min-width="120px" |
| | | show-overflow-tooltip |
| | | > |
| | | <el-table-column prop="roomName" label="ä¼è®®å®¤" align="center" min-width="120px" show-overflow-tooltip> |
| | | <template slot-scope="{ row }"> |
| | | <span class="long-title-style">{{ row.roomName }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="meetingTime" |
| | | label="ä¼è®®æ¶é´" |
| | | align="center" |
| | | min-width="120px" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="managerInfo" |
| | | label="é¢çº¦äºº" |
| | | align="center" |
| | | min-width="100px" |
| | | ></el-table-column> |
| | | <el-table-column prop="meetingTime" label="ä¼è®®æ¶é´" align="center" min-width="120px"></el-table-column> |
| | | <el-table-column prop="managerInfo" label="é¢çº¦äºº" align="center" min-width="100px"></el-table-column> |
| | | <el-table-column label="ä¼è®®ç¶æ" align="center" min-width="60px"> |
| | | <template slot-scope="{ row }"> |
| | | <span v-if="row.meetingStatus == 1">æªå¼å§</span> |
| | |
| | | <!-- {{ row.status==0 ? 'æ£å¸¸' : 'åæ¶' }} --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="createDate" |
| | | label="å建æ¶é´" |
| | | align="center" |
| | | min-width="150px" |
| | | ></el-table-column> |
| | | <el-table-column prop="createDate" label="å建æ¶é´" align="center" min-width="150px"></el-table-column> |
| | | <!-- <el-table-column prop="content" label="ä¼è®®å
容" min-width="100px"></el-table-column> --> |
| | | <el-table-column |
| | | v-if=" |
| | | containPermissions([ |
| | | 'business:bookings:update', |
| | | 'business:bookings:delete', |
| | | ]) |
| | | " |
| | | label="æä½" |
| | | min-width="100" |
| | | align="center" |
| | | fixed="right" |
| | | > |
| | | <el-table-column v-if=" |
| | | containPermissions([ |
| | | 'business:bookings:update', |
| | | 'business:bookings:delete', |
| | | ]) |
| | | " label="æä½" min-width="100" align="center" fixed="right"> |
| | | <template slot-scope="{ row }"> |
| | | <template> |
| | | <el-button |
| | | type="text" |
| | | @click="$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', row)" |
| | | >æ¥ç详æ
</el-button |
| | | > |
| | | <el-button v-if="row.meetingStatus == '1'" type="text" @click="$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', row)" v-permissions="['business:bookings:update']">ç¼è¾</el-button> |
| | | <!-- <el-button type="text" @click="copy(row)">å¤å¶</el-button> --> |
| | | <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)" v-permissions="['business:bookings:update']">æ¤å</el-button> |
| | | <el-button type="text" @click="$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', row)">æ¥ç详æ
</el-button> |
| | | <el-button v-if="row.meetingStatus == '1'" type="text" |
| | | @click="$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', row)" |
| | | v-permissions="['business:bookings:update']">ç¼è¾</el-button> |
| | | <el-button type="text" v-if="row.meetingStatus == '1'" @click="handleStart(row)">å¼å§</el-button> |
| | | <el-button v-if="row.meetingStatus == '1'" type="text" @click="cancelMeeting(row.id)" |
| | | v-permissions="['business:bookings:update']">æ¤å</el-button> |
| | | </template> |
| | | <!-- <el-button v-else type="text" @click="deleteById(row)" v-permissions="['business:bookings:delete']">å é¤</el-button> --> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | | @current-change="handlePageChange" |
| | | :pagination="tableData.pagination" |
| | | > |
| | | <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination"> |
| | | </pagination> |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | <OperaBookingsWindow |
| | | ref="operaBookingsWindow" |
| | | @success="handlePageChange" |
| | | /> |
| | | <OperaBookingsDetailWindow |
| | | @success="search" |
| | | ref="operaBookingsDetailWindow" |
| | | /> |
| | | <OperaBookingsWindow ref="operaBookingsWindow" @success="handlePageChange" /> |
| | | <OperaBookingsDetailWindow @success="search" ref="operaBookingsDetailWindow" /> |
| | | |
| | | </TableLayout> |
| | | </template> |
| | |
| | | import { findList } from '@/api/meeting/rooms' |
| | | import { getSystemDictData } from '@/api/system/dictData' |
| | | import { fetchList } from '@/api/business/company' |
| | | import { cancelById, bookingsDetail } from '@/api/meeting/bookings' |
| | | import { cancelById, bookingsDetail, startEarlyById, startById } from '@/api/meeting/bookings' |
| | | import { timeForMat } from '@/utils/util' |
| | | export default { |
| | | name: 'Bookings', |
| | | extends: BaseTable, |
| | | components: { TableLayout, Pagination, OperaBookingsWindow, OperaBookingsDetailWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | date: [], |
| | | // æç´¢ |
| | |
| | | link: 'https://dmtest.ahapp.net/meeting_h5/' // H5_LINK_ADDR |
| | | } |
| | | }, |
| | | provide () { |
| | | provide() { |
| | | return { |
| | | rooms: () => this.rooms |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | this.config({ |
| | | module: 'ä¼è®®å®¤é¢å®ä¿¡æ¯è¡¨', |
| | | api: '/meeting/bookings', |
| | |
| | | this.changeRadio('0') |
| | | }, |
| | | methods: { |
| | | changeRadio (e) { |
| | | changeRadio(e) { |
| | | if (e === '0') { |
| | | this.searchForm.startTime = timeForMat(0)[0] |
| | | this.searchForm.endTime = timeForMat(0)[1] |
| | |
| | | } |
| | | this.search() |
| | | }, |
| | | newTree (tree) { |
| | | newTree(tree) { |
| | | if (tree == null) { |
| | | return [] |
| | | } |
| | |
| | | return newItem |
| | | }) |
| | | }, |
| | | selectDate (v) { |
| | | selectDate(v) { |
| | | this.searchForm.endTime = v[1] + ' 23:59:59' |
| | | this.searchForm.startTime = v[0] + ' 00:00:00' |
| | | this.searchForm.radio = null |
| | | }, |
| | | reset () { |
| | | reset() { |
| | | this.$refs.searchForm.resetFields() |
| | | this.date = [] |
| | | this.searchForm.radio = '0' |
| | |
| | | this.searchForm.endTime = '' |
| | | this.changeRadio('0') |
| | | }, |
| | | copy (row) { |
| | | copy(row) { |
| | | const text = `${row.realName} é请æ¨å å
¥ä¼è®®\nä¼è®®ä¸»é¢ï¼${row.name}\nä¼è®®å®¤ï¼${row.roomName}\nä¼è®®æ¶é´ï¼${row.meetingTime}\nç¹å»é¾æ¥ç´æ¥å å
¥ä¼è®®ï¼\n${this.link}?id=${row.id}` |
| | | this.$copyText(text) |
| | | .then(() => { |
| | |
| | | .catch(e => { |
| | | }) |
| | | }, |
| | | cancelMeeting (id) { |
| | | handleStart(row) { |
| | | this.$dialog.messageWaring('å¼å§ä¼è®®', 'æ¯å¦å¼å§å½åä¼è®®ï¼') |
| | | .then(() => { |
| | | let fn = new Date(row.startTime).getTime() > new Date().getTime() ? startEarlyById : startById |
| | | fn({ id: row.id }) |
| | | .then(() => { |
| | | this.$message.success('ä¼è®®å·²å¼å§') |
| | | this.handlePageChange() |
| | | }) |
| | | .catch(e => { |
| | | }) |
| | | }) |
| | | }, |
| | | cancelMeeting(id) { |
| | | this.$dialog.messageWaring('åæ¶ä¼è®®', 'æ¯å¦åæ¶å½åä¼è®®ï¼') |
| | | .then(() => { |
| | | cancelById({ id }) |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | showDetail (id) { |
| | | showDetail(id) { |
| | | bookingsDetail(id) |
| | | .then(res => { |
| | | this.$refs.operaBookingsDetailWindow.open('ä¼è®®è¯¦æ
', res) |
| | |
| | | .catch(e => { |
| | | }) |
| | | }, |
| | | editBookings (id) { |
| | | editBookings(id) { |
| | | bookingsDetail(id) |
| | | .then(res => { |
| | | this.$refs.operaBookingsWindow.open('ç¼è¾ä¼è®®é¢çº¦', res) |
| | |
| | | .catch(e => { |
| | | }) |
| | | }, |
| | | handlePageChange (pageIndex) { |
| | | handlePageChange(pageIndex) { |
| | | this.__checkApi() |
| | | this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex |
| | | this.isWorking.search = true |
| | |
| | | <style lang="scss" scoped> |
| | | .detail_modal { |
| | | padding: 20px 16px; |
| | | |
| | | .title { |
| | | text-align: center; |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .h1 { |
| | | font-weight: 600; |
| | | font-size: 16px; |
| | | margin-bottom: 15px; |
| | | } |
| | | |
| | | .line { |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | |
| | | .label { |
| | | width: 70px; |
| | | color: #888888; |
| | | } |
| | | |
| | | .value { |
| | | color: #333333; |
| | | } |
| | |
| | | data |
| | | }) |
| | | } |
| | | // ä¼è®®å®¤ å¼å§ |
| | | export const startMeetignById = (data) => { |
| | | return http({ |
| | | url: 'meetingAdmin/cloudService/web/meeting/start', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | // ä¼è®®å®¤ æåå¼å§ |
| | | export const startEarlyMeetignById = (data) => { |
| | | return http({ |
| | | url: 'meetingAdmin/cloudService/web/meeting/startEarly', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | |
| | | "proxy" : { |
| | | "/admin_interface" : { |
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å |
| | | "target" : "http://192.168.137.1:10010", // 代çæå¡å¨ååæIPå°å |
| | | "target" : "http://172.20.10.7:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://192.168.31.42:10010", // 代çæå¡å¨ååæIPå°å |
| | | // "target" : "http://10.50.250.178:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å |
| | | "changeOrigin" : true, // å
许跨å |
| | |
| | | <view class="empty empty2"></view> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '1'"> |
| | | <view class="btn" @click="openCancel">æ¤å</view> |
| | | <view class="btn agree" @click="handleEdit">ä¿®æ¹</view> |
| | | <view class="btn edit" @click="handleEdit">ä¿®æ¹</view> |
| | | <view class="btn agree" @click="handleStart">å¼å§ä¼è®®</view> |
| | | </view> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '2'"> |
| | | <view class="main_footer" v-if="detail.meetingStatus == '2' && detail.isAdmin == 1"> |
| | | <view class="btn agree" @click="openClose">ç»æ</view> |
| | | </view> |
| | | <!-- æ¤å --> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { meetingDetail, cancelById, closeMeetignById } from '@/api' |
| | | import { meetingDetail, cancelById, closeMeetignById,startMeetignById,startEarlyMeetignById } from '@/api' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | setTimeout(() => { |
| | | uni.showToast({ |
| | | title: 'æäº¤æå', |
| | | icon: 'success' |
| | | icon: 'none' |
| | | }) |
| | | }) |
| | | setTimeout(() => { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | handleStart() { |
| | | const { id, detail } = this |
| | | let fn = new Date(detail.startTime).getTime() > new Date().getTime() ? startEarlyMeetignById : startMeetignById |
| | | fn({ id }).then(res => { |
| | | if (res.code === 200) { |
| | | setTimeout(() => { |
| | | uni.showToast({ |
| | | title: 'ä¼è®®å·²å¼å§', |
| | | icon: 'none' |
| | | }) |
| | | }) |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | handleEdit() { |
| | | const { id } = this |
| | | uni.navigateTo({ |
| | |
| | | background-color: #fff; |
| | | padding: 0 30rpx; |
| | | .btn { |
| | | flex: 1; |
| | | flex: 3; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: #ffffff; |
| | |
| | | text-align: center; |
| | | margin: 16rpx 8rpx; |
| | | } |
| | | |
| | | .edit{ |
| | | color: $uni-color-primary; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | .agree { |
| | | flex: 5; |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | |
| | | <template> |
| | | <view class="main_app" :class="{ popupShow: isShowSelMem }"> |
| | | <view class="search_inp df_ac"> |
| | | <image |
| | | class="mr12 search" |
| | | src="../../static/ic_search@2x.png" |
| | | mode="widthFix" |
| | | ></image> |
| | | <input |
| | | v-model="param.keyword" |
| | | @blur="initData()" |
| | | type="text" |
| | | placeholder="æç´¢" |
| | | placeholder-style="color: #999999;" |
| | | /> |
| | | </view> |
| | | <view class="member_list"> |
| | | <view v-for="(item, index) in memberList" :key="item.id" class="line"> |
| | | <image |
| | | v-if="item.avatar" |
| | | :src="item.prefixUrl + item.avatar" |
| | | class="avatar" |
| | | mode="" |
| | | ></image> |
| | | <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view> |
| | | <view class="content"> |
| | | <view class="info"> |
| | | <text class="name">{{ item.realname }}</text> |
| | | <text class="tag" v-if="item.status == '1'">æä¼è®®</text> |
| | | </view> |
| | | <view class="depart">{{ item.departmentName }}</view> |
| | | </view> |
| | | <image |
| | | @click="changeMem(item, index)" |
| | | v-if="item.checked" |
| | | src="@/static/checkbox_sel@2x.png" |
| | | mode="widthFix" |
| | | class="checked" |
| | | ></image> |
| | | <image |
| | | @click="changeMem(item, index)" |
| | | v-if="!item.checked" |
| | | src="@/static/meeting/icon/ic_choose@2x.png" |
| | | mode="widthFix" |
| | | class="checked" |
| | | ></image> |
| | | <text></text> |
| | | </view> |
| | | <view class="empty"></view> |
| | | </view> |
| | | <!-- --> |
| | | <view class="sub_wrap"> |
| | | <view class="sel_mem"> |
| | | <text>已鿩ï¼</text> |
| | | <view class="members"> |
| | | <text v-for="(item, i) in selList" :key="i" |
| | | >{{ item.realname }}ï¼</text |
| | | > |
| | | </view> |
| | | <image |
| | | @click="isShowSelMem = true" |
| | | class="open_icon" |
| | | src="../../static/staff/renyuan_ic_open.png" |
| | | mode="" |
| | | ></image> |
| | | </view> |
| | | <view class="btn" @click="onSubmit" |
| | | >确认({{ selList.length }}/{{ param.limitNum }})</view |
| | | > |
| | | </view> |
| | | <!-- --> |
| | | <u-popup |
| | | catchtouchmove |
| | | :show="isShowSelMem" |
| | | :round="12" |
| | | mode="bottom" |
| | | @close="closeModal" |
| | | > |
| | | <view class="modal"> |
| | | <view class="modal_header"> |
| | | <text class="status">已鿩ï¼{{ selList.length }}人</text> |
| | | <text class="btn" @click="subSelMem">确认</text> |
| | | </view> |
| | | <view class="modal_mem_list"> |
| | | <view class="line" v-for="(item, i) in selList" :key="i"> |
| | | <image |
| | | v-if="item.avatar" |
| | | :src="item.prefixUrl + item.avatar" |
| | | class="avatar" |
| | | mode="" |
| | | ></image> |
| | | <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view> |
| | | <view class="content"> |
| | | <view class="info"> |
| | | <text class="name">{{ item.realname }}</text> |
| | | </view> |
| | | <view class="depart">{{ item.departmentName }}</view> |
| | | </view> |
| | | <view class="btn" @click="handleRemove(i)">ç§»é¤</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { userPagePost } from '@/api' |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | data() { |
| | | return { |
| | | memberList: [], |
| | | selList: [], |
| | | param: { |
| | | limitNum: '' |
| | | }, |
| | | pagination: { |
| | | page: 1, |
| | | capacity: 20 |
| | | }, |
| | | |
| | | isShowSelMem: false |
| | | } |
| | | }, |
| | | onLoad(option) { |
| | | this.param = { |
| | | limitNum: option.limitNum, |
| | | keyword: '', |
| | | startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'), |
| | | endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'), |
| | | } |
| | | this.initData() |
| | | }, |
| | | mounted() { |
| | | this.$eventBus.$on('meetingPeoDetail', (res) => { |
| | | setTimeout(() => { |
| | | res.forEach(item => { |
| | | this.memberList.forEach(mem => { |
| | | if (item.id == mem.id) { |
| | | mem.checked = true |
| | | } |
| | | }) |
| | | }) |
| | | this.selList = this.memberList.filter(i => i.checked) |
| | | this.$nextTick(() => { |
| | | this.$forceUpdate() |
| | | }) |
| | | }, 1000) |
| | | }) |
| | | }, |
| | | methods: { |
| | | onSubmit() { |
| | | this.$eventBus.$emit('meetingPeo', this.selList) |
| | | uni.navigateBack() |
| | | }, |
| | | changeMem(item, index) { |
| | | const { selList, param } = this |
| | | if (this.selList.length == param.limitNum && !item.checked) return uni.showToast({ |
| | | title: `该ä¼è®®å¯å®¹çº³${param.limitNum}人`, |
| | | icon: 'none' |
| | | }) |
| | | item.checked = !item.checked |
| | | this.selList = this.memberList.filter(i => i.checked) |
| | | // const arr = e.detail.value |
| | | // let arrTemp = arr.map(item => { |
| | | // let obj = {} |
| | | // this.memberList.forEach(ite => { |
| | | // if (item == ite.id) { |
| | | // obj.name = ite.name.split('-')[0] |
| | | // obj.componey = ite.name.split('-')[1] || '' |
| | | // obj.id = ite.id |
| | | // } |
| | | // }) |
| | | // return obj |
| | | // }) |
| | | // this.selList = arrTemp |
| | | this.$forceUpdate() |
| | | }, |
| | | initData() { |
| | | const { param, pagination } = this |
| | | userPagePost({ |
| | | model: { ...param }, |
| | | ...pagination, |
| | | |
| | | }).then(res => { |
| | | this.memberList = res.data.records || [] |
| | | this.memberList.map(i => { |
| | | i.checked = false |
| | | }) |
| | | }) |
| | | }, |
| | | closeModal() { |
| | | this.selList = this.memberList.filter(i => i.checked) |
| | | this.isShowSelMem = false |
| | | }, |
| | | subSelMem() { |
| | | const { selList, memberList } = this |
| | | memberList.forEach(ite => { |
| | | ite.checked = false |
| | | selList.forEach(item => { |
| | | if (ite.id === item.id) { |
| | | ite.checked = true |
| | | } else { } |
| | | }) |
| | | }) |
| | | this.isShowSelMem = false |
| | | this.$forceUpdate() |
| | | }, |
| | | handleRemove(i) { |
| | | this.selList.splice(i, 1) |
| | | |
| | | // console.log(this.memberList); |
| | | this.$forceUpdate() |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .modal { |
| | | padding: 40rpx 30rpx; |
| | | max-height: 1000rpx; |
| | | .modal_header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding-bottom: 20rpx; |
| | | .status { |
| | | font-weight: 600; |
| | | } |
| | | .btn { |
| | | color: $uni-color-primary; |
| | | } |
| | | } |
| | | .modal_mem_list { |
| | | max-height: 860rpx; |
| | | overflow: auto; |
| | | .line { |
| | | display: flex; |
| | | align-items: center; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | padding: 30rpx 0; |
| | | .avatar { |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | margin-right: 20rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | background-color: $uni-color-primary; |
| | | color: #fff; |
| | | } |
| | | .content { |
| | | flex: 1; |
| | | .depart { |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | } |
| | | .info { |
| | | display: flex; |
| | | margin-bottom: 16rpx; |
| | | .name { |
| | | font-size: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | .btn { |
| | | width: 80rpx; |
| | | height: 48rpx; |
| | | line-height: 48rpx; |
| | | text-align: center; |
| | | font-size: 24rpx; |
| | | color: #333333; |
| | | border-radius: 4rpx; |
| | | border: 1rpx solid #999999; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .sub_wrap { |
| | | position: fixed; |
| | | bottom: 0; |
| | | background-color: #fff; |
| | | left: 0; |
| | | width: 100%; |
| | | box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2; |
| | | padding: 30rpx 30rpx 64rpx; |
| | | .sel_mem { |
| | | display: flex; |
| | | align-items: center; |
| | | .members { |
| | | width: 500rpx; |
| | | color: $uni-color-primary; |
| | | white-space: nowrap; |
| | | overflow: hidden; //ææ¬è¶
åºéè |
| | | text-overflow: ellipsis; |
| | | margin-right: 20rpx; |
| | | } |
| | | .open_icon { |
| | | width: 44rpx; |
| | | height: 44rpx; |
| | | } |
| | | } |
| | | .btn { |
| | | width: 690rpx; |
| | | height: 88rpx; |
| | | line-height: 88rpx; |
| | | background: $uni-color-primary; |
| | | border-radius: 44rpx; |
| | | color: #fff; |
| | | text-align: center; |
| | | margin-top: 22rpx; |
| | | } |
| | | } |
| | | .member_list { |
| | | .line { |
| | | display: flex; |
| | | align-items: center; |
| | | border-bottom: 1rpx solid #e5e5e5; |
| | | padding: 30rpx 0; |
| | | .avatar { |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | margin-right: 20rpx; |
| | | } |
| | | .content { |
| | | flex: 1; |
| | | .depart { |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | } |
| | | .info { |
| | | display: flex; |
| | | margin-bottom: 16rpx; |
| | | .name { |
| | | font-size: 30rpx; |
| | | } |
| | | .tag { |
| | | font-size: 24rpx; |
| | | border-radius: 4rpx; |
| | | border: 1rpx solid #f62710; |
| | | color: #f62710; |
| | | padding: 0rpx 6rpx; |
| | | margin-left: 8rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | } |
| | | } |
| | | .checked { |
| | | width: 48rpx; |
| | | } |
| | | } |
| | | .empty { |
| | | width: 100%; |
| | | height: 280rpx; |
| | | } |
| | | } |
| | | .search_inp { |
| | | height: 72rpx; |
| | | background: #f7f7f7; |
| | | border-radius: 4rpx; |
| | | padding-left: 16rpx; |
| | | .search { |
| | | width: 28rpx; |
| | | } |
| | | input { |
| | | flex: 1; |
| | | font-size: 28rpx; |
| | | color: #333333; |
| | | } |
| | | } |
| | | </style> |
| | | <template>
|
| | | <view class="main_app" :class="{ popupShow: isShowSelMem }">
|
| | | <view class="search_inp df_ac">
|
| | | <image class="mr12 search" src="../../static/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="param.keyword" @blur="initData()" type="text" placeholder="æç´¢"
|
| | | placeholder-style="color: #999999;" />
|
| | | </view>
|
| | | <view class="member_list">
|
| | | <view v-for="(item, index) in memberList" :key="item.id" class="line">
|
| | | <image v-if="item.avatar" :src="item.prefixUrl + item.avatar" class="avatar" mode=""></image>
|
| | | <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
|
| | | <view class="content">
|
| | | <view class="info">
|
| | | <text class="name">{{ item.realname }}</text>
|
| | | <text class="tag" v-if="item.status == '1'">æä¼è®®</text>
|
| | | </view>
|
| | | <view class="depart">{{ item.departmentName }}</view>
|
| | | </view>
|
| | | <image @click="changeMem(item, index)" v-if="item.checked" src="@/static/checkbox_sel@2x.png" mode="widthFix"
|
| | | class="checked"></image>
|
| | | <image @click="changeMem(item, index)" v-if="!item.checked" src="@/static/meeting/icon/ic_choose@2x.png"
|
| | | mode="widthFix" class="checked"></image>
|
| | | <text></text>
|
| | | </view>
|
| | | <view class="empty"></view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="sub_wrap">
|
| | | <view class="sel_mem">
|
| | | <text>已鿩ï¼</text>
|
| | | <view class="members">
|
| | | <text v-for="(item, i) in selList" :key="i">{{ item.realname }}ï¼</text>
|
| | | </view>
|
| | | <image @click="openSeleter" class="open_icon" src="../../static/staff/renyuan_ic_open.png" mode=""></image>
|
| | | </view>
|
| | | <view class="btn" @click="onSubmit">确认({{ selList.length }}/{{ param.limitNum }})</view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <u-popup catchtouchmove :show="isShowSelMem" :round="12" mode="bottom" @close="closeModal">
|
| | | <view class="modal">
|
| | | <view class="modal_header">
|
| | | <text class="status">已鿩ï¼{{ selList.filter(i => i.checkedTemp).length }}人</text>
|
| | | <text class="btn" @click="subSelMem">确认</text>
|
| | | </view>
|
| | | <view class="modal_mem_list">
|
| | | <template v-for="(item, i) in selList">
|
| | | <view class="line" v-if="item.checkedTemp">
|
| | | <image v-if="item.avatar" :src="item.prefixUrl + item.avatar" class="avatar" mode=""></image>
|
| | | <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
|
| | | <view class="content">
|
| | | <view class="info">
|
| | | <text class="name">{{ item.realname }}</text>
|
| | | </view>
|
| | | <view class="depart">{{ item.departmentName }}</view>
|
| | | </view>
|
| | | <view class="btn" @click="handleRemove(i)">ç§»é¤</view>
|
| | | </view>
|
| | | </template>
|
| | | </view>
|
| | | </view>
|
| | | </u-popup>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | userPagePost
|
| | | } from '@/api'
|
| | | import dayjs from 'dayjs'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | memberList: [],
|
| | | selList: [],
|
| | | param: {
|
| | | limitNum: ''
|
| | | },
|
| | | pagination: {
|
| | | page: 1,
|
| | | capacity: 20
|
| | | },
|
| | |
|
| | | isShowSelMem: false
|
| | | }
|
| | | },
|
| | | onLoad(option) {
|
| | | this.param = {
|
| | | limitNum: option.limitNum,
|
| | | keyword: '',
|
| | | startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'),
|
| | | endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'),
|
| | | }
|
| | | this.initData()
|
| | | },
|
| | | mounted() {
|
| | | this.$eventBus.$on('meetingPeoDetail', (res) => {
|
| | | setTimeout(() => {
|
| | | res.forEach(item => {
|
| | | this.memberList.forEach(mem => {
|
| | | if (item.id == mem.id) {
|
| | | mem.checked = true
|
| | | }
|
| | | })
|
| | | })
|
| | | this.selList = this.memberList.filter(i => i.checked)
|
| | | this.$nextTick(() => {
|
| | | this.$forceUpdate()
|
| | | })
|
| | | }, 1000)
|
| | | })
|
| | | },
|
| | | methods: {
|
| | | onSubmit() {
|
| | | this.$eventBus.$emit('meetingPeo', this.selList)
|
| | | uni.navigateBack()
|
| | | },
|
| | | changeMem(item, index) {
|
| | | // const { selList, param } = this
|
| | | // if (this.selList.length == param.limitNum && !item.checked) return uni.showToast({
|
| | | // title: `该ä¼è®®å¯å®¹çº³${param.limitNum}人`,
|
| | | // icon: 'none'
|
| | | // })
|
| | | // item.checked = !item.checked
|
| | | // this.selList = this.memberList.filter(i => i.checked)
|
| | | // // |
| | | item.checked = !item.checked
|
| | | const i = this.selList.findIndex(a => a.id === item.id)
|
| | | if (item.checked && i === -1) {
|
| | | this.selList.push(item)
|
| | | } else {
|
| | | this.selList.splice(i, 1)
|
| | | }
|
| | | this.$forceUpdate()
|
| | | },
|
| | | openSeleter() {
|
| | | this.isShowSelMem = true
|
| | | this.selList.forEach(item => {
|
| | | item.checkedTemp = true
|
| | | })
|
| | | this.$forceUpdate()
|
| | | },
|
| | | initData() {
|
| | | const {
|
| | | param,
|
| | | pagination
|
| | | } = this
|
| | | userPagePost({
|
| | | model: {
|
| | | ...param
|
| | | },
|
| | | ...pagination,
|
| | |
|
| | | }).then(res => {
|
| | | this.memberList = res.data.records || []
|
| | | this.memberList.forEach(i => {
|
| | | const index = this.selList.findIndex(ite => ite.id === i.id)
|
| | | i.checked = index > -1
|
| | | })
|
| | | })
|
| | | },
|
| | | closeModal() {
|
| | | this.selList.forEach(item => {
|
| | | item.checkedTemp = true
|
| | | })
|
| | | this.isShowSelMem = false
|
| | | },
|
| | | subSelMem() {
|
| | | const {
|
| | | memberList
|
| | | } = this
|
| | | this.selList = this.selList.filter(i => i.checkedTemp)
|
| | | memberList.forEach(ite => {
|
| | | const index = this.selList.findIndex(i => i.id === ite.id)
|
| | | ite.checked = index > -1
|
| | | })
|
| | | this.isShowSelMem = false
|
| | | this.$forceUpdate()
|
| | | },
|
| | | handleRemove(i) {
|
| | | this.selList[i].checkedTemp = false
|
| | | this.$forceUpdate()
|
| | | },
|
| | | }
|
| | | };
|
| | | </script>
|
| | |
|
| | | <style lang="scss">
|
| | | .modal {
|
| | | padding: 40rpx 30rpx;
|
| | | max-height: 1000rpx;
|
| | |
|
| | | .modal_header {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | | padding-bottom: 20rpx;
|
| | |
|
| | | .status {
|
| | | font-weight: 600;
|
| | | }
|
| | |
|
| | | .btn {
|
| | | color: $uni-color-primary;
|
| | | }
|
| | | }
|
| | |
|
| | | .modal_mem_list {
|
| | | max-height: 860rpx;
|
| | | overflow: auto;
|
| | |
|
| | | .line {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | | padding: 30rpx 0;
|
| | |
|
| | | .avatar {
|
| | | width: 64rpx;
|
| | | height: 64rpx;
|
| | | border-radius: 50%;
|
| | | overflow: hidden;
|
| | | margin-right: 20rpx;
|
| | | display: flex;
|
| | | justify-content: center;
|
| | | align-items: center;
|
| | | background-color: $uni-color-primary;
|
| | | color: #fff;
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1;
|
| | |
|
| | | .depart {
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | }
|
| | |
|
| | | .info {
|
| | | display: flex;
|
| | | margin-bottom: 16rpx;
|
| | |
|
| | | .name {
|
| | | font-size: 30rpx;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .btn {
|
| | | width: 80rpx;
|
| | | height: 48rpx;
|
| | | line-height: 48rpx;
|
| | | text-align: center;
|
| | | font-size: 24rpx;
|
| | | color: #333333;
|
| | | border-radius: 4rpx;
|
| | | border: 1rpx solid #999999;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .sub_wrap {
|
| | | position: fixed;
|
| | | bottom: 0;
|
| | | background-color: #fff;
|
| | | left: 0;
|
| | | width: 100%;
|
| | | box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
|
| | | padding: 30rpx 30rpx 64rpx;
|
| | |
|
| | | .sel_mem {
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .members {
|
| | | width: 500rpx;
|
| | | color: $uni-color-primary;
|
| | | white-space: nowrap;
|
| | | overflow: hidden; //ææ¬è¶
åºéè
|
| | | text-overflow: ellipsis;
|
| | | margin-right: 20rpx;
|
| | | }
|
| | |
|
| | | .open_icon {
|
| | | width: 44rpx;
|
| | | height: 44rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .btn {
|
| | | width: 690rpx;
|
| | | height: 88rpx;
|
| | | line-height: 88rpx;
|
| | | background: $uni-color-primary;
|
| | | border-radius: 44rpx;
|
| | | color: #fff;
|
| | | text-align: center;
|
| | | margin-top: 22rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .member_list {
|
| | | .line {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | | padding: 30rpx 0;
|
| | |
|
| | | .avatar {
|
| | | width: 64rpx;
|
| | | height: 64rpx;
|
| | | border-radius: 50%;
|
| | | overflow: hidden;
|
| | | margin-right: 20rpx;
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1;
|
| | |
|
| | | .depart {
|
| | | font-size: 24rpx;
|
| | | color: #666666;
|
| | | }
|
| | |
|
| | | .info {
|
| | | display: flex;
|
| | | margin-bottom: 16rpx;
|
| | |
|
| | | .name {
|
| | | font-size: 30rpx;
|
| | | }
|
| | |
|
| | | .tag {
|
| | | font-size: 24rpx;
|
| | | border-radius: 4rpx;
|
| | | border: 1rpx solid #f62710;
|
| | | color: #f62710;
|
| | | padding: 0rpx 6rpx;
|
| | | margin-left: 8rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | .checked {
|
| | | width: 48rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .empty {
|
| | | width: 100%;
|
| | | height: 280rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .search_inp {
|
| | | height: 72rpx;
|
| | | background: #f7f7f7;
|
| | | border-radius: 4rpx;
|
| | | padding-left: 16rpx;
|
| | |
|
| | | .search {
|
| | | width: 28rpx;
|
| | | }
|
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | font-size: 28rpx;
|
| | | color: #333333;
|
| | | }
|
| | | }
|
| | | </style> |
| | |
| | | <view class="member_list"> |
| | | <checkbox-group @change="changeMem"> |
| | | <view v-for="item in memberList" :key="item.id" class="line"> |
| | | <image |
| | | :src=" |
| | | item.faceImgFull |
| | | ? item.faceImgFull |
| | | : require('@/static/default_avatar.png') |
| | | " |
| | | class="avatar" |
| | | mode="" |
| | | ></image> |
| | | <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar" ></image> |
| | | <span v-else class="img_name">{{item.name && item.name.slice(0,1)}}</span> |
| | | <view class="content"> |
| | | <view class="info"> |
| | | <text class="name">{{ item.name }}</text> |
| | |
| | | overflow: hidden; |
| | | margin-right: 20rpx; |
| | | } |
| | | .img_name{ |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | line-height: 64rpx; |
| | | text-align: center; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | margin-right: 20rpx; |
| | | background: $uni-color-primary; |
| | | color: #fff; |
| | | border: 1rpx solid $uni-color-primary; |
| | | } |
| | | .content { |
| | | flex: 1; |
| | | .depart { |
| | |
| | | <view class="img_wrap" v-for="item in info.submitFileList" :key="item.id">
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
|
| | | class="img" />
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" class="video" controls />
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" class="video" :controls="false" />
|
| | | </view>
|
| | | </view>
|
| | | <view class="text_wrap">
|
| | |
| | | </view>
|
| | | <!-- -->
|
| | | <view class="emyty"></view>
|
| | | <view v-if="info.status == 1 || info.status == 2" class="module_list"> |
| | | <view class="flow_title">å¤çç»æ</view>
|
| | | <view v-if="info.status == 1 || info.status == 2" class="module_list">
|
| | | <view class="title">å¤çç»æ</view>
|
| | | <view class="item">
|
| | | <view class="label">å¤çç»æ</view>
|
| | | <view class="value primaryColor" :class="{ red: info.status == 2 }">{{ statusMap[info.status] }}</view>
|
| | |
| | | <view class="value">
|
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i">
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull"></video>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | <view class="value">
|
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i">
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull"></video>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | |
| | | v-if="info.status == 1 || index < flowList.length - 1" />
|
| | | <image src="@/static/staff/liucheng_fail@2x.png" class="status"
|
| | | v-if="info.status == 2 && index == flowList.length - 1" />
|
| | | <image v-if="item.avatar != null && item.avatar != ''" :src="item.avatar" class="img" alt="" /> |
| | | <image v-if="item.avatar != null && item.avatar != ''" :src="item.avatar" class="img" alt="" />
|
| | | <!-- <image v-else src="@/static/default_avatar.png" class="img" mode=""></image> -->
|
| | | <span v-if="item.avatar == null || item.avatar == ''"
|
| | | class="img_name">{{ item.createUserName && item.createUserName.slice(0, 1) }}</span>
|
| | |
| | | <view class="content">
|
| | | <view class="head">
|
| | | <view class="event">{{ item.title }}</view>
|
| | | <view class="time">{{ item.createDate }}</view>
|
| | | <view class="time" v-if="item.createDate">{{ item.createDate.slice(0,16) }}</view>
|
| | | </view>
|
| | | <view class="line">
|
| | | <view class="company">
|
| | |
| | | </view>
|
| | | <view class="emyty"></view>
|
| | | <view class="main_footer">
|
| | | <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">éå</view>
|
| | | <view v-if="info.status==0 && info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">转交</view>
|
| | | <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn handle" @click="handleOpen">å¤ç</view>
|
| | | <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">éå</view>
|
| | | <view v-if="info.status==0 && info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">
|
| | | 转交</view>
|
| | | <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn handle" @click="handleOpen">å¤ç
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | <!-- éå -->
|
| | |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealBeforeFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull"></video>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">éå说æ</view>
|
| | |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealBeforeFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull"></video>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">
|
| | |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealAfterFileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull"></video>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">æ´æ¹è¯´æ</view>
|
| | |
| | | <view class="member_list">
|
| | | <view class="mt24 placeholder6">å
±{{ memberList.length }}æ¡æ°æ®</view>
|
| | | <view v-for="item in memberList" :key="item.id" class="line">
|
| | | <image :src="item.faceImgFull ? item.faceImgFull : require('@/static/meeting/common/default_user@2x.png')"
|
| | | class="avatar" mode=""></image>
|
| | | <image v-if="item.faceImgFull" :src="item.faceImgFull" class="avatar"></image>
|
| | | <span v-else class="img_name">{{item.name && item.name.slice(0,1)}}</span>
|
| | | <view class="content">
|
| | | <view class="info">
|
| | | <text class="name">{{ item.name }}</text>
|
| | |
| | | </view>
|
| | | <view class="depart">{{ item.companyName }}</view>
|
| | | </view>
|
| | | <image @click="changeMem(item)" v-if="transferParam.id == item.id"
|
| | | src="@/static/checkbox_sel@2x.png" mode="widthFix" class="checked"></image>
|
| | | <image @click="changeMem(item)" v-else src="@/static/video@2x.png" mode="widthFix"
|
| | | class="checked"></image>
|
| | | <image @click="changeMem(item)" v-if="transferParam.id == item.id" src="@/static/checkbox_sel@2x.png"
|
| | | mode="widthFix" class="checked"></image>
|
| | | <image @click="changeMem(item)" v-else src="@/static/video@2x.png" mode="widthFix" class="checked"></image>
|
| | | <text></text>
|
| | | </view>
|
| | | <view class="empty"></view>
|
| | |
| | | </view>
|
| | | </u-popup>
|
| | | <!-- éåæ¶é´ -->
|
| | | <u-datetime-picker :show="isShowBackDate" @confirm="confirmBackDate" @cancel="isShowBackDate = false"
|
| | | <u-datetime-picker :show="isShowBackDate" :minDate="new Date().getTime()" :closeOnClickOverlay="false"
|
| | | @confirm="confirmBackDate" @close="isShowBackDate = false" @cancel="isShowBackDate = false"
|
| | | mode="datetime"></u-datetime-picker>
|
| | |
|
| | | <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
|
| | |
| | | return {
|
| | | isShowBack: false,
|
| | | param: {},
|
| | | info: {}, |
| | | info: {},
|
| | | userInfo: this.$store.state.userInfo,
|
| | | flowList: [],
|
| | |
|
| | |
| | | },
|
| | | handleOpen() {
|
| | | this.isShowHandle = true;
|
| | | const submitFileList = this.info.submitFileList || [] |
| | | const submitFileList = this.info.submitFileList || []
|
| | | this.submitFileList = [...submitFileList];
|
| | | this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
|
| | | },
|
| | | handleBack() {
|
| | | this.isShowBack = true; |
| | | this.isShowBack = true;
|
| | | // const submitFileList = this.info.submitFileList || []
|
| | | // this.submitFileList = [...submitFileList]; |
| | | // this.submitFileList = [...submitFileList];
|
| | | this.dealBeforeFileList = []
|
| | | this.$set(this.backParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
|
| | | },
|
| | |
| | | },
|
| | | getMemList() {
|
| | | findHiddenAreaMemberList({
|
| | | model: {
|
| | | ...this.transferModel,
|
| | | id: this.info.areaId
|
| | | },
|
| | | ...this.transferModel,
|
| | | id: this.info.areaId,
|
| | | ...this.pagination
|
| | | }).then(res => {
|
| | | this.memberList = res.data || [];
|
| | |
| | | }
|
| | | };
|
| | | </script>
|
| | | <style>
|
| | |
|
| | | <style lang="scss">
|
| | | page {
|
| | | background-color: #f7f7f7;
|
| | |
|
| | | ::v-deep .u-popup__content {
|
| | | border-top: 1rpx solid #cccccc;
|
| | | }
|
| | | }
|
| | | </style>
|
| | | <style lang="scss">
|
| | |
|
| | | .main_app {
|
| | | background-color: #fff;
|
| | | padding-bottom: 0;
|
| | | .flow_title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 24rpx; |
| | |
|
| | | .flow_title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 24rpx;
|
| | | }
|
| | |
|
| | | .flow_wrap {
|
| | | padding: 30rpx 0;
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .line{ |
| | | .company{ |
| | | font-size: 26rpx; |
| | | color: #777777; |
| | | } |
| | | .status-green{ |
| | | color: $uni-color-primary; |
| | | } |
| | | .status-red{ |
| | | color: red; |
| | | } |
| | | .line {
|
| | | .company {
|
| | | font-size: 26rpx;
|
| | | color: #777777;
|
| | | }
|
| | |
|
| | | .status-green {
|
| | | color: $uni-color-primary;
|
| | | }
|
| | |
|
| | | .status-red {
|
| | | color: red;
|
| | | }
|
| | | }
|
| | |
|
| | | .remark {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .module_list { |
| | | .title{ |
| | | |
| | | .module_list {
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | padding-top: 28rpx;
|
| | | }
|
| | |
|
| | | .item {
|
| | | padding: 30rpx 0;
|
| | | border-bottom: 1rpx solid #e5e5e5;
|
| | |
| | | }
|
| | |
|
| | | .video {
|
| | | height: 160rpx;
|
| | | width: 100%;
|
| | | max-height: 100%;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | max-height: 120rpx;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | margin-right: 20rpx;
|
| | | }
|
| | |
|
| | | .img_name {
|
| | | width: 64rpx;
|
| | | height: 64rpx;
|
| | | line-height: 64rpx;
|
| | | text-align: center;
|
| | | border-radius: 50%;
|
| | | overflow: hidden;
|
| | | margin-right: 20rpx;
|
| | | background: $uni-color-primary;
|
| | | color: #fff;
|
| | | border: 1rpx solid $uni-color-primary;
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1;
|
| | |
|
| | |
| | | { |
| | | "openVueDevtools" : false, |
| | | "type" : "uni-app:h5" |
| | | } |
| | | }, |
| | | { |
| | | "app-plus" : |
| | | { |
| | | "launchtype" : "local" |
| | | }, |
| | | "type" : "uniCloud" |
| | | } |
| | | ] |
| | | } |
| | |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | "h5": {
|
| | | "router": {
|
| | | "mode": "hash",
|
| | | "base": "./"
|
| | | },
|
| | | // "base" : "/h5/"
|
| | | "devServer": {
|
| | | "port": 8090,
|
| | | "historyApiFallback": true,
|
| | | "disableHostCheck": true,
|
| | | "proxy": {
|
| | | "/meetingAdmin": {
|
| | | // è¿ä¸ªå段åéä¸ä½ é
ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å
|
| | | // "target" : "http://192.168.0.173/admin_interface", // 代çæå¡å¨ååæIPå°å
|
| | | "target": "http://192.168.137.1:10010", // 代çæå¡å¨ååæIPå°å
|
| | | "changeOrigin": true, // å
许跨å |
| | | "pathRewrite": {
|
| | | "^/meetingAdmin": "" // éåå°åï¼å¦æå®é
æ¥å£ä¸æ¯ä¸å¸¦/dev-apiï¼éè¦å°è¿ä¸ªåç¼ç½®ç©ºï¼å 为è¿ä¸ªåç¼åªæ¯ä¸ºäºè¯å«ç¨ï¼è¯å«å®ä¹å就没ç¨äº
|
| | | }
|
| | | }
|
| | | },
|
| | | "https": false
|
| | | }
|
| | | }, |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus" : { |
| | | "usingComponents" : true, |
| | |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios" : {}, |
| | | "ios" : { |
| | | "dSYMs" : false |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs" : {} |
| | | "sdkConfigs" : { |
| | | "ad" : {} |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | |
| | | "requires": true, |
| | | "lockfileVersion": 1, |
| | | "dependencies": { |
| | | "balanced-match": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |
| | | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" |
| | | }, |
| | | "brace-expansion": { |
| | | "version": "2.0.1", |
| | | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", |
| | | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", |
| | | "requires": { |
| | | "balanced-match": "^1.0.0" |
| | | } |
| | | }, |
| | | "dayjs": { |
| | | "version": "1.11.13" |
| | | "version": "1.11.13", |
| | | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", |
| | | "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" |
| | | }, |
| | | "decompress-response": { |
| | | "version": "6.0.0", |
| | | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", |
| | | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", |
| | | "requires": { |
| | | "mimic-response": "^3.1.0" |
| | | } |
| | | }, |
| | | "fs.realpath": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
| | | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" |
| | | }, |
| | | "glob": { |
| | | "version": "8.1.0", |
| | | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", |
| | | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", |
| | | "requires": { |
| | | "fs.realpath": "^1.0.0", |
| | | "inflight": "^1.0.4", |
| | | "inherits": "2", |
| | | "minimatch": "^5.0.1", |
| | | "once": "^1.3.0" |
| | | } |
| | | }, |
| | | "inflight": { |
| | | "version": "1.0.6", |
| | | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
| | | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", |
| | | "requires": { |
| | | "once": "^1.3.0", |
| | | "wrappy": "1" |
| | | } |
| | | }, |
| | | "inherits": { |
| | | "version": "2.0.4", |
| | | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |
| | | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" |
| | | }, |
| | | "js-binary-schema-parser": { |
| | | "version": "2.0.3", |
| | | "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz", |
| | | "integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==" |
| | | }, |
| | | "mimic-response": { |
| | | "version": "3.1.0", |
| | | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", |
| | | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" |
| | | }, |
| | | "minimatch": { |
| | | "version": "5.1.6", |
| | | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", |
| | | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", |
| | | "requires": { |
| | | "brace-expansion": "^2.0.1" |
| | | } |
| | | }, |
| | | "once": { |
| | | "version": "1.4.0", |
| | | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
| | | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", |
| | | "requires": { |
| | | "wrappy": "1" |
| | | } |
| | | }, |
| | | "parenthesis": { |
| | | "version": "3.1.8", |
| | | "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz", |
| | | "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==" |
| | | }, |
| | | "simple-concat": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", |
| | | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" |
| | | }, |
| | | "simple-get": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", |
| | | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", |
| | | "requires": { |
| | | "decompress-response": "^6.0.0", |
| | | "once": "^1.3.1", |
| | | "simple-concat": "^1.0.0" |
| | | } |
| | | }, |
| | | "string-split-by": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", |
| | | "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", |
| | | "requires": { |
| | | "parenthesis": "^3.1.5" |
| | | } |
| | | }, |
| | | "vue-qr": { |
| | | "version": "4.0.9", |
| | | "resolved": "https://registry.npmjs.org/vue-qr/-/vue-qr-4.0.9.tgz", |
| | | "integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==", |
| | | "requires": { |
| | | "glob": "^8.0.1", |
| | | "js-binary-schema-parser": "^2.0.2", |
| | | "simple-get": "^4.0.1", |
| | | "string-split-by": "^1.0.0" |
| | | } |
| | | }, |
| | | "wrappy": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
| | | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" |
| | | "uqrcodejs": { |
| | | "version": "4.0.7", |
| | | "resolved": "https://registry.npmjs.org/uqrcodejs/-/uqrcodejs-4.0.7.tgz", |
| | | "integrity": "sha512-84+aZmD2godCVI+93lxE3YUAPNY8zAJvNA7xRS7R7U+q57KzMDepBSfNCwoRUhWOfR6eHFoAOcHRPwsP6ka1cA==" |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | "dependencies": { |
| | | "dayjs": "^1.11.13", |
| | | "vue-qr": "^4.0.9" |
| | | "uqrcodejs": "^4.0.7" |
| | | } |
| | | } |
| | |
| | | <view class="item"> |
| | | <view class="title">æ¥å£å°å</view> |
| | | <view class="line"> |
| | | <input type="text" v-model="param.addr" /> |
| | | <input type="text" v-model="param.baseUrl" /> |
| | | <image src="../../static/icon/right.svg" class="icon"></image> |
| | | </view> |
| | | </view> |
| | |
| | | }) |
| | | }) |
| | | setTimeout(()=>{ |
| | | uni.navigateBack() |
| | | uni.redirectTo({ |
| | | url:'/pages/index/index' |
| | | }) |
| | | }, 400) |
| | | } |
| | | } |
| | |
| | | <text>é¢çº¦äººï¼{{meetingInfo.bookingUser }}</text>
|
| | | </view>
|
| | | </view> |
| | | <vueQr v-if="meetingInfo.id" :text="meetingInfo.id" class="qrcode" />
|
| | | <canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas> |
| | | <!-- <vueQr v-if="meetingInfo.id" :text="meetingInfo.id" class="qrcode" /> -->
|
| | | </view>
|
| | | <view class="meeting_wrap">
|
| | | <view class="title">仿¥ä¼è®®ï¼{{ info.meetingListResponseList && info.meetingListResponseList.length > 0 ? info.meetingListResponseList.length : 0 }}ï¼</view>
|
| | |
| | |
|
| | | <script>
|
| | | import dayjs from 'dayjs' |
| | | import vueQr from 'vue-qr/src/packages/vue-qr.vue'
|
| | | // import vueQr from 'vue-qr/src/packages/vue-qr.vue' |
| | | import UQRCode from 'uqrcodejs'
|
| | | import {
|
| | | meetScreenData
|
| | | } from '@/api/index.js'
|
| | | export default { |
| | | components: {vueQr},
|
| | | // components: {vueQr},
|
| | | data() {
|
| | | return {
|
| | | time: '',
|
| | |
| | | meetingInfo: {}
|
| | | }
|
| | | },
|
| | | onLoad() {
|
| | | onShow() {
|
| | | this.initDatetime()
|
| | | this.param = uni.getStorageSync('param') || {}
|
| | | if (!this.param.code) {
|
| | |
| | | })
|
| | | }
|
| | | this.getData()
|
| | | }, |
| | | onReady() { |
| | | },
|
| | | methods: {
|
| | | getData() {
|
| | |
| | | this.info = res.data |
| | | if(this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0){ |
| | | this.meetingInfo = this.info.meetingListResponseList[0] |
| | | this.$forceUpdate() |
| | | this.qrcodeCreate() |
| | | } |
| | | })
|
| | | }, |
| | | qrcodeCreate(){ |
| | | // è·åuQRCodeå®ä¾ |
| | | var qr = new UQRCode(); |
| | | // 设置äºç»´ç å
容 |
| | | qr.data = "https://uqrcode.cn/doc"; |
| | | // 设置äºç»´ç 大å°ï¼å¿
é¡»ä¸canvas设置ç宽é«ä¸è´ |
| | | qr.size = 83; |
| | | // è°ç¨å¶ä½äºç»´ç æ¹æ³ |
| | | qr.make(); |
| | | // è·åcanvasä¸ä¸æ |
| | | var canvasContext = uni.createCanvasContext('qrcode', this); // 妿æ¯ç»ä»¶ï¼thiså¿
é¡»ä¼ å
¥ |
| | | // 设置uQRCodeå®ä¾çcanvasä¸ä¸æ |
| | | qr.canvasContext = canvasContext; |
| | | // è°ç¨ç»å¶æ¹æ³å°äºç»´ç 徿¡ç»å¶å°canvasä¸ |
| | | qr.drawCanvas(); |
| | | },
|
| | | touchend() {
|
| | | this.touchNum++
|
| | |
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: space-between;
|
| | | padding-bottom: 35rpx;
|
| | | padding-bottom: 42rpx;
|
| | | color: #fff;
|
| | | overflow: hidden;
|
| | | .meeting_wrap {
|
| | |
| | | }
|
| | |
|
| | | .qrcode {
|
| | | width: 166rpx;
|
| | | height: 166rpx;
|
| | | width: 83px;
|
| | | height: 83px;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | .header_wrap {
|
| | | padding: 34rpx 34rpx 0 0;
|
| | | padding: 42rpx 34rpx 0 0;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | |
| | | |
| | | export const baseUrl = 'meetingAdmin/' |
| | | // export const baseUrl = 'http://192.168.0.139:10010/admin_interface/' |
| | | // export const baseUrl = 'meetingAdmin/' |
| | | export const baseUrl = 'http://10.50.250.178:8088/gateway_interface/meetingAdmin/' |
| | | export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` |
| | | export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch` |
| | | |
| | |
| | | title: 'å è½½ä¸', |
| | | mask: true |
| | | }) |
| | | const param = uni.getStorageSync('param') || {} |
| | | uni.request({ |
| | | url: baseUrl + options.url, |
| | | url: param.baseUrl || baseUrl + options.url, |
| | | data: options.data || {}, |
| | | method: options.method || 'GET', |
| | | header: options.header || { |