<template>
  <div>
    <!--引用表格-->
    <BasicTable @register="registerTable" :rowSelection="rowSelection">
      <!--插槽:table标题-->
      <template #tableTitle>
        <!-- 每一个页面都有，无需配置权限 -->
        <a-button type="primary" @click="router.go(-1)">返回</a-button>
        <!-- 7个
                  填报中-查看基础信息：repair-tbz-fa-jbxx
                  待受理-查看基础信息：repair-dsl-fa-jbxx
                  待评审-查看基础信息：repair-dps-fa-jbxx
                  评审已通过-查看基础信息：repair-psytg-fa-jbxx
                  评审不通过-查看基础信息：repair-psbtg-fa-jbxx
                  评审后待完善-查看基础信息：repair-pshdws-fa-jbxx
                  不评审-查看基础信息：repair-bps-fa-jbxx
                  -->
        <a-button
          type="primary"
          @click="view"
          v-if="
            hasPermission('repair-tbz-fa-jbxx') ||
            hasPermission('repair-dsl-fa-jbxx') ||
            hasPermission('repair-dps-fa-jbxx') ||
            hasPermission('repair-psytg-fa-jbxx') ||
            hasPermission('repair-psbtg-fa-jbxx') ||
            hasPermission('repair-pshdws-fa-jbxx') ||
            hasPermission('repair-bps-fa-jbxx')
          "
          >查看基本信息</a-button
        >
        <template v-if="type == '填报'">
          <a-button type="primary" @click="filling" v-auth="'repair-tbz-zltb'">资料填报</a-button>
          <a-button type="primary" @click="add" v-auth="'repair-tbz-xzfa'">新增方案</a-button>
          <a-button type="primary" v-auth="'repair-tbz-scfa'" @click="del">删除方案</a-button>
          <a-button type="primary" @click="handleEvaluate" v-auth="'repair-tbz-zxps'">提交</a-button>
          <a-button type="primary" @click="NoEval" v-auth="'repair-tbz-bps'">不评审</a-button>
        </template>
        <template v-else-if="type == '待受理'">
          <!-- <a-button type="primary" @click="handleAdd('ysl')" v-auth="'repair-dsl-ysl'">预受理</a-button> -->
          <a-button type="primary" @click="handleAdd('')" v-auth="'repair-dsl-sl'">受理</a-button>
          <a-button type="primary" @click="backPs" v-auth="'repair-dps-fa-th'">退回</a-button>
        </template>
        <template v-else-if="type == '待评审'">
          <a-button type="primary" @click="toReview" v-auth="'repair-dsl-fa-psclsc'">评审材料上传</a-button>
          <a-button type="primary" @click="backPs" v-auth="'repair-dps-fa-th'">退回</a-button>
        </template>
        <template v-else-if="type == '评审已通过'">
          <a-button type="primary" @click="submit('')" v-auth="'repair-dps-thbps'">退回无需评审</a-button>
          <!-- <a-button type="primary" @click="submit('cc')" v-auth="'repair-psytg-cc'">地块抽查</a-button>
          <a-button type="primary" @click="submit('cclh')" v-auth="'repair-psytg-cclh'">地块抽查历史</a-button> -->
        </template>
        <template v-else-if="type == '评审后待完善'">
          <a-button type="primary" @click="handleComint" v-auth="'repair-dqr-dqr'">待确认</a-button>
        </template>
        <a-button
          type="primary"
          @click="handelStep"
          v-if="
            hasPermission('repair-tbz-fa-lct') ||
            hasPermission('repair-dsl-fa-lct') ||
            hasPermission('repair-dps-fa-lct') ||
            hasPermission('repair-psytg-fa-lct') ||
            hasPermission('repair-psbtg-fa-lct') ||
            hasPermission('repair-pshdws-fa-lct') ||
            hasPermission('repair-bps-fa-lct')
          "
          >流程图</a-button
        >
      </template>
    </BasicTable>
    <a-modal v-model:visible="evaluate" :centered="true" okText="我已了解，继续提交" cancelText="取消" title="信息" @ok="handleEvaluate">
      <dksumitTip />
    </a-modal>
    <a-modal v-model:visible="No" cancelText="取消" okText="确定" title="信息">
      <template #footer>
        <div>
          <a-button @click="No = false" type="primary">确定</a-button>
        </div>
      </template>
      <div class="py-15 ml-5"> 风险管控基本信息-报告标题没有填写，请完善后再提交审核 </div>
    </a-modal>
    <AcceptanceModal @register="registerModal" @success="handleSuccess" />
    <backModal @register="registerBackModal" @success="handleSuccess"></backModal>
    <SendBack @register="registerNoModal" @success="handleSuccess" />
    <ConfirmedModal @register="registerConfirmedModal" @success="handleSuccess" />
    <!-- 抽查历史 -->
    <CheckHistory @register="registerCcModal" @success="handleSuccess" />
    <!-- 预受理 -->
    <Paccept @register="registerlyslModal" @success="handleSuccess" />
    <!-- 流程图 -->
    <Step @register="registerlcModal" />
  </div>
</template>

<script lang="ts" name="dkgl-repair-Filling" setup>
  import { ref } from 'vue';
  import { BasicTable } from '/@/components/Table';
  import { useModal } from '/@/components/Modal';
  import { useRouter } from 'vue-router';
  import { useMessage } from '/@/hooks/web/useMessage';
  import { usePermission } from '/@/hooks/web/usePermission';
  import { useListPage } from '/@/hooks/system/useListPage';
  import { Modal } from 'ant-design-vue';
  import AcceptanceModal from '@/components/customComponent/AcceptanceModal.vue';
  import backModal from '@/components/customComponent/backModal.vue';
  import SendBack from '/@/components/customComponent/SendBack.vue';
  import { Fxcolumns } from './data';
  import { faList, addGkxf, delGkxf, psOrZxps } from '/@/api/common/api';
  import ConfirmedModal from '@/components/customComponent/ConfirmedModal.vue';
  import Paccept from '@/components/customComponent/Pacceptance.vue';
  import CheckHistory from '/@/components/customComponent/CheckHistory.vue'; // 新组件
  import { spotCheck, oneTip, checkZbmgxx } from '@/utils/checkTip';
  import Step from '/@/components/customComponent/steps/step.vue';
  import { tbzjxx } from '/@/api/common/api';
  import dksumitTip from '../components/dksumitTip.vue';
  import { chTip } from '@/utils/checkTip';

  const router = useRouter();
  const { createMessage } = useMessage();
  const { hasPermission } = usePermission();
  const [registerModal, { openModal }] = useModal();
  const [registerConfirmedModal, { openModal: openConfirmedModal }] = useModal();
  const [registerBackModal, { openModal: openBackModal }] = useModal();
  const [registerNoModal, { openModal: openNoModal }] = useModal();
  const [registerCcModal, { openModal: openCcModal }] = useModal();
  const [registerlcModal, { openModal: openlcModal }] = useModal();
  const [registerlyslModal, { openModal: openlyslModal }] = useModal();

  const wrdkid = ref(router.currentRoute.value.query.wrdkid);
  const type = ref(router.currentRoute.value.query.type);
  const jdnzt = ref(router.currentRoute.value.query.jdnzt);
  const isnyd2yzlg = ref(router.currentRoute.value.query.isnyd2yzlg);

  const evaluate = ref(false);
  const No = ref(false);
  //注册table数据
  const { tableContext } = useListPage({
    tableProps: {
      title: '基本信息列表',
      api: faList,
      beforeFetch(params) {
        params.wrdkid = wrdkid.value;
        params.scjdbm = 'S5';
        params.jdnzt = jdnzt.value;
      },
      columns: Fxcolumns,
      canResize: false,
      useSearchForm: false,
      rowKey: 'id',
      rowSelection: { type: 'radio' },
      clickToRowSelect: true,
      showActionColumn: false,
      actionColumn: {
        width: 120,
      },
    },
  });
  const [registerTable, { reload }, { rowSelection, selectedRowKeys, selectedRows }] = tableContext;
  // 点击查看流程图
  function handelStep() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    const params = {
      pgtype: selectedRows.value[0].pgtype,
      wrdkid: wrdkid.value,
    };
    openlcModal(true, {
      record: params,
      isUpdate: true,
      showFooter: true,
    });
  }
  // 资料填报
  async function filling() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    if (selectedRows.value[0].tbzt == 't2' || selectedRows.value[0].tbzt == '已评审' || selectedRows.value[0].tbzt == '待评审') {
      createMessage.info('当前状态能填报资料');
      return;
    }

    // 土地使用权人需要判断市级是否填报
    if (await checkZbmgxx({ wrdkid: wrdkid.value })) return;

    router.push(`/dkgl/repair/FillingInfor?wrdkid=${wrdkid.value}&id=${selectedRowKeys.value[0]}&pgtype=${selectedRows.value[0].pgtype}`);
  }
  // 点击新增方案
  async function add() {
    await addGkxf({ wrdkid: wrdkid.value });
    reload();
  }
  // 删除方案列表
  async function del() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    Modal.confirm({
      title: '确认删除',
      content: '是否删除选中数据',
      centered: true,
      okText: '确认',
      cancelText: '取消',
      onOk: async () => {
        await delGkxf({ id: selectedRowKeys.value[0], wrdkid: wrdkid.value });
        reload();
      },
    });
  }
  // 查看基本信息
  function view() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    router.push(
      `/dkgl/repair/ViewDetail?wrdkid=${selectedRows.value[0].wrdkid}&id=${selectedRows.value[0].id}&pgtype=${selectedRows.value[0].pgtype}`
    );
  }
  // 点击提交
  async function handleEvaluate() {
    if (!selectedRows.value[0].bt) {
      No.value = true;
      return;
    }
    if (!chTip(selectedRows.value)) return;
    await psOrZxps({
      zjlz: 1,
      wrdkid: wrdkid.value,
      pgtype: selectedRows.value[0].pgtype,
      id: selectedRows.value[0].id,
    });
    evaluate.value = false;
    reload();
  }
  // 点击不评审
  async function NoEval() {
    if (!selectedRows.value[0].bt) {
      No.value = true;
      return;
    }
    if (!chTip(selectedRows.value)) return;
    await psOrZxps({
      zjlz: 2,
      wrdkid: wrdkid.value,
      id: selectedRows.value[0].id,
    });
    reload();
  }
  function handleAdd(v) {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    const obj = selectedRows.value[0];
    obj.jdnzt = jdnzt.value;
    obj.pgtype = selectedRows.value[0].pgtype;
    obj.scjdbm = 'S5';
    if (v == 'ysl') {
      openlyslModal(true, {
        record: obj,
        isUpdate: true,
        showFooter: true,
      });
    } else {
      openModal(true, {
        record: obj,
        isUpdate: true,
        showFooter: true,
      });
    }
  }
  // 点击退回评审
  function backPs() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    const obj = selectedRows.value[0];
    obj.tbjdbm = jdnzt.value;
    obj.pgtype = selectedRows.value[0].pgtype;
    openBackModal(true, {
      record: obj,
      showFooter: true,
    });
  }
  //  退回无需评审
  async function submit(v) {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    if (v == 'cc') {
      const params = {
        wrdkid: selectedRowKeys.value,
        sccdmkbm: 'S3',
      };
      spotCheck(params, handleSuccess);
    } else if (v == 'cclh') {
      if (oneTip(selectedRowKeys.value)) return;

      const params = {
        wrdkid: selectedRowKeys.value[0],
        scjdbm: 'S4',
      };
      openCcModal(true, {
        record: params,
        showFooter: true,
      });
    } else {
      const obj: any = selectedRows.value[0];
      obj.wrdkid = wrdkid.value;
      obj.tbjdbm = jdnzt.value;
      openNoModal(true, {
        record: obj,
        showFooter: true,
      });
    }
  }
  function handleSuccess() {
    selectedRows.value = [];
    selectedRowKeys.value = [];
    reload();
  }
  async function toReview() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    const { value: [row] = [] } = selectedRows;
    const { pgtype, scjdbm } = row || {};
    const params = {
      scjdbm: scjdbm,
      wrdkid: wrdkid.value,
      pgtype: pgtype,
    };
    await tbzjxx(params);
    router.push(`/dkgl/repair/modal/ReviewMaterialUpload?wrdkid=${wrdkid.value}&isnyd2yzlg=${isnyd2yzlg.value}&pgtype=${pgtype}&scjdbm=${scjdbm}`);
  }
  function handleComint() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (!chTip(selectedRows.value)) return;
    if (selectedRows.value[0].tbjdbm == 'DSL' && selectedRows.value[0].sfthxg == 1) {
      openConfirmedModal(true, {
        record: selectedRows.value[0],
        isUpdate: true,
        showFooter: true,
      });
    } else {
      createMessage.info('数据还未提交，请提交后再进行操作');
    }
  }
</script>
<style scoped></style>
