185 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <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> |