Files
2026-09-08 19:49:21 +08:00

192 lines
6.0 KiB
HTML

<!--#
layout("/mobile/platform.html"){
#-->
<style>
#app {
background: #ececec;
}
.table-list {
margin-top: 64px;
}
.table-item {
margin: 16px;
background: #fff;
border-radius: 10px;
padding: 16px;
font-size: 14px;
color: #5b5a5a;
position: relative;
}
.table-item .header-title {
font-size: 18px;
font-weight: bold;
width: calc(100% - 100px);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.table-item .header-title-extra {
position: absolute;
right: 10px;
top: 10px;
}
.cell {
display: flex;
padding: 2px;
flex-wrap: nowrap;
}
.cell .title {
}
.cell .content {
}
.extra {
padding: 10px 0 0 0;
display: flex;
justify-content: flex-end;
gap: 10px;
}
</style>
<div id="app" v-cloak>
<div>
<van-nav-bar title="职工之家我的场地预约" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<div class="search-fixed">
<van-search
v-model="pageForm.searchKeyword"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入场地名称进行查询"
>
</van-search>
</div>
<div class="table-list">
<van-list v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<div v-for="item in tableData" :key="item.id" class="table-item">
<div>
<div class="header-title">
{{item.reserve_cause}}
</div>
<van-tag class="header-title-extra" :type="tagType(item.reserve_state)">
{{item.state_name}}
</van-tag>
<div class="cell">
<div class="title">预约场地:</div>
<div class="content">{{item.site_name}}</div>
</div>
<div class="cell">
<div class="title">开始时间:</div>
<div class="content">{{item.reserve_start_time}}</div>
</div>
<div class="cell">
<div class="title">结束时间:</div>
<div class="content">{{item.reserve_end_time}}</div>
</div>
<div class="cell">
<div class="title">预约人姓名:</div>
<div class="content">{{item.reserve_person_username}}</div>
</div>
<div class="cell">
<div class="title">预约人工号:</div>
<div class="content">{{item.reserve_person_loginname}}</div>
</div>
<div class="cell">
<div class="title">预约人部门:</div>
<div class="content">{{item.reserve_person_unitname}}</div>
</div>
<div class="cell">
<div class="title">预约人工会:</div>
<div class="content">{{item.reserve_person_unionname}}</div>
</div>
<div class="extra">
<van-button size="small" type="info" @click="openView(item.id)">查看详情</van-button>
<van-button size="small" type="danger" @click="revoke(item)" v-if="item.reserve_state===6098">撤销预约</van-button>
</div>
</div>
</div>
</van-list>
</div>
</div>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
tableData: [],
pageDataUrl:'/platform/activity/site/reserve/pageData'
}
},
computed: {
tagType() {
return (reserveState) => {
if (reserveState === 6138) {
return 'success';
} else if ([6108, 6128].includes(reserveState)) {
return 'danger';
}
return 'primary';
};
},
},
methods: {
async revoke(item) {
const {id, site_name, reserve_start_time, reserve_end_time} = item
this.$dialog.confirm({
title: '提示',
message: '您确定要撤销' + site_name + '\n' + reserve_start_time + "\n至\n" + reserve_end_time + '\n的预约吗?',
}).then(async () => {
const loading = this.$toast.loading({
message: '提交中...',
forbidClick: true,
});
const {
code,
msg
} = await $.post('/platform/activity/site/apply/revoke', {id})
loading.clear()
if (code === 0) {
this.doSearch()
this.$toast.success(msg)
} else {
this.$toast.fail(msg)
}
}).catch(() => {
})
},
openView(id) {
window.location.href = loc() + '/detail?id=' + id
}
},
created() {
// this.pageData()
}
})
</script>
<!--#
}
#-->