<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="投诉人" prop="complainName">
        <el-input
          v-model="queryParams.complainName"
          placeholder="请输入投诉人姓名"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
          style="width: 240px"
        />
      </el-form-item>
      <el-form-item label="指派单位" prop="complainAssignEnterproseId" v-if="deptId==-2" >
        <el-select v-model="queryParams.complainAssignEnterproseId"
          style="width: 240px" placeholder="请选择预案等级" clearable size="small">
          <el-option
            v-for = "dict in enterpriseList"
            :key = "dict.enterpriseId"
            :label = "dict.enterpriseName"
            :value = "dict.enterpriseId"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="任务状态" prop="complainStatus">
        <el-select v-model="queryParams.complainStatus"
          style="width: 240px" placeholder="请选择任务状态" clearable size="small">
            <el-option
              v-for="dict in taskStateOptions"
              :key="dict.dictValue"
              :label="dict.dictLabel"
              :value="dict.dictValue"
            ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="数据来源" prop="provincialDataFlag" v-if="deptId==-2">
        <el-select v-model="queryParams.provincialDataFlag"
          style="width: 240px" placeholder="请选择数据来源" clearable size="small">
            <el-option
              v-for="dict in provincialDataFlagOptions"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
        </el-select>
      </el-form-item>

      <el-form-item label="投诉类别" prop="complainType" v-if="deptId==-2">
        <el-select v-model="queryParams.complainType"
          style="width: 240px" placeholder="请选择投诉类别" clearable size="small">
            <el-option label="投诉举报" value="1"/>
            <el-option label="服务申请" value="2"/>
            <el-option label="咨询建议" value="3"/>
        </el-select>
      </el-form-item>

      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>

    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          v-if="deptId==-2"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
        >新增</el-button>
      </el-col>

      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
		      :loading="exportLoading"
          @click="handleExport"
        >导出</el-button>
      </el-col>

      <el-col :span="1.5">
        <el-button
          type="info"
          v-if="deptId==-2"
          plain
          icon="el-icon-refresh"
          size="mini"
          @click="provincialDataAcq"
        >省厅数据获取</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          v-if="deptId==-2"
          plain
          icon="el-icon-setting"
          size="mini"
          @click="managementSystemSetting"
        >管理制度设置</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <el-table
      v-loading="loading"
      :data="complainDealList"
      @selection-change="handleSelectionChange"
       @cell-mouse-enter="handleTableRowMouseEnter"
       @cell-mouse-leave="handleTableRowMouseLeave"
       @cell-click="handleTableRowClick">
      <!--<el-table-column label="投诉处置id" align="center" prop="complainDealId" />-->
      <el-table-column label="投诉人姓名" align="center" prop="complainName" >
        <template slot-scope="scope">
          <i v-if="scope.row.overtimeSupervision != null && scope.row.overtimeSupervision != ''" class="el-icon-star-on" style="color: red;"></i>
          <span>{{ scope.row.complainName}}</span>
        </template>
      </el-table-column>
      <el-table-column label="投诉人电话" align="center" prop="complainPhone" />
      <el-table-column label="投诉事项" align="center" prop="complainMatter" />
      <el-table-column label="投诉类别" align="center" prop="complainType" >
        <template slot-scope="scope">
          <span v-if="scope.row.complainType == '1'">投诉举报</span>
          <span v-if="scope.row.complainType == '2'">服务申请</span>
          <span v-if="scope.row.complainType == '3'">咨询建议</span>
        </template>
      </el-table-column>
      <!--<el-table-column label="反馈内容" align="center" prop="dealCondition" />-->
      <el-table-column label="指派单位名称" align="center" prop="complainAssignEnterproseName" >
        <template slot-scope="scope">
          <el-popover popper-class="custom-popover"
                      v-if="scope.row.overtimeSupervision === '0' || scope.row.overtimeSupervision === '1'"
                      trigger="hover"
                      placement="top"
                      :ref="'popover' + scope.row.complainDealId" >
            <p>提示: {{handlePopoverShow(scope.row.overtimeSupervision)}}</p>
            <div slot="reference" class="name-wrapper">
              <span>{{ scope.row.complainAssignEnterproseName }}</span>
            </div>
          </el-popover>
          <span v-if="scope.row.overtimeSupervision != '0' && scope.row.overtimeSupervision != '1'" >
            {{ scope.row.complainAssignEnterproseName }}
          </span>
        </template>
      </el-table-column>
      <el-table-column label="指派人" align="center" prop="complainAssignMan" >
      </el-table-column>
      <el-table-column label="任务状态" align="center" prop="complainStatus" :formatter="taskStateFormat" >
      </el-table-column>
      <el-table-column label="督办状态" align="center" prop="overtimeSupervision" :formatter="overtimeSupervisionStateFormat" >
      </el-table-column>
      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="反馈时间" align="center" prop="dealTime" width="180" >
        <!--<template slot-scope="scope">-->
          <!--<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>-->
        <!--</template>-->
      </el-table-column>
      <el-table-column label="数据源" align="center" prop="provincialDataFlag" >
          <template slot-scope="scope">
            <span v-if="scope.row.provincialDataFlag === '0'">平台</span>
            <span v-else-if="scope.row.provincialDataFlag === '1'">省厅</span>
            <span v-else>-</span>
          </template>
      </el-table-column>
      <el-table-column label="备注" align="center" prop="remarks" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
        <template slot-scope="scope" >
          <el-button
            size="mini"
            v-if="scope.row.complainStatus==1"
            style="color: red"
            type="text"
            icon="el-icon-edit"
            @click.native.stop="handlefankui(scope.row)"
          >反馈</el-button>
          <el-button
            size="mini"
            v-if="scope.row.complainStatus==2 && deptId==-2"
            style="color: #30B46B"
            type="text"
            icon="el-icon-edit"
            @click.native.stop="handlegui(scope.row)"
          >归档</el-button>
          <el-button
            size="mini"
            type="text"
            v-if="(scope.row.complainStatus==1)  && deptId==-2"
            icon="el-icon-edit"
            @click.native.stop="handleUpdate(scope.row)"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-document-copy"
            @click.native.stop="handleDtail(scope.row)"
          >详情</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click.native.stop="handleDelete(scope.row)"
          >删除</el-button>
          <el-button
            v-if="scope.row.complainStatus==1 && deptId!=-2"
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click.native.stop="handleEnterpriseReturn(scope.row)"
          >退回</el-button>
          <el-button
            v-if="(scope.row.complainStatus==4 && deptId==-2) || (scope.row.complainStatus==1 && deptId==-2 && scope.row.complainAssignEnterproseId==null)"
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click.native.stop="handleTransfer(scope.row)"
          >转办</el-button>
          <!-- 归档后 再评价 -->
          <el-button
            v-if="scope.row.complainStatus==3 && deptId==-2"
            size="mini"
            type="text"
            icon="el-icon-chat-line-square"
            @click.native.stop="handleSatisfactionEvaluation(scope.row)"
          >满意度评价</el-button>
          <el-button
            v-if="scope.row.complainStatus!=3 && deptId==-2 &&
            (scope.row.overtimeSupervision != '0' )"
            size="mini"
            type="text"
            icon="el-icon-chat-line-square"
            @click.native.stop="handleOvertimeSupervision(scope.row)"
          >超时督办</el-button>
        </template>
      </el-table-column>
    </el-table>

    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"/>

    <!-- 添加或修改投诉处置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @close="handleBeforClose">
      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
        <el-form-item label="投诉渠道" prop="complaintChannels">
          <el-select style="width: 100%" v-model="form.complaintChannels" :disabled="readonly">
            <el-option label="12319热线" value="1"/>
            <el-option label="12345热线" value="2"/>
          </el-select>
        </el-form-item>
        <div class="division">
          <div style="width: 50%;">
            <el-form-item label="投诉人姓名" prop="complainName">
              <el-input v-model="form.complainName" placeholder="请输入投诉人姓名" :disabled="readonly"/>
            </el-form-item>
            <el-form-item label="指派单位" prop="complainAssignEnterproseId" >
              <el-select style="width: 100%" v-model="form.complainAssignEnterproseName" placeholder="请选择指派单位"  @change="qiyechang" :disabled="readonly">
                <el-option
                  v-for = "dict in enterpriseList"
                  :key = "dict.enterpriseId"
                  :label = "dict.enterpriseName"
                  :value = "dict.enterpriseId"
                />
              </el-select>
            </el-form-item>
            <!-- 1-投诉举报，2-服务申请，3-咨询建议 -->
            <el-form-item label="投诉类别" prop="complainType">
              <el-select style="width: 100%" v-model="form.complainType" :disabled="readonly">
                <el-option label="投诉举报" value="1"/>
                <el-option label="服务申请" value="2"/>
                <el-option label="咨询建议" value="3"/>
              </el-select>
            </el-form-item>
          </div>
          <div style="width: 50%;">
            <el-form-item label="投诉人电话" prop="complainPhone">
              <el-input v-model="form.complainPhone" placeholder="请输入投诉人电话" :disabled="readonly"/>
            </el-form-item>
            <el-form-item label="指派人" prop="complainAssignManId">
              <el-select v-model="form.complainAssignMan" placeholder="请选择指派人" clearable style = "width: 100%" @change="manChang" :disabled="readonly">
                <el-option
                  v-for = "dict in peopleList"
                  :key = "dict.id"
                  :label = "dict.nickName"
                  :value = "dict.id"
                />
              </el-select>
            </el-form-item>
            <el-form-item label="所属区域" prop="township">
              <el-select style="width: 100%" v-model="form.township" placeholder="请选择所属区域" clearable size="small"  :disabled="readonly">
                <el-option
                  v-for="dict in townshipOptions"
                  :key="dict.dictValue"
                  :label="dict.dictLabel"
                  :value="dict.dictValue"
                ></el-option>
              </el-select>
            </el-form-item>
          </div>
        </div>
        <el-form-item label="投诉事项" prop="complainMatter">
          <el-input v-model="form.complainMatter" type = "textarea" placeholder="请输入投诉事项" :disabled="readonly"/>
        </el-form-item>
        <el-form-item label="反馈时间" prop="dealTime" :style="display">
          <el-date-picker clearable size="small"
                          v-model="form.dealTime"
                          type="datetime"
                          value-format="yyyy-MM-dd HH:mm:ss"
                          placeholder="请选择反馈时间"
                          :disabled="readonly"
                          style="width: 280px">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="反馈内容" prop="dealCondition" :style="display">
          <el-input v-model="form.dealCondition" type = "textarea" placeholder="请输入办理情况" :disabled="readonly"/>
        </el-form-item>
        <el-form-item label="转办记录" prop="transferRecord" :style="display">
          <el-input v-model="form.transferRecord" type="textarea"  placeholder="请输入转办记录" :disabled="readonly"/>
        </el-form-item>
        <el-form-item label="任务状态" :style="display" >

          <el-input v-model="form.complainStatus"  placeholder=""  :disabled="readonly"/>
          <!--<el-select v-model="form.complainStatus" placeholder="请选择任务状态"   :disabled="readonly">-->
            <!--<el-option-->
              <!--v-for="dict in taskStateOptions"-->
              <!--:key="dict.dictValue"-->
              <!--:label="dict.dictLabel"-->
              <!--:value="dict.dictValue"-->
            <!--&gt;</el-option>-->
          <!--</el-select>-->
        </el-form-item>
        <el-form-item label="备注" prop="remarks">
          <el-input v-model="form.remarks" type="textarea" placeholder="请输入备注" :disabled="readonly"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer" v-if="showDetails">
        <el-button type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>

      <!-- 转办流程 如果有的话 -->
      <div v-if="complainDealTransferList !== null && complainDealTransferList.length > 0">
        <el-divider content-position="left">转办流程</el-divider>
        <el-timeline>
          <el-timeline-item placement="top" :timestamp="item.sj" v-for="(item, index) in complainDealTransferList" :key="index">
            <el-card>
              <el-table :data="item.rows" border>
                <el-table-column v-for="(item, index) in item.dictList" :prop="item.indexCode" :label="item.label" :key="index" align="center"></el-table-column>
              </el-table>
            </el-card>
          </el-timeline-item>
        </el-timeline>
      </div>
    </el-dialog>
    <!-- 督办历史记录 -->
    <el-dialog title="督办历史记录" :visible.sync="historyOvertimeSupervisionVisible" width="650px">
      <el-table :data="historyOvertimeSupervisionList">
          <el-table-column
          prop="createTime"
          label="督办创建日期"
          width="150">
        </el-table-column>
        <el-table-column
          prop="supervisionReasons"
          label="督办事由"
          width="150">
        </el-table-column>
          <el-table-column
          prop="updateTime"
          label="回复时间"
          width="150">
        </el-table-column>
        <el-table-column
          prop="concent"
          label="回复信息"
          width="150">
        </el-table-column>
      </el-table>
    </el-dialog>
<!-- 超时督办 -->
    <el-dialog title="超时督办" :visible.sync="dialogOvertimeSupervisionVisible" width="600px">
<!--      <div style="padding-bottom:20px">
        <el-button type="info" @click="historyOvertimeSupervisionListButton">历史督办记录</el-button>
      </div>-->
      <el-form :model="overtimeSupervisionForm">
        <div class="page-header clearfix">
            <div class="leftfix">督办事由</div>
            <div class="rightfix" v-show="overtimeSupervisionForm.createTime != null && overtimeSupervisionForm.createTime !=''">
              <div>督办创建时间</div>
              <div>{{overtimeSupervisionForm.createTime}}</div>
            </div>
        </div>
        <textarea class="inputstyle" v-model="overtimeSupervisionForm.supervisionReasons" type ="textarea" :readonly="this.supervisionReasonsStatus ? false : 'readonly'"></textarea>


        <div class="page-header clearfix" v-show="showFeedbackVisible">
            <div class="leftfix">回复</div>
            <div class="rightfix" v-show="overtimeSupervisionForm.updateTime != null && overtimeSupervisionForm.updateTime !=''">
              <div>回复时间</div>
              <div>{{overtimeSupervisionForm.updateTime}}</div>
            </div>
            <textarea class="inputstyle" v-model="overtimeSupervisionForm.concent" type ="textarea" :readonly="this.supervisionFeedbackStatus ? false : 'readonly'"></textarea>
        </div>

        <!-- <el-form-item label="回复" v-show="showFeedbackVisible">
            <textarea class="inputstyle" v-model="overtimeSupervisionForm.concent" type ="textarea" :readonly="this.supervisionFeedbackStatus ? false : 'readonly'"></textarea>
        </el-form-item> -->
      </el-form>
      <div v-show="showFeedbackOperationVisible" slot="footer" class="dialog-footer" style="margin-top: -30px;">
        <el-button @click="dialogOvertimeSupervisionVisible = false">取 消</el-button>
        <el-button type="primary"  @click="submitOvertimeSupervision">确 定</el-button>
      </div>
    </el-dialog>

<!-- 投诉转办 -->
    <el-dialog title="投诉转办" :visible.sync="dialogTransferVisible" width="600px">
      <el-form :model="transferForm">
        <div style="width: 100%;min-height: 100px;margin-top: -20px">
          <el-form-item label="指派单位" prop="complainAssignEnterproseId" >
            <el-select style="width: 100%" v-model="transferForm.complainAssignEnterproseName" placeholder="请选择指派单位"  @change="transferEnterpriseChang">
              <el-option
                v-for = "dict in transferEnterpriseList"
                :key = "dict.enterpriseId"
                :label = "dict.enterpriseName"
                :value = "dict.enterpriseId"
              />

            </el-select>
          </el-form-item>

          <el-form-item label="指派人" prop="complainAssignManId">
            <el-select v-model="transferForm.complainAssignMan" placeholder="请选择指派人" clearable style = "width: 100%" @change="transferManChang">
              <el-option
                v-for = "dict in peopleList"
                :key = "dict.id"
                :label = "dict.nickName"
                :value = "dict.id"
              />
            </el-select>
          </el-form-item>
        </div>
      </el-form>
      <div slot="footer" class="dialog-footer" style="margin-top: -30px;">
        <el-button @click="dialogTransferVisible = false">取 消</el-button>
        <el-button type="primary"  @click="transferSubmint">确 定</el-button>
      </div>
    </el-dialog>
<!-- 反馈内容 -->
    <el-dialog title="反馈内容" :visible.sync="dialogFormVisible" width="600px">
      <el-form :model="form2">
        <div style="width: 100%;min-height: 100px;margin-top: -20px">
          <el-form-item label="投诉事项" prop="complainMatter">
            <textarea class="inputstyle1" v-model="form2.complainMatter"  readonly></textarea>
          </el-form-item>
        </div>
        <el-form-item label="反馈" style = "margin-top: -15px;">
            <textarea class="inputstyle" v-model="form2.concent" type ="textarea" ></textarea>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer" style="margin-top: -30px;">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary"  @click="submint2">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 退回原因描述 -->
    <el-dialog title="退回原因" :visible.sync="dialogEnterpriseReturnVisible" width="600px" @close="handleEnterpriseReturnBeforClose">
      <el-form :model="enterpriseReturnForm">
        <el-form-item label="原因描述" style = "margin-top: -15px;">
            <textarea class="inputstyle" v-model="enterpriseReturnForm.reasonConcent" type ="textarea" ></textarea>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer" style="margin-top: -30px;">
        <el-button @click="dialogEnterpriseReturnVisible = false">取 消</el-button>
        <el-button type="primary"  @click="EnterpriseReturnSubmint">确 定</el-button>
      </div>
    </el-dialog>

    <!-- 评价 -->
    <el-dialog title="满意度评价" :visible.sync="dialogEvaluateVisible" width="600px" @close="handleEvaluateReturnBeforClose">
      <el-form :model="evaluateForm">
        <el-form-item label="评分" style = "margin-top: -15px;">
            <el-rate v-model="evaluateForm.evaluateRate" :disabled="evaluateFormRateDisabled"></el-rate>
        </el-form-item>
        <el-form-item label="原因描述" style = "margin-top: -15px;">
            <textarea class="inputstyle" v-model="evaluateForm.evaluateContent" type ="textarea" :readonly="evaluateFormContentReadonly"></textarea>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer" style="margin-top: -30px;" v-show="evaluateFormFooterVisible">
        <el-button @click="dialogEvaluateVisible = false">取 消</el-button>
        <el-button type="primary"  @click="evaluateSubmint">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 管理制度设置 -->
    <el-dialog title="管理制度设置" :visible.sync="dialogManSysSetVisible" width="900px">
      <el-table :data="complainDealManSysSetList">
        <el-table-column prop="fType" label="投诉处置类型" width="120">
          <template slot-scope="scope">
            <span v-if="scope.row.fType === '1'">投诉举报</span>
            <span v-else-if="scope.row.fType === '2'">服务申请</span>
            <span v-else-if="scope.row.fType === '3'">咨询建议</span>
            <span v-else>-</span>
          </template>
        </el-table-column>
        <el-table-column label="及时办结时长">
          <template slot-scope="scope">
           <DurationSetting :duration="scope.row" @update:externalMilliseconds="handleTotalMilliseconds($event, scope.$index)"></DurationSetting>
          </template>
        </el-table-column>

        <el-table-column prop="fRemarks" label="备注">
          <template slot-scope="scope">
            <el-input
              v-model="scope.row.fRemarks"
              @blur="handleManSysSetRemarksEdit(scope.$index, scope.row)"
              size="small">
            </el-input>
          </template>
        </el-table-column>
      </el-table>

      <div slot="footer" class="dialog-footer" style="margin-top: -30px;">
        <el-button @click="managementSystemSettingCancel">取 消</el-button>
        <el-button type="primary"  @click="managementSystemSettingSubmit">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import { listComplainDeal, getComplainDeal, delComplainDeal, addComplainDeal,
         updateComplainDeal, exportComplainDeal,getUserList,getComplainDealManSysSet,
         batchUpdateComplainDealManSysSet,addComplainTransFer,listComplainTransFer,
         addComplainEvaluate,updateComplainEvaluate,getComplainEvaluateByComplainDealId,
         getOverSuperByComplainDealIdAndStatus,addComplainDealOverSuper,
         updateComplainDealOverSuper,overtimeSupervisionFeedbackConfirmationMethod,
         historyOvertimeSupervisionListMethod } from "@/api/complainDeal/complainDeal";
import {enterpriseList,transferEnterpriseListMethod} from "@/api/system/eventInfo";
import { getUserProfile } from "@/api/system/user";
import { MessageBox } from 'element-ui'
import DurationSetting from '@/components/DurationSetting';
export default {
  name: "ComplainDeal",
  components: {
    DurationSetting
  },
  data() {
    return {
      externalMilliseconds: 0,
      //查看详情时，隐藏底部确定和取消按钮
      showDetails:true,
      //查看详情时，查看是否有 转办记录
      complainDealTransferList:[],
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 所属乡镇字典
      townshipOptions: [],
      // 总条数
      total: 0,
      // 投诉处置表格数据
      complainDealList: [],
      enterpriseList:[],
      peopleList:[],
      transferEnterpriseList:[],
      transferPeopleList:[],
      readonly:false,
      display:"display:none",
      // 投书状态类型：1.派发中 2.反馈 3.归档
      taskStateOptions: [],
      // 数据源：0.平台自建 1.省厅获取
      provincialDataFlagOptions: [
        {
          value: '0',
          label: '平台自建数据'
        },{
          value: '1',
          label: '省厅获取数据'
        }
      ],
      // 投诉处置制度表格数据
      complainDealManSysSetList:[],
      //督办历史记录数据
      historyOvertimeSupervisionList:[],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      dialogFormVisible:false,
      dialogManSysSetVisible:false,
      dialogEnterpriseReturnVisible:false,
      dialogTransferVisible:false,
      dialogEvaluateVisible:false,
      dialogSummaryAnalysisVisible:false,
      //超时督办 是否显示弹出层
      dialogOvertimeSupervisionVisible:false,
      //督办事由 企业端只读
      supervisionReasonsStatus:true,
      //反馈 监管部门只读
      supervisionFeedbackStatus:true,
      //超时督办  反馈是否显示
      showFeedbackVisible:false,
      //超时督办  操作是否显示
      showFeedbackOperationVisible:true,
      //历史督办记录弹出层
      historyOvertimeSupervisionVisible:false,
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        complaintChannels: null,
        complainName: null,
        complainPhone: null,
        complainMatter: null,
        complainType:null,
        transferRecord: null,
        dealCondition: null,
        complainAssignEnterproseName: null,
        complainAssignEnterproseId: null,
        complainAssignManId: null,
        complainAssignMan: null,
        complainStatus: null,
        isDel: null,
        remarks: null
      },
      // 表单参数
      form: {
        peopleList:[],
      },
      form2:{
        complainDealId:'',
        complainMatter:'',
        concent:'',
      },

      overtimeSupervisionForm:{
        //自己的id
        complainDealOverSuperId:'',
        //关联id
        complainDealId:'',
        //督办事由
        supervisionReasons:'',
        //反馈
        concent:'',
        // 超时督办：0-创建，1-企业反馈，2-确认反馈，不确认时监管部门直接改成 0  默认0
        overtimeSupervision:'',
        //创建时间
        createTime:'',
        //修改时间
        updateTime:''
      },
      enterpriseReturnForm:{
        complainDealId:'',
        reasonConcent:'',
        complainAssignManId:'',
        complainAssignMan:''
      },

      evaluateForm:{
        complainDealEvaluateId:0,
        complainDealId:0,
        evaluateContent:'',
        evaluateRate:null
      },
      //满意度评价底部只读
      evaluateFormFooterVisible:true,
      evaluateFormContentReadonly:false,
      evaluateFormRateDisabled:false,

      defaultEvaluateForm:{
        complainDealEvaluateId:0,
        complainDealId:0,
        evaluateContent:'',
        evaluateRate:null
      },

      transferForm:{
        complainDealId:'',
        complainAssignEnterproseId:'',
        complainAssignEnterproseName:'',
        complainAssignManId:'',
        complainAssignMan:''
      },
      //身份
      deptId:'',
      // 表单校验
      rules: {
        complainName: [
          { required: true, message: "投诉人不能为空", trigger: "blur" }
        ],
        complainPhone: [
          { required: true, message: "投诉人电话不能为空", trigger: "blur" }
        ],
        complainMatter: [
          { required: true, message: "投诉事项不能为空", trigger: "blur" }
        ],
        /*complainAssignEnterproseId: [
          { required: true, message: "指派单位不能为空", trigger: "blur" }
        ],*/
      }
    };
  },
  created() {
    this.getList();
    this.getUser();
    this.getEnterpriseList();
    this.getDicts("task_state").then(response => {
      this.taskStateOptions = response.data;
    });
    this.getDicts("t_township").then(response => {
      this.townshipOptions = response.data;
    });
  },
  methods: {
    //获取deptId
    getUser() {
      getUserProfile().then(response => {
        this.user = response.data;
        this.deptId = response.data.deptId;
        //console.log(this.deptId)
    });
    },
    /** 查询投诉处置列表 */
    getList() {
      this.loading = true;
      listComplainDeal(this.queryParams).then(response => {
        this.complainDealList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    //公司列表
    getEnterpriseList() {
      enterpriseList(this.queryParams).then(response => {
        this.enterpriseList = response.data;
      });
    },
    qiyechang(value){
      this.form.complainAssignMan="";
      let obj = {};
      obj = this.enterpriseList.find((item)=>{
        return item.enterpriseId === value;
      });
      this.form.complainAssignEnterproseName = obj.enterpriseName;
      this.form.complainAssignEnterproseId = value;
      getUserList(value).then(response => {
        //console.log(this.peopleList)
        this.peopleList=response.data;
      });
    },
    // 企业退回原因 对话框关闭
    handleEnterpriseReturnBeforClose() {
    },
    manChang(value){
      let obj = {};
      obj = this.peopleList.find((item)=>{
        return item.id === value;
      });
      this.form.complainAssignManId === value;
      this.form.complainAssignMan = obj.nickName;
    },
    // 取消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // 表单重置
    reset() {
      this.form = {
        complainDealId: null,
        complaintChannels: null,
        complainName: null,
        complainPhone: null,
        complainMatter: null,
        complainType:null,
        overtimeSupervision:null,
        transferRecord: null,
        dealCondition: null,
        complainAssignEnterproseName: null,
        complainAssignEnterproseId: null,
        complainAssignManId: null,
        complainAssignMan: null,
        complainStatus: "1",
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        isDel: null,
        remarks: null,
        township: null
      };
      this.resetForm("form");
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.complainDealId)
      this.single = selection.length!==1
      this.multiple = !selection.length
    },
    overtimeSupervisionStateFormat(row,column){
      if(row.overtimeSupervision === null || row.overtimeSupervision == '') {
        return '-'
      } else if (row.overtimeSupervision === '0') {
        return <p style='color: #ff7272'>已督办</p>
      } else if (row.overtimeSupervision === '1') {
        return <p style='color: #30B46B'>已回复</p>
      }
    },
    taskStateFormat(row, column) {
      var status = this.selectDictLabel(this.taskStateOptions, row.complainStatus);
      if(status=='派发中'){
        return <p style='color: #ff7272'>派发中</p>
      }else if(status=="已反馈"){
        return <p style='color: #1890ff'>已反馈</p>
      }else if(status=="已归档"){
        return <p style='color: #30B46B'>已归档</p>
      } else {
        return <p style='color: #ff0000'>企业退回</p>
      }
      return this.selectDictLabel(this.taskStateOptions, row.complainStatus);
    },
    /** 新增按钮操作 */
    handleAdd() {
      this.display="display:none";
      this.readonly = false;
      this.peopleList=[];
      this.reset();
      this.open = true;
      this.title = "添加投诉处置";
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.display="display:none";
      this.readonly = false;
      this.peopleList=[];
      this.reset();
      const complainDealId = row.complainDealId || this.ids
      getComplainDeal(complainDealId).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改投诉处置";
      });
    },
    /** 提交按钮 */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.complainDealId != null) {
            updateComplainDeal(this.form).then(response => {
              this.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addComplainDeal(this.form).then(response => {
              this.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    handleBeforClose() {
      if (this.readonly) {
        this.showDetails = true;
      }
      this.complainDealTransferList = [];
    },
    //详情
    handleDtail(row) {
      const complainDealId = row.complainDealId || this.ids
      //先看有没有转办记录
      listComplainTransFer(complainDealId).then(response =>{
        this.complainDealTransferList =  response.data;
        this.showDetails = false;
        this.display="display:";
        this.readonly = true;
        this.reset();
        getComplainDeal(complainDealId).then(response => {
          this.form = response.data;
          this.open = true;
          this.title = "投诉处置详情";
          var statusName = this.selectDictLabel(this.taskStateOptions, row.complainStatus);
          this.form.complainStatus=statusName;
        });
      })
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const complainDealIds = row.complainDealId || this.ids;
      this.$confirm('是否确认删除选中的投诉处置数据项?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(function() {
          return delComplainDeal(complainDealIds);
        }).then(() => {
          this.getList();
          this.msgSuccess("删除成功");
        }).catch(() => {});
    },
    //归档
    handlegui(row) {
      const complainDealIds = row.complainDealId || this.ids;
      this.$confirm('是否确认归档选中的投诉处置数据项?', "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "success"
      }).then(() => {
        var a = {"complainDealId":complainDealIds,"complainStatus":3}
        return updateComplainDeal(a);
      }).then(() => {
        this.msgSuccess("归档成功");
        this.getList();
      }).catch(() => {});
    },
    //反馈
    handlefankui(row){
      this.form2.concent="";
      this.dialogFormVisible = true;
      this.form2.complainDealId=row.complainDealId;
      this.form2.complainMatter = row.complainMatter;
    },
    //提交反馈信息
    submint2(){
      var a = {"complainDealId":this.form2.complainDealId,"complainStatus":2,"dealCondition":this.form2.concent}
      updateComplainDeal(a).then(response => {
        this.msgSuccess("修改成功");
        this.dialogFormVisible = false;
        this.getList();
      });
    },
    //管理制度 备注修改回调函数
    handleManSysSetRemarksEdit(index, row) {
      this.complainDealManSysSetList[index].fRemarks = row.fRemarks;
    },
    //管理制度取消
    managementSystemSettingCancel() {
      this.dialogManSysSetVisible = false;

    },
    //管理制度提交
    managementSystemSettingSubmit() {
      batchUpdateComplainDealManSysSet(this.complainDealManSysSetList).then(response =>{
        this.msgSuccess("管理制度修改成功");
        this.dialogManSysSetVisible = false;
      });
    },

    // 时间控件传回来的值
    handleTotalMilliseconds(manSysSetDuration,index){
      this.complainDealManSysSetList[index].fDay = manSysSetDuration.fDay;
      this.complainDealManSysSetList[index].fHours = manSysSetDuration.fHours;
      this.complainDealManSysSetList[index].fMinutes = manSysSetDuration.fMinutes;
      this.complainDealManSysSetList[index].fSeconds = manSysSetDuration.fSeconds;
    },
// 管理制度设置
    managementSystemSetting(){
      getComplainDealManSysSet().then(response =>{
        this.complainDealManSysSetList = response.data;
        this.dialogManSysSetVisible = true;
      })
    },
// 省厅数据获取
    provincialDataAcq(){
      this.$alert('省住建厅网站受理入口开发中，目前还无数据', '省厅数据获取', { confirmButtonText: '确定'});
    },
    /** 导出按钮操作 */
    handleExport() {
      const queryParams = this.queryParams;
      this.$confirm('是否确认导出所有投诉处置数据项?', "警告", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          this.exportLoading = true;
          return exportComplainDeal(queryParams);
        }).then(response => {
          this.download(response.msg);
          this.exportLoading = false;
        }).catch(() => {});
    },

    //企业退回
    handleEnterpriseReturn(row){
      this.dialogEnterpriseReturnVisible = true;
      this.enterpriseReturnForm.complainDealId = row.complainDealId;
      this.enterpriseReturnForm.complainAssignManId = row.complainAssignManId;
      this.enterpriseReturnForm.complainAssignMan = row.complainAssignMan;
      this.enterpriseReturnForm.reasonConcent = "";
    },
    //监管部门把企业退回的投诉 转办给其他企业
    handleTransfer(row){
      this.transferForm.complainDealId = row.complainDealId;
      this.transferEnterpriseList = [];
      this.transferForm.complainAssignMan = "";
      this.peopleList = []; // 清空指派人列表
      transferEnterpriseListMethod(this.transferForm.complainDealId).then(response =>{
        this.transferEnterpriseList = response.data;
        this.dialogTransferVisible = true;
      })
    },
    transferEnterpriseChang(value){
      this.transferForm.complainAssignMan = ""; // 清空指派人
      let obj = {};
      obj = this.transferEnterpriseList.find((item)=>{
        return item.enterpriseId === value;
      });

      this.transferForm.complainAssignEnterproseName = obj.enterpriseName;
      this.transferForm.complainAssignEnterproseId = value;
      getUserList(value).then(response => {
        this.peopleList=response.data;
      });
    },

    transferManChang(value){
      let obj = {};
      obj = this.peopleList.find((item)=>{
        return item.id === value;
      });
      this.transferForm.complainAssignManId = value; // 修复：应该是赋值而不是比较
      this.transferForm.complainAssignMan = obj.nickName;
    },
    //投诉转办 提交按钮
    transferSubmint() {
      //把这条数据的状态改成 派发中
      this.transferForm.complainStatus = '1';
      console.log(JSON.stringify(this.transferForm))
      updateComplainDeal(this.transferForm).then(response => {
        this.msgSuccess("修改成功");
        this.dialogTransferVisible = false;
        this.getList();
      });

    },
    //企业把 投诉处置退回 提交
    EnterpriseReturnSubmint() {
      addComplainTransFer(this.enterpriseReturnForm).then(response => {
        this.msgSuccess("已退回");
        this.dialogEnterpriseReturnVisible = false;
        this.getList();
      });
    },

    //查询历史督办信息展示
    historyOvertimeSupervisionListButton() {
      const complainDealId = this.overtimeSupervisionForm.complainDealId;
      const param = {
        complainDealId
      }
      historyOvertimeSupervisionListMethod(param).then(response => {
        this.historyOvertimeSupervisionList = response.data;
        this.historyOvertimeSupervisionVisible = true;
      })
    },
    //督办详情点击 table 每行
    handleTableRowClick(row, column, cell, event){
      if (row.overtimeSupervision === '0' || row.overtimeSupervision === '1') {

        const query = {
          complainDealId:row.complainDealId,
          overtimeSupervision:row.overtimeSupervision
        }
        getOverSuperByComplainDealIdAndStatus(query).then(response => {
          this.overtimeSupervisionForm = response.data;
          if(this.deptId == '-2') {
            if (this.overtimeSupervisionForm.overtimeSupervision === '1'){
              this.supervisionReasonsStatus = false;
            } else {
              this.supervisionReasonsStatus = true;
            }
            this.supervisionFeedbackStatus = false;
          } else {
            this.supervisionReasonsStatus = false;
            this.supervisionFeedbackStatus = true;
          }
          // 判断 反馈是否需要显示
          if (this.deptId != "-2") {
            this.showFeedbackVisible =  true;
          } else if (this.deptId === "-2" && this.overtimeSupervisionForm.concent != '') {
            this.showFeedbackVisible =  true;
          } else {
            this.showFeedbackVisible =  false;
          }

          if (this.overtimeSupervisionForm.overtimeSupervision === '1') {
            this.showFeedbackOperationVisible = false
          } else {
            this.showFeedbackOperationVisible = true
          }

          this.dialogOvertimeSupervisionVisible = true;
        })

      }

    },
    handleTableRowMouseLeave(row, column, cell, event){
        if (this.$refs['popover'+row.complainDealId]) {
          this.$refs['popover'+row.complainDealId].showPopper = false
        }
    },
    handleTableRowMouseEnter(row, column, cell, event){
      if (this.$refs['popover'+row.complainDealId]) {
        this.$refs['popover'+row.complainDealId].showPopper = true
      }
    },
    handlePopoverShow(overtimeSupervision){
      if(overtimeSupervision === '0') {
        return '超时督办进行中，点击查看详情'
      } else if (overtimeSupervision === '1') {
        return '超时督办企业已反馈，点击查看详情'
      }
    },
    //超时督办 反馈确认 -- 经讨论不需要了
    overtimeSupervisionFeedbackConfirmation(){
      MessageBox.confirm('是否确认反馈？', '提示', {
        confirmButtonText: '确认',
        cancelButtonText: '否定',
        type: 'warning'
      }).then(async () => {
        this.overtimeSupervisionForm.overtimeSupervision = "2"
        await overtimeSupervisionFeedbackConfirmationMethod(this.overtimeSupervisionForm);

        this.dialogOvertimeSupervisionVisible = false;
        this.getList();
      }).catch(async () => {
        this.overtimeSupervisionForm.overtimeSupervision = "0"
        await overtimeSupervisionFeedbackConfirmationMethod(this.overtimeSupervisionForm);

        this.dialogOvertimeSupervisionVisible = false;
        this.getList();
      });
    },
    //提交督办事由 有id就修改，没id就新增
    submitOvertimeSupervision(){
      console.log("this.overtimeSupervisionForm = " + this.overtimeSupervisionForm)
      //有就修改
      if(this.overtimeSupervisionForm.complainDealOverSuperId == null ||
      this.overtimeSupervisionForm.complainDealOverSuperId === '') {
        addComplainDealOverSuper(this.overtimeSupervisionForm).then(response => {
          this.msgSuccess("新增成功")
          this.dialogOvertimeSupervisionVisible = false;
          this.getList();
        })
      //没有就新增
      } else {
        updateComplainDealOverSuper(this.overtimeSupervisionForm).then(response => {
          this.msgSuccess("修改成功")
          this.dialogOvertimeSupervisionVisible = false;
          this.getList();
        })
      }
    },
    //监管部门-点击超时督办 操作 按钮
    handleOvertimeSupervision(row){
      // 说明还没创建过 超时督办，就不查数据库了
      if (row.overtimeSupervision == null || row.overtimeSupervision === '' || row.overtimeSupervision === '1'){
        this.overtimeSupervisionForm.complainDealId = row.complainDealId;
        this.overtimeSupervisionForm.complainDealOverSuperId = '';
        this.overtimeSupervisionForm.supervisionReasons = '';
        this.overtimeSupervisionForm.concent = '';
        this.overtimeSupervisionForm.overtimeSupervision = '';
        this.overtimeSupervisionForm.createTime = '';
        this.overtimeSupervisionForm.updateTime = '';
        this.dialogOvertimeSupervisionVisible = true;
        this.showFeedbackOperationVisible = true;
        this.showFeedbackVisible =  false;
        this.supervisionReasonsStatus = true;
      // 说明创建了 超时督办了，监管部门可能要对最新的一条记录进行修改，那就也查 超时督办的 状态是0的数据。
      //  || 说明是 企业反馈了，那就也查 超时督办的 状态是0的数据。
      } else if (row.overtimeSupervision === '0') {
        const query = {
          complainDealId:row.complainDealId,
          overtimeSupervision:row.overtimeSupervision
        }
        getOverSuperByComplainDealIdAndStatus(query).then(response => {
          this.overtimeSupervisionForm = response.data;
          this.dialogOvertimeSupervisionVisible = true;
        })
      //
      }
    },
    // 满意度评价
    handleSatisfactionEvaluation(row){

      this.evaluateFormFooterVisible=true,
      this.evaluateFormContentReadonly=false,
      this.evaluateFormRateDisabled=true,

      Object.keys(this.defaultEvaluateForm).forEach(key => {
      // 使用 key 从 defaultFormValues 中获取默认值，并赋值给 myForm 的对应字段
        this.evaluateForm[key] = this.defaultEvaluateForm[key];
      });
      this.evaluateForm.complainDealId = row.complainDealId;
      getComplainEvaluateByComplainDealId(this.evaluateForm.complainDealId).then(response =>{
        const data = response.data;

        if (data != null) {
          this.evaluateForm = data;
        }

        if ((this.evaluateForm.evaluateContent == null || this.evaluateForm.evaluateContent ==='') &&
             this.evaluateForm.evaluateRate == null ) {
            this.evaluateFormFooterVisible=true;
            this.evaluateFormContentReadonly=false;
            this.evaluateFormRateDisabled=false;
        } else{
            this.evaluateFormFooterVisible=false;
            this.evaluateFormContentReadonly='readonly';
            this.evaluateFormRateDisabled=true;
        }

         this.dialogEvaluateVisible = true;
      })
    },
    // 满意度评价提交
    evaluateSubmint(){
      console.log("this.evaluateForm = " + this.evaluateForm)
      if(this.evaluateForm.evaluateRate == null || this.evaluateForm.evaluateRate === ''){
        this.msgError("请选择评价等级");
      }else{
        if (this.evaluateForm.complainDealEvaluateId != null && this.evaluateForm.complainDealEvaluateId != 0) {
          updateComplainEvaluate(this.evaluateForm).then(response => {
            this.msgSuccess("评论修改成功");
            this.dialogEvaluateVisible = false;
          })
        } else {
          addComplainEvaluate(this.evaluateForm).then(response => {
            this.msgSuccess("评论添加成功");
            this.dialogEvaluateVisible = false;
          })
        }
      }
    },
    //关闭之前
    handleEvaluateReturnBeforClose() {

    },
  //按照 区域 和  类型 统计发生量
    drawNumberOfComplaints() {

    }
  },
}
</script>
<style>
  .division{
    display:flex;
    flex-direction:row;
    justify-content:flex-start;
  }
  .inputstyle{
    min-height: 200px;
    max-height: 300px;
    width: 100% !important;
    border-color: 0.5px #99a9bf;
    outline:none;
  }
  .inputstyle1{
    min-height: 50px;
    max-height: 200px;
    width: 100%;
    border : none;
    resize:none;
    outline:none;
  }
.circle {
  position: absolute;
  top: 17px;
  left: 4px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  margin-right: 5px;
}
.custom-popover {
  color: #f1f2f6; /* 字体颜色 */
  border: none; /* 可以设置边框样式，如果不需要则移除 */
  background-color: #f56c6c; /* 设置你想要的背景色 */
}
textarea {
  resize: none;
}
.leftfix {
      float: left;
      font-weight: bold;
  }
.rightfix {
    float: right;
}

.clearfix::after {
    content: '';
    display: block;
    clear: both;
}
</style>

