<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 }}</ai-info-item>
              <ai-info-item label="报名状态">{{ dict.getLabel('partyReportSignupStatus', info.signupStatus) }}</ai-info-item>
              <ai-info-item label="活动状态">{{ dict.getLabel('activityStatus', 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)">查看日志</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>
        </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: {}
    }
  },

  computed: {
    ...mapState(["user"]),
  },

  created() {
    this.dict.load('activityStatus', '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.showDialog = true
        }
      });
    },
    cancel() {
      this.$emit("goBack")
    },
  },
};
</script>