<template>
  <div>
    <!--引用表格-->
    <BasicTable @register="registerTable" :rowSelection="rowSelection">
      <!--插槽:table标题-->
      <template #tableTitle>
        <!-- 每一个页面都有，无需配置权限 -->
        <a-button type="primary" @click="router.go(-1)">返回</a-button>
        <!-- 7个
                  填报中-查看基础信息：xfpg-tbz-fa-jbxx
                  待受理-查看基础信息：xfpg-dsl-fa-jbxx
                  待评审-查看基础信息：xfpg-dps-fa-jbxx
                  评审已通过-查看基础信息：xfpg-psytg-fa-jbxx
                  评审不通过-查看基础信息：xfpg-psbtg-fa-jbxx
                  评审后待完善-查看基础信息：xfpg-pshdws-fa-jbxx
                  不评审-查看基础信息：xfpg-bps-fa-jbxx
                  -->
        <a-button
          type="primary"
          @click="view"
          v-if="
            hasPermission('xfpg-tbz-fa-jbxx') ||
            hasPermission('xfpg-dsl-fa-jbxx') ||
            hasPermission('xfpg-dps-fa-jbxx') ||
            hasPermission('xfpg-psytg-fa-jbxx') ||
            hasPermission('xfpg-psbtg-fa-jbxx') ||
            hasPermission('xfpg-pshdws-fa-jbxx') ||
            hasPermission('xfpg-bps-fa-jbxx')
          "
          >查看基本信息</a-button
        >
        <template v-if="type == '填报'">
          <a-button type="primary" @click="add" v-auth="'xfpg-tbz-xzfa'">新增方案</a-button>
          <a-button type="primary" @click="filling" v-auth="'xfpg-tbz-zltb'">资料填报</a-button>
          <a-button type="primary" v-auth="'xfpg-tbz-scfa'" @click="del">删除方案</a-button>

          <a-button type="primary" @click="submit('tj')" v-auth="'xfpg-tbz-zxps'">提交</a-button>
          <a-button type="primary" @click="NoEval" v-auth="'xfpg-tbz-bps'">不评审</a-button>
        </template>
        <template v-else-if="type == '待受理'">
          <a-button type="primary" @click="handleAdd" v-auth="'xfpg-dsl-sl'">受理</a-button>
          <!-- <a-button type="primary" @click="backPs" v-auth="'xfpg-dps-fa-th'">退回</a-button> -->
        </template>
        <template v-else-if="type == '待评审'">
          <a-button type="primary" @click="toReview" v-auth="'xfpg-dps-fa-psclsc'">评审材料上传</a-button>
          <a-button type="primary" @click="backPs" v-auth="'xfpg-dps-fa-th'">退回</a-button>
        </template>
        <template v-else-if="type == '评审已通过'">
          <a-button type="primary" @click="submit('bps')" v-auth="'xfpg-dps-thbps'">退回无需评审</a-button>
        </template>
        <template v-else-if="type == '评审后待完善'">
          <a-button type="primary" @click="handleComint" v-auth="'xfpg-dqr-dqr'">待确认</a-button>
        </template>
      </template>
    </BasicTable>
    <a-modal v-model:visible="evaluate" :centered="true" okText="我已了解，继续提交" cancelText="取消" title="信息" @ok="handleEvaluate">
      <div class="py-4 ml-5">
        按照《建设用地土壤污染风险管控和修复从业单位和个人执业情况信用记录管理办法》第十五条，土壤污染状况调查、土壤污染风险评估.(试行)管控方案编制、修复方案编制、风险管控效果评估、修复效果评估、风险管控施工修复施工、工程监理、土壤和地下水监测的从业单位，应当在项实施所涉及的土壤污染状况调查报告、风险评估报告、效果评估报告岌凤险管控写修夏方案依据《中举火民共和国生最污梁防治法》提审或备案前，在信用记录系统记录单位和个人业绩情况信息
      </div>
    </a-modal>
    <a-modal v-model:visible="No" cancelText="取消" okText="确定">
      <template #title>
        <div>
          <a-button @click="No = false" type="primary">确定</a-button>
        </div>
      </template>
      <div class="py-4 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" />
  </div>
</template>

<script lang="ts" name="dkgl-fxgk-Filling" setup>
  import { ref } from 'vue';
  import { Modal } from 'ant-design-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 AcceptanceModal from './modal/AcceptanceModal.vue';
  import backModal from '@/components/customComponent/backModal.vue';
  import SendBack from '/@/components/customComponent/SendBack.vue';
  import { Fxcolumns } from './data';
  import { faList, addXgpg, delXgpg, psOrZxps, submitXgpg } from '/@/api/common/api';
  import ConfirmedModal from '@/components/customComponent/ConfirmedModal.vue';

  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 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 = 'S6';
        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 filling() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    if (selectedRows.value[0].tbzt == 't2' || selectedRows.value[0].tbzt == '已评审' || selectedRows.value[0].tbzt == '待评审') {
      createMessage.info('当前状态能填报资料');
      return;
    }

    router.push(`/dkgl/xfpg/FillingInfor?wrdkid=${wrdkid.value}&id=${selectedRowKeys.value[0]}&pgtype=${selectedRows.value[0].pgtype}`);
  }
  // 点击新增方案
  async function add() {
    await addXgpg({ wrdkid: wrdkid.value });
    reload();
  }
  // 删除方案列表
  async function del() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    Modal.confirm({
      title: '确认删除',
      content: '是否删除选中数据',
      centered: true,
      okText: '确认',
      cancelText: '取消',
      onOk: async () => {
        await delXgpg({ id: selectedRowKeys.value[0], wrdkid: wrdkid.value });
        reload();
      },
    });
  }
  // 查看基本信息
  function view() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    router.push(`/dkgl/xfpg/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;
    }
    await psOrZxps({
      zjlz: 1,
      pgtype: selectedRows.value[0].pgtype,
      wrdkid: wrdkid.value,
      id: selectedRows.value[0].id,
    });
    evaluate.value = false;
    reload();
  }
  // 点击不评审
  async function NoEval() {
    if (!selectedRows.value[0].title) {
      No.value = true;
      return;
    }
    await psOrZxps({
      zjlz: 0,
      wrdkid: wrdkid.value,
      id: selectedRows.value[0].id,
    });
    reload();
  }
  function handleAdd() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    const obj: any = {};
    obj.id = selectedRowKeys.value[0];
    obj.jdnzt = jdnzt.value;
    obj.wrdkid = wrdkid.value;
    obj.pgtype = selectedRows.value[0].pgtype;
    obj.scjdbm = 'S6';

    openModal(true, {
      record: obj,
      isUpdate: true,
      showFooter: true,
    });
  }

  // 点击退回评审
  function backPs() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      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 (v == 'tj') {
      let obj: any = {};
      obj.id = selectedRowKeys.value[0];
      obj.tbjdbm = jdnzt.value;
      obj.wrdkid = wrdkid.value;
      obj.scjdbm = 'S6';
      obj.pgtype = selectedRows.value[0].pgtype;
      await submitXgpg(obj);
      handleSuccess();
    } else if (v == 'bps') {
      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();
  }
  function toReview() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      return;
    }
    const { value: [row] = [] } = selectedRows;
    const { pgtype, scjdbm } = row || {};
    router.push(`/dkgl/xfpg/modal/ReviewMaterialUpload?wrdkid=${wrdkid.value}&isnyd2yzlg=${isnyd2yzlg.value}&pgtype=${pgtype}&scjdbm=${scjdbm}`);
  }
  function handleComint() {
    if (selectedRowKeys.value.length == 0) {
      createMessage.info('请选择需要处理的内容，每次只能选中一条');
      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>
