Files
dvcp_v2_webapp/project/pingchang/apps/AppCommunityMember/Detail.vue
2022-10-27 15:52:28 +08:00

185 lines
6.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>
<ai-info-item isLine label="参与名额">{{ info.total > 0 ? info.total : '无限制' }}</ai-info-item>
<ai-info-item label="报名状态">{{ dict.getLabel('partyReportSignupStatus', info.signupStatus) }}</ai-info-item>
<ai-info-item label="活动状态">{{ dict.getLabel('partyReportActionStatus', info.actionStatus) }}</ai-info-item>
<ai-info-item label="活动时间">{{ info.beginTime }} {{ info.endTime }}</ai-info-item>
<ai-info-item label="报名截止时间">{{ info.stopSignupTime }}</ai-info-item>
<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>
<ai-table
:dict="dict"
:border="true"
:tableData="userList"
: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>
<p class="color-999">{{row.partyOrgName}}</p>
</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">
<el-button type="text" @click="viewUser(row)" v-if="row.logStatus > 0">查看日志</el-button>
<el-button type="text" @click="viewUser(row)" v-else disabled>查看日志</el-button>
</div>
</template>
</el-table-column>
</ai-table>
</template>
</ai-card>
<ai-dialog customFooter :visible.sync="showDialog" title="查看活动日志" @closed="showDialog=false">
<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>
<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>
</ai-dialog>
</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: {},
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"},
],
userList: [],
showDialog: false,
userInfo: {},
logCheck: '2'
}
},
computed: {
...mapState(["user"]),
},
created() {
this.dict.load('partyReportActionStatus', 'partyReportSignupStatus', 'partyReportSignupReportType', 'partyReportPersonSignupStatus', 'partyReportSignupLogStatus').then(() => {
this.getInfo()
this.getList()
})
},
methods: {
getInfo() {
this.instance.post(`/app/apppartyreport/queryDetailById?id=${this.id}`).then((res) => {
if (res?.data) {
this.info = res.data
if (this.info.birthday) {
this.info.birthday = this.info.birthday.substring(0, 10);
}
}
});
},
getList() {
this.instance.post(`/app/apppartyreport/signup-info?id=${this.id}`).then((res) => {
if (res?.data) {
res.data.map((item) => {
if(item.signupTime) {
item.signupTime = item.signupTime.substring(0, 10)
}
})
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
this.userInfo.logStatus = row.logStatus
this.showDialog = true
}
});
},
cancel() {
this.$emit("goBack")
},
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'
}
});
},
},
};
</script>