218 lines
11 KiB
HTML
218 lines
11 KiB
HTML
<!--#
|
||
layout("/layouts/platform.html"){
|
||
#-->
|
||
<div id="app" v-cloak>
|
||
<guava ref="guava">
|
||
<template>
|
||
<el-card shadow="never">
|
||
<div class="search">
|
||
<div class="search-item">
|
||
<div class="search-item-label">月份:</div>
|
||
<div class="search-item-option">
|
||
<el-date-picker
|
||
style="width: 100%"
|
||
@change="doSearch"
|
||
v-model="pageForm.time"
|
||
placeholder="请选择月份"
|
||
type="month"
|
||
value-format="yyyy-MM">
|
||
</el-date-picker>
|
||
</div>
|
||
</div>
|
||
<div class="search-item">
|
||
<div class="search-item-label">姓名工号:</div>
|
||
<div class="search-item-option">
|
||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||
style="width: 100%"
|
||
@keyup.enter.native="doSearch">
|
||
<el-select v-model="pageForm.searchName" slot="prepend"
|
||
placeholder="查询类型"
|
||
style="width: 80px;">
|
||
<el-option label="姓名" value="u.username"></el-option>
|
||
<el-option label="工号" value="u.loginname"></el-option>
|
||
</el-select>
|
||
</el-input>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="search-item">
|
||
<div class="search-item-label">场地名称:</div>
|
||
<div class="search-item-option">
|
||
<el-input @keyup.enter.native="doSearch" clearable clearable
|
||
placeholder="请输入场地名称"
|
||
style="width: 100%"
|
||
v-model="pageForm.siteName">
|
||
</el-input>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="search-item">
|
||
<div class="search-item-label">场地类型:</div>
|
||
<div class="search-item-option">
|
||
<el-select v-model="pageForm.siteType" placeholder="场地类型"
|
||
clearable filterable style="width: 100%">
|
||
<el-option v-for="item in activityTypeList" :label="item.text" :value="item.value"></el-option>
|
||
</el-select>
|
||
</div>
|
||
</div>
|
||
<div class="search-query">
|
||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||
</div>
|
||
</div>
|
||
</el-card>
|
||
|
||
<el-card shadow="never" class="mt10">
|
||
<table-tool :app="this" label="预约列表">
|
||
<template #func>
|
||
<el-radio-group @change="doSearch" class="mr10" size="small" v-model="pageForm.isAudit">
|
||
<el-radio-button :label="null">全部</el-radio-button>
|
||
<el-radio-button :label="true">已审核</el-radio-button>
|
||
<el-radio-button :label="false">未审核</el-radio-button>
|
||
</el-radio-group>
|
||
</template>
|
||
</table-tool>
|
||
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
|
||
align="center"
|
||
header-align="center">
|
||
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
|
||
width="80px"></el-table-column>
|
||
<el-table-column
|
||
:label="column.label"
|
||
:prop="column.prop"
|
||
:sortable="column.sortable"
|
||
align="center"
|
||
header-align="center"
|
||
show-overflow-tooltip
|
||
v-for="column in tableColumns"
|
||
>
|
||
|
||
<template scope="{row}" v-if="column.prop==='state_name'">
|
||
<!--<span :style="'color:'+row.state_color">{{row.state_name}}</span>-->
|
||
<span v-if="[0].includes(row.stateaudittype)"
|
||
style="color: #e6a23c">{{row.state_name}}</span>
|
||
<span v-if="row.stateaudittype==3" style="color: #67c23a">{{row.state_name}}</span>
|
||
<span v-if="row.stateaudittype==1" style="color: #f56c6c">{{row.state_name}}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||
width="200px">
|
||
<template scope="{row}">
|
||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||
<el-button v-if="row.reserve_state == 6098" @click="doProcess(row)" size="mini" type="primary">审核</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<!--#include("/layouts/pagination.html"){}#-->
|
||
</el-card>
|
||
</template>
|
||
|
||
<template #edit style="padding: 0 10%">
|
||
<reserve-info ref="auditInfo">
|
||
<template #handle>
|
||
<el-tab-pane label="分工会审核" name="fghsh">
|
||
<el-form :model="formData" label-suffix=":" label-width="100px" ref="auditForm">
|
||
<el-form-item label="审核人">
|
||
${@shiro.getPrincipalProperty('username')}
|
||
</el-form-item>
|
||
<el-form-item label="审核时间">
|
||
{{moment().format('YYYY-MM-DD')}}
|
||
</el-form-item>
|
||
<el-form-item :rules="[{required: true, message: '请输入审核意见', trigger: ['blur']}]"
|
||
label="审核意见"
|
||
prop="unionOption">
|
||
<el-input maxlength="300" rows="5" type="textarea"
|
||
v-model="formData.unionOption"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<el-row style="margin: 40px 0;text-align: right">
|
||
<el-button type="danger" @click="doReview(false)">拒绝</el-button>
|
||
<el-button type="primary" @click="doReview(true)">通过</el-button>
|
||
</el-row>
|
||
</el-tab-pane>
|
||
</template>
|
||
</reserve-info>
|
||
</template>
|
||
|
||
<template #view>
|
||
<reserve-info ref="reserve"></reserve-info>
|
||
</template>
|
||
</guava>
|
||
</div>
|
||
<script>
|
||
<!--# include("/platform/activity/includeJs/activityUtil.js"){} #-->
|
||
const activityUtil = new typeUtil()
|
||
var vue = new Vue({
|
||
el: '#app',
|
||
mixins: [initTableMixins],
|
||
data(){
|
||
return{
|
||
activityTypeList:[],
|
||
siteList:[],
|
||
pageForm: {
|
||
searchName: "u.username",
|
||
searchKeyword: "",
|
||
isAudit: false,
|
||
time: "",
|
||
},
|
||
tableColumns: [
|
||
{label: '场地名称', prop: 'site_name', sortable: true},
|
||
{label: '预约人姓名', prop: 'reserve_person_username', sortable: true},
|
||
{label: '预约人部门', prop: 'reserve_person_unitname', sortable: true},
|
||
{label: '开始时间', prop: 'reserve_start_time', sortable: true},
|
||
{label: '结束时间', prop: 'reserve_end_time', sortable: true},
|
||
{label: '联系电话', prop: 'reserve_person_phone'},
|
||
// {label: '活动名称', prop: 'reserve_activity'},
|
||
{label: '预约事由', prop: 'reserve_cause'},
|
||
{label: '预约状态', prop: 'state_name'},
|
||
],
|
||
}
|
||
},
|
||
components: {
|
||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||
'reserve-info': httpVueLoader('/components/activity/site/ReserveInfo.vue'),
|
||
},
|
||
methods:{
|
||
openView(row){
|
||
this.$refs.guava.view()
|
||
const role = "${@shiro.hasRole('sysadmin')||@shiro.hasRole('xghng')||@shiro.hasRole('A06')}"
|
||
this.$refs.reserve.role = role
|
||
const backOptionShow = "${@shiro.getPrincipalProperty('id')}" === row.reserve_person_id
|
||
this.$refs.reserve.backOptionShow = (role || backOptionShow)
|
||
this.$refs.reserve.openView(row.id)
|
||
},
|
||
doProcess(row){
|
||
this.$refs.guava.edit()
|
||
this.$refs.auditInfo.openView(row.id, 'fghsh')
|
||
this.formData={
|
||
id: row.id,
|
||
unionOption: null,
|
||
}
|
||
},
|
||
async doReview(row){
|
||
const valid = await this.$refs['auditForm'].validate()
|
||
if (!valid) return
|
||
this.formData.reserve_state = row ? 6118 : 6108
|
||
this.formData.isPass = row
|
||
const resp = await $.post('/platform/activity/site/unionProcess/doProcess', this.formData)
|
||
if (resp.code === 0) {
|
||
this.$refs.guava.index()
|
||
this.notifySuccess(resp.msg)
|
||
this.pageData()
|
||
}
|
||
},
|
||
async findAllOpenSite() {
|
||
const {data} = await $.get("/platform/activity/site/apply/getAllSite")
|
||
return data
|
||
},
|
||
},
|
||
async created(){
|
||
this.activityTypeList = await activityUtil.getAllType()
|
||
this.siteList = await this.findAllOpenSite()
|
||
this.pageData();
|
||
}
|
||
})
|
||
</script>
|
||
<!--#
|
||
}
|
||
#-->
|