Files
dvcp_v2_webapp/project/pingchang/apps/AppCommunityMember/Detail.vue

184 lines
6.4 KiB
Vue
Raw Normal View History

2022-10-19 13:38:16 +08:00
<template>
<ai-detail class="party-detail">
<template slot="title">
<ai-title
title="活动详情"
isShowBack
isShowBottomBorder
@onBackClick="cancel()"
></ai-title>
</template>
<template slot="content">
<div>
<ai-card title="活动信息">
<template #content>
<ai-wrapper label-width="120px">
<ai-info-item isLine label="发布地区">{{ info.areaName }}</ai-info-item>
<ai-info-item isLine label="标题">{{ info.title }}</ai-info-item>
<ai-info-item isLine label="活动地点">{{ info.address }}</ai-info-item>
2022-10-27 09:10:25 +08:00
<ai-info-item isLine label="参与名额">{{ info.total > 0 ? info.total : '无限制' }}</ai-info-item>
2022-10-19 13:38:16 +08:00
<ai-info-item label="报名状态">{{ dict.getLabel('partyReportSignupStatus', info.signupStatus) }}</ai-info-item>
2022-10-27 09:10:25 +08:00
<ai-info-item label="活动状态">{{ dict.getLabel('partyReportActionStatus', info.actionStatus) }}</ai-info-item>
2022-10-21 11:28:16 +08:00
<ai-info-item label="活动时间">{{ info.beginTime }} {{ info.endTime }}</ai-info-item>
2022-10-27 09:12:19 +08:00
<ai-info-item label="报名截止时间">{{ info.stopSignupTime }}</ai-info-item>
2022-10-19 13:38:16 +08:00
<ai-info-item label="联系人">{{ info.contactPerson }}</ai-info-item>
<ai-info-item label="联系电话">{{ info.contactPhone }}</ai-info-item>
</ai-wrapper>
</template>
</ai-card>
<ai-card title="活动介绍">
<template #content>
<p v-html="info.content"></p>
</template>
</ai-card>
<ai-card title="报名情况">
<template #content>
2022-10-19 14:16:14 +08:00
<ai-table
2022-10-21 11:28:16 +08:00
:dict="dict"
2022-10-19 14:16:14 +08:00
:border="true"
2022-10-21 11:28:16 +08:00
:tableData="userList"
2022-10-19 14:16:14 +08:00
:isShowPagination="false"
:col-configs="colConfigs"
>
<el-table-column slot="user" width="300px" label="报名人员资料" align="center">
<template slot-scope="{ row }">
<div class="table-options">
<p>{{row.partyName}}-{{row.phone}}</p>
2022-10-21 11:28:16 +08:00
<p class="color-999">{{row.partyOrgName}}</p>
2022-10-19 14:16:14 +08:00
</div>
</template>
</el-table-column>
<el-table-column slot="options" width="120px" fixed="right" label="操作" align="center">
<template slot-scope="{ row }">
<div class="table-options">
2022-10-21 11:28:16 +08:00
<el-button type="text" @click="viewUser(row)">查看日志</el-button>
2022-10-19 14:16:14 +08:00
</div>
</template>
</el-table-column>
</ai-table>
2022-10-19 13:38:16 +08:00
</template>
</ai-card>
2022-10-21 17:37:41 +08:00
<ai-dialog customFooter :visible.sync="showDialog" title="查看活动日志" @closed="showDialog=false">
2022-10-21 11:28:16 +08:00
<ai-wrapper label-width="120px">
<ai-info-item label="提交人">{{ userInfo.userName }}</ai-info-item>
<ai-info-item label="提交时间">{{ userInfo.submitTime }}</ai-info-item>
<ai-info-item isLine label="活动总结">{{ userInfo.content }}</ai-info-item>
<ai-info-item isLine label="活动照片">
<ai-uploader
:instance="instance"
disabled
v-model="userInfo.files"
>
</ai-uploader>
</ai-info-item>
</ai-wrapper>
2022-10-27 14:13:57 +08:00
<div v-if="userInfo.logStatus==1">
<p style="display: inline-block;">审核结果</p>
<el-radio-group v-model="logCheck">
<el-radio label="2">合格</el-radio>
<el-radio label="3">不合格</el-radio>
</el-radio-group>
</div>
<div slot="footer" style="text-align: center;" v-if="userInfo.logStatus==1">
<el-button style="width:92px" size="small" type="primary" @click="logCheckFn()">提交</el-button>
</div>
2022-10-21 11:28:16 +08:00
</ai-dialog>
2022-10-19 13:38:16 +08:00
</div>
</template>
</ai-detail>
</template>
<script>
import { mapState } from "vuex";
export default {
name: "detail",
props: {
instance: Function,
dict: Object,
params: Object,
id: String
},
data() {
return {
info: {},
2022-10-19 14:16:14 +08:00
colConfigs: [
{prop: "signupTime", label: "报名时间", align: "center"},
{slot: "user"},
{prop: "reportType", label: "活动报到类型", align: "center", dict: 'partyReportSignupReportType'},
{prop: "remark", label: "报名备注", align: "center"},
{prop: "status", label: "报名状态", align: "center", dict: 'partyReportPersonSignupStatus'},
{prop: "logStatus", label: "活动日志", align: "center", dict: 'partyReportSignupLogStatus'},
{slot: "options"},
],
2022-10-21 11:28:16 +08:00
userList: [],
showDialog: false,
2022-10-27 14:13:57 +08:00
userInfo: {},
logCheck: '2'
2022-10-19 13:38:16 +08:00
}
},
computed: {
...mapState(["user"]),
},
created() {
2022-10-27 09:10:25 +08:00
this.dict.load('partyReportActionStatus', 'partyReportSignupStatus', 'partyReportSignupReportType', 'partyReportPersonSignupStatus', 'partyReportSignupLogStatus').then(() => {
2022-10-19 13:38:16 +08:00
this.getInfo()
2022-10-19 14:16:14 +08:00
this.getList()
2022-10-19 13:38:16 +08:00
})
},
methods: {
getInfo() {
this.instance.post(`/app/apppartyreport/queryDetailById?id=${this.id}`).then((res) => {
if (res?.data) {
2022-10-21 11:28:16 +08:00
this.info = res.data
2022-10-19 13:38:16 +08:00
if (this.info.birthday) {
this.info.birthday = this.info.birthday.substring(0, 10);
}
}
});
},
2022-10-19 14:16:14 +08:00
getList() {
this.instance.post(`/app/apppartyreport/signup-info?id=${this.id}`).then((res) => {
if (res?.data) {
res.data.map((item) => {
2022-10-21 11:28:16 +08:00
if(item.signupTime) {
item.signupTime = item.signupTime.substring(0, 10)
}
2022-10-19 14:16:14 +08:00
})
2022-10-21 11:28:16 +08:00
this.userList = res.data
}
});
},
viewUser(row) {
this.instance.post(`app/apppartyreport/log?id=${row.id}`).then((res) => {
if (res.code == 0) {
this.userInfo = {...res.data}
this.userInfo.userName = row.partyName
2022-10-27 14:13:57 +08:00
this.userInfo.logStatus = row.logStatus
2022-10-21 11:28:16 +08:00
this.showDialog = true
2022-10-19 14:16:14 +08:00
}
});
},
2022-10-19 13:38:16 +08:00
cancel() {
this.$emit("goBack")
},
2022-10-27 14:13:57 +08:00
logCheckFn(){
this.instance.post(`/app/apppartyreport/log-check`, {
id: this.userInfo.id,
logStatus: this.logCheck
}).then(res => {
if (res.code == 0) {
this.showDialog = false
this.getList()
this.logCheck = '2'
}
});
},
2022-10-19 13:38:16 +08:00
},
};
</script>