<template>
  <div class="m-pop">
    <div class="wrap">
      <cpt-card>
        <div class="title">
          <img src="@/assets/img/shuju/title-tip.png" />
          <span>项目详情</span>
        </div>

        <div class="btn-close"
             @click="handleClose">
          <img src="@/assets/img/shuju/people/close.png" />
        </div>
        <div class="m-top">
          <div class="m-info">
            <div class="info-prop">
              <span>项目标题：</span>
              <span>{{ projectInfo.projectTitle }}</span>
            </div>
            <div class="info-prop">
              <span>项目背景：</span>
              <span>{{ projectInfo.backGround }}</span>
            </div>
            <div class="info-prop">
              <span>项目方案：</span>
              <span>{{ projectInfo.projectTitle }}</span>
            </div>
            <div class="info-prop">
              <span>内部备注：</span>
              <span>{{ projectInfo.internalRemark || "--" }}</span>
            </div>
            <div class="info-prop">
              <span>当前处理部门：</span>
              <span>{{ projectInfo.departmentNameList.join("、") }}</span>
            </div>
            <div class="info-prop"
                 v-if="projectCate.length > 0">
              <span>分类：</span>
              <fold-text :row="3">
                <div :key="item.name"
                     v-for="item in projectCate">
                  {{ item.name }}
                </div>
              </fold-text>
            </div>
            <div class="info-prop"
                 v-if="projectTag.length > 0">
              <span>标签：</span>
              <fold-text :row="3">
                <div :key="item.name"
                     v-for="item in projectTag">
                  {{ item.name }}
                </div>
              </fold-text>
            </div>
          </div>

          <div class="m-process"
               v-if="projectProcess.length > 0">
            <div class="process-title">处理进展</div>
            <div class="list">
              <div class="item"
                   :class="index === 0 ? 'z-on' : ''"
                   :key="item.processId"
                   v-for="(item, index) in projectProcess">
                <div class="item-row">
                  <div class="name">{{ item.processName }}</div>
                  <div class="date">
                    {{ item.processTime }}
                  </div>
                </div>

                <div class="detail">
                  <div class="detail-field">处理部门：</div>
                  <div class="detail-value">{{ item.departmentName }}</div>
                </div>

                <div class="detail"
                     v-if="item.processName != '转项目' && item.publicReply">
                  <div class="detail-field">说 明：</div>
                  <div class="detail-value">
                    <fold-text :row="3">{{ item.publicReply }}</fold-text>
                  </div>
                </div>

                <div class="detail"
                     v-if="item.processName != '转项目' && item.internalRemark">
                  <div class="detail-field">内部备注：</div>
                  <div class="detail-value">
                    <fold-text :row="3">{{
                          item.internalRemark
                        }}</fold-text>
                  </div>
                </div>
                <div class="detail">
                  <div class="attachement-list">
                    <a :href="att.url"
                       target="_blank"
                       :key="att.url"
                       v-for="att in item.internalFile">
                      <i class="el-icon-folder-opened"></i>
                      {{ att.name }}
                    </a>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <div v-if="projectInfo.origin!=='agency'"
             class="tabs">
          <div class="tab-btn"
               @click="subStartGroupIndex"
               v-if="groupList.length > 9">
            <img src="@/assets/img/shuju/people/arrow-double-left.png" />
          </div>
          <div v-show="index >= startGroupIndex && index < startGroupIndex + 9"
               class="tab"
               :class="groupIndex % groupList.length == index ? 'z-on' : ''"
               :key="'tab' + index"
               @click="groupIndex = index"
               v-for="(item, index) in groupList">
            {{ item.label }}
          </div>
          <div class="tab-btn"
               @click="addStartGroupIndex"
               v-if="groupList.length > 9">
            <img src="@/assets/img/shuju/people/arrow-double-right.png" />
          </div>
        </div>

        <div class="m-case"
             v-if="projectInfo.origin!=='agency'">
          <div class="m-yanpan"
               v-if="groupIndex == 0">
            <div v-if="projectId">
              <analyse v-if="yanPan.loading"
                       singleTitle="楼院小组"
                       :userList="yanPan.homeUserList"
                       :userName="yanPan.icUserName"
                       :singleList="yanPan.singleList"
                       :hasEvent="yanPan.hasEvent"
                       :moreList="yanPan.moreList"
                       @user="toUserInfo"
                       @project="toProjectInfo" />
              <screen-loading v-else>加载中</screen-loading>
            </div>
            <div v-else
                 class="m-hint">
              <img src="@/assets/img/modules/visual/noData.png"
                   class="no-data-img" />
            </div>
          </div>

          <div v-if="groupIndex == 1">
            <div class="m-row"
                 v-if="projectInfo.originId">
              <div v-if="projectInfo.origin==='issue'"
                   class="m-info">
                <div class="info-prop">
                  <span>议题标题：</span>
                  <span>{{ issueInfo.issueTitle }}</span>
                </div>
                <div class="info-prop">
                  <span>议题建议：</span>
                  <span>{{ issueInfo.issueSuggestion }}</span>
                </div>
                <div class="info-prop">
                  <span>所属网格：</span>
                  <span>{{ issueInfo.belongsGridName || "--" }}</span>
                </div>
                <div class="info-prop">
                  <span>议题发起人：</span>
                  <span>{{ issueInfo.issueInitiator }}</span>
                </div>
                <div class="info-prop">
                  <span>议题来源：</span>
                  <span>{{ issueInfo.topicInfo.groupName }}</span>
                </div>
                <div class="info-prop">
                  <span>转议题时间：</span>
                  <span>{{ issueInfo.shiftIssueTime }}</span>
                </div>
              </div>
              <div v-if="projectInfo.origin==='resi_event'"
                   class="m-info">
                <div class="info-title">事件内容</div>
                <div class="info-content">{{ info.eventContent }}</div>
                <div class="info-pics">
                  <img :src="src"
                       :key="src"
                       v-for="src in info.eventImgs"
                       @click="watchImg(src)" />
                </div>
                <div class="info-prop">
                  <span>提交时间：</span>
                  <span>{{ info.eventTime }}</span>
                </div>
                <div class="info-prop">
                  <span>报事人：</span>
                  <span>{{ info.eventPeopleName }}</span>
                </div>
                <div class="info-prop">
                  <span>所属网格：</span>
                  <span>{{ info.gridName }}</span>
                </div>
                <div class="info-prop">
                  <span>提报给：</span>
                  <span>{{ info.eventPerson.join("、") || "--" }}</span>
                </div>
              </div>

              <div v-if="projectInfo.origin==='issue'"
                   class="m-line">
                <div class="stat">
                  <div class="stat-item">
                    <div>
                      {{ issueTrend.realityVoteCount }}/{{
                        issueTrend.shouldVoteCount
                      }}
                    </div>
                    <div class="z-weak">已表决/应表决</div>
                  </div>
                  <div class="stat-item">
                    <div>{{ issueTrend.supportAmount }}</div>
                    <div class="z-weak">支持</div>
                  </div>
                  <div class="stat-item">
                    <div>{{ issueTrend.oppositionAmount }}</div>
                    <div class="z-weak">反对</div>
                  </div>
                </div>

                <line-chart v-if="issueChartData.length > 0"
                            :list="issueChartData" />
              </div>
            </div>
            <div v-else
                 class="m-hint">
              <img src="@/assets/img/modules/visual/noData.png"
                   class="no-data-img" />
            </div>
          </div>

        </div>
      </cpt-card>
    </div>
  </div>
</template>

<script>
import cptCard from "@/views/modules/visual/cpts/card";
import screenLoading from "@/views/modules/visual/cpts/loading";
import { requestPost } from "@/js/dai/request";
import cptTb from "@/views/modules/visual/cpts/tb";
import lineChart from "@/views/modules/visual/cpts/line-chart";
import analyse from "@/views/modules/visual/cpts/analyse";
import foldText from "@/views/components/foldText";
import dateFormat from "dai-js/tools/dateFormat";

function iniData () {
  return {
    projectIdCopy: this.projectId,
    groupList: [
      { label: "研判分析" },
      { label: "项目来源" },
    ],
    groupIndex: 0,
    startGroupIndex: 0,

    projectProcess: [],

    projectInfo: {
      backGround: "",
      departmentList: [
        //   { departmentName: "南宁社区-南宁第二网格", staffList: ["周相成"] },
      ],
      departmentNameList: [],
      internalRemark: "",
      isSend: false,
      locateAddress: "",
      locateDimension: "",
      locateLongitude: "",
      origin: "",
      originId: "",
      platformIds: [],
      processable: false,
      projectId: "",
      projectStatus: "pending",
      projectTitle: "",
      publicReply: "",
      returnable: false,
    },

    issueInfo: {
      attitude: "",
      belongsGridName: "",
      issueIdea: "",
      issueInitiator: "",
      issueStatus: "",
      issueSuggestion: "",
      issueTitle: "",
      joinVote: true,
      projectId: "",
      projectStatus: false,
      publishIdeaFlag: false,
    },

    issueTrend: {},
    issueChartData: [],

    eventInfo: {
      eventTime: "",
      eventContent: "",
      eventAddress: "",
      gridName: "",
      isClosed: true,
      isResolve: true,
      isRollback: true,
      eventImgs: [],
      eventPerson: [],
      eventOrg: [],
      eventPeopleName: "",
      projectInfo: {
        projectId: "",
        operationName: "",
        operationTime: "",
        projectDeclare: "",
      },
    },

    projectCate: [],
    projectTag: [],

    yanPan: {
      loading: false,

      icResiUserId: "",
      houseId: "",
      icUserName: "",

      homeUserList: [
        // {
        //   homeId: '',
        //   icUserId: '',
        //   icUserName: '',
        // }
      ],
      singleList: [],//楼院小组
      projectData: [
        // {
        //   firstCategoryCode: '',
        //   firstCategoryName: '',
        //   projectList: [],
        // }
      ],
      hasEvent: false,
      moreList: [],//

    },
  };
}

export default {
  name: "demandInfo",
  props: {
    projectId: {
      type: String,
      default: "",
    },
    userId: {
      type: String,
      default: "",
    },
    categoryCodes: {
      type: Array,
      default: [],
    },

  },

  components: {
    cptCard,
    cptTb,
    analyse,
    screenLoading,
    lineChart,
    foldText,
  },

  data: iniData,

  computed: {},

  watch: {
    projectId () {
      let data = iniData();
      Object.keys(data).forEach((k) => {
        this[k] = data[k];
      });
      this.getApiData();
    },
    // projectIdCopy () {


    // },
  },

  mounted () {
    console.log(this.projectIdCopy)
    this.getApiData();
  },

  methods: {
    watchImg (src) {
      window.open(src);
    },

    addStartGroupIndex () {
      const { startGroupIndex, groupList } = this;
      if (startGroupIndex < groupList.length - 9) {
        this.startGroupIndex = startGroupIndex + 1;
      } else {
        this.startGroupIndex = groupList.length - 9;
      }
    },
    subStartGroupIndex () {
      const { startGroupIndex, groupList } = this;
      if (startGroupIndex > 0) {
        this.startGroupIndex = startGroupIndex - 1;
      } else {
        this.startGroupIndex = 0;
      }
    },
    handleClose () {
      this.$emit("close");
    },

    async getApiData () {

      await this.getProjectInfo()
      this.getProjectCate();
      this.getProjectProcess();
      if (this.projectInfo.origin === 'issue') {
        this.getIssueInfo();
        this.getIssueTrend();
      } else if (this.projectInfo.origin === 'resi_event') {
        this.getEventInfo()
      }
      if (this.projectInfo.origin !== 'agency') {
        await this.getYanPan();

      }
    },

    //加载组织数据
    async getProjectInfo () {

      const url = "/gov/project/trace/projectdetail";

      const { data, code, msg } = await requestPost(url, {
        projectId: this.projectIdCopy,
      });

      if (code === 0) {
        this.projectInfo = data;


      } else {
        this.$message.error(msg);
      }
    },

    //加载组织数据
    async getIssueInfo () {

      const url = "/resi/hall/issue/detail";

      const { data, code, msg } = await requestPost(url, {
        issueId: this.projectInfo.originId,
      });

      if (code === 0) {
        this.issueInfo = data;
      } else {
        this.$message.error(msg);
      }
    },

    //加载组织数据
    async getIssueTrend () {

      const url = "/resi/hall/issue/votingtrend";

      const { data, code, msg } = await requestPost(url, {
        issueId: this.projectInfo.originId,
      });

      if (code === 0) {
        this.issueTrend = data;
        let chartData = [];
        data.polyLine.forEach((item) => {
          let date = dateFormat(new Date(item.voteDate * 1000), "yyyy-MM-dd");
          console.log("date:" + date);
          chartData.push(
            {
              date,
              value: item.supportIncrement,
              type: "支持",
            },
            {
              date,
              value: item.oppositionIncrement,
              type: "反对",
            }
          );
        });
        this.issueChartData = chartData;
      } else {
        this.$message.error(msg);
      }
    },

    //加载组织数据
    async getEventInfo () {
      const url = "/gov/project/resievent/eventdetail-icdata";

      const { data, code, msg } = await requestPost(url, {
        resiEventId: this.projectInfo.originId,
      });

      if (code === 0) {
        this.info = data;
      } else {
        this.$message.error(msg);
      }
    },

    //加载组织数据
    async getProjectProcess () {

      const url = "/gov/project/trace/processlist-v2";

      const { data, code, msg } = await requestPost(url, {
        projectId: this.projectIdCopy,
      });

      if (code === 0) {
        this.projectProcess = data.map((item) => {
          item.processTime = dateFormat(
            new Date(item.processTime * 1000),
            "yyyy-MM-dd hh:mm"
          );
          return item;
        });
      } else {
        this.$message.error(msg);
      }
    },

    async getProjectCate () {

      const url = "/gov/project/projectcategory/categorytaglist";

      const { data, code, msg } = await requestPost(url, {
        projectId: this.projectIdCopy,
      });

      if (code === 0) {
        this.projectCate = data.categoryList;
        this.projectTag = data.tagList;
      } else {
        this.$message.error(msg);
      }
    },

    //加载组织数据
    async getYanPan () {
      const url = "/data/aggregator/project/projectanalysis";

      const { data, code, msg } = await requestPost(url, {
        categoryCodeList: this.categoryCodes,
        userId: this.userId,

      });

      if (code === 0) {
        data.icResiUserId = data.icUserId
        data.homeUserList.forEach(item => {
          item.icResiUserId = item.icUserId
        });

        let array1 = []
        let array2 = []
        // debugger
        //楼院小组、居民上报都存在是，研判分析显示两个分支
        if (data.groupProjectList && data.groupProjectList.length > 0 && data.eventProjectList && data.eventProjectList.length > 0) {
          this.yanPan.hasEvent = true
          array1 = [...data.groupProjectList]
          array2 = [...data.eventProjectList]
        } else {
          this.yanPan.hasEvent = false
          if (data.groupProjectList && data.groupProjectList.length > 0) {
            array1 = [...data.groupProjectList]
          } else if (data.eventProjectList && data.eventProjectList.length > 0) {
            array1 = [...data.eventProjectList]
          } else {
            array1 = []
          }

        }

        if (array1.length > 0) {
          data.singleList = array1.map((item) => {
            return {
              categoryCode: item.categoryCode,
              categoryName: item.categoryName,
              showItem: true,
              projectList: item.projectList.map((subItem) => {
                return {
                  title: subItem.title,
                  status: subItem.status,
                  statusName:
                    subItem.status == "pending" ? "待处理" : "结案",
                  projectId: subItem.projectId,
                };
              }),
            };
          });
        }
        if (array2.length > 0) {
          data.moreList = array2.map((item) => {
            return {
              categoryCode: item.categoryCode,
              categoryName: item.categoryName,
              showItem: true,
              projectList: item.projectList.map((subItem) => {
                return {
                  title: subItem.title,
                  status: subItem.status,
                  statusName:
                    subItem.status == "pending" ? "待处理" : "结案",
                  projectId: subItem.projectId,
                };
              }),
            };
          });
        }



        this.yanPan = { ...this.yanPan, ...data };
        console.log(this.yanPan)
        this.yanPan.loading = true;
      } else {
        this.$message.error(msg);
      }
    },

    toUserInfo (item) {
      this.$router.push({
        path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`,
      });
    },

    toProjectInfo (item) {
      console.log(item);
      this.projectIdCopy = item.projectId;
      // let data = iniData();
      // Object.keys(data).forEach((k) => {
      //   this[k] = data[k];
      // });
      this.getApiData();
    },
  },
};
</script>

<style
  lang="scss"
  src="@/assets/scss/modules/visual/incident-info.scss"
  scoped
></style>
