<template>
  <div>
    <div class="titleBox">
      <PageTitle title="线索数据采集">
        <el-button type="primary" @click="addEdit('add', null)">
          <el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
          <span style="vertical-align: middle">新增</span>
        </el-button>
        <el-button type="danger">
          <el-icon style="vertical-align: middle"><Dete /></el-icon>
          <span style="vertical-align: middle">批量删除</span>
        </el-button>
      </PageTitle>
    </div>
    <!-- 搜索 -->
    <div ref="searchBox">
      <Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/>
    </div>
    <!-- 表格 -->
    <div class="tabBox">
      <MyTable
        :tableData="pageData.tableData"
        :tableColumn="pageData.tableColumn"
        :tableHeight="pageData.tableHeight"
        :key="pageData.keyCount"
        :tableConfiger="pageData.tableConfiger"
        :controlsWidth="pageData.controlsWidth">
        <template #xlLx="{row}">
          <DictTag :tag="false" :value="row.xlLx" :options="D_GS_XS_LX" />
        </template>
        <template #qbLy="{row}">
          <DictTag :tag="false" :value="row.qbLy" :options="D_GS_XS_LY" />
        </template>
        <template #czzt="{row}">
          <DictTag :tag="false" :value="row.czzt" :options="D_GS_XS_CZZT" />
        </template>
        <template #zxkssj="{row}">
          <span>{{ row.zxkssj }}</span> 至
          <span>{{ row.zxjssj }}</span>
        </template>
        <template #shzt="{row}">
          <!-- 采纳（将这条信息推送到情报管理）,退回！ -->
          <DictTag :tag="false" :value="row.shzt" :options="D_BZ_XSSHZT" @clickTag="clickTag(row.shzt)" />
        </template>
        <!-- 操作 -->
        <template #controls="{ row }">
          <template v-if="row.shzt === '0'">
          </template>

          <!-- <el-popover placement="left" :visible="row.visible" :width="400" trigger="click">
            <template #reference>
              <el-link size="small" type="primary" @click.stop="handleSh(row)">审核</el-link>
            </template>

            <div class="flex mb10 align-center">
              <div class="w70 label-pop">审核状态 :</div>
              <div style="flex:1">
                <el-radio-group v-model="chooseRow.shzt" @change="rules.bhyy = false">
                  <el-radio v-for="obj in D_BZ_XSSHZT" :key="obj.value" :label="obj.value" >{{ obj.zdmc }}</el-radio>
                </el-radio-group>
              </div>
            </div>
            <div class="flex" v-if=" chooseRow.shzt == '01'">
              <div class="w70 label-pop">驳回原因 :</div>
              <div style="flex:1">
                <MOSTY.Other filterable style="width: 100%;" v-model="chooseRow.bhyy" type="textarea" rows="3" clearable placeholder="请输入审核原因"/>
                <div class="f12" style="color: red;" v-if="rules.bhyy">请输入驳回原因</div>
              </div>
            </div>

            <div class="mt10 flex just-center">
              <el-button size="small" @click.stop="cancel(row)">取消</el-button>
              <el-button size="small" type="primary" @click.stop="handleSumbit(row)">确定</el-button>
            </div>
          </el-popover> -->
         <template  v-if="!row.gzlid">
          <el-link size="small" type="success" @click="addEdit('edit', row)">编辑</el-link>
          <el-link size="small" type="primary" @click.stop="createProcess(row)">审核</el-link>
          <el-link size="small" type="danger" @click="delDictItem(row.id)">删除</el-link>
         </template>
         <el-link size="small" type="danger" @click="addEdit('info', row)">详情</el-link>
          <!-- 续报 == 编辑 -->
          <el-link size="small" type="warning" @click="addEdit('edit', row)">续报</el-link>
        </template>
      </MyTable>
      <Pages
        @changeNo="changeNo"
        @changeSize="changeSize"
        :tableHeight="pageData.tableHeight"
        :pageConfiger="{
          ...pageData.pageConfiger,
          total: pageData.total
        }"
      ></Pages>
    </div>
    <!-- 新增 -->
    <AddForm ref="detailDiloag" @change="getList" v-if="isShow" :dic="{D_BZ_SF,D_BZ_XB,D_GS_XS_LY,D_BZ_SSZT,D_GS_XS_LX ,D_GS_XS_QTLX}" />
  </div>
  <SubmissionProcess v-model="showSp" :data="rowData" :userData="{ ajmc: '线索数据采集审批', flowType: 'XSSJCJSP',modelName:'线索' }"
  :path="fixedValue" @getList="getList" />
</template>

<script setup>
import * as MOSTY from "@/components/MyComponents/index";
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import AddForm from "./components/addForm.vue";
import SubmissionProcess from '@/components/flowPath/submissionProcess.vue'
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import { useRouter } from "vue-router";

const router = useRouter();
const { proxy } = getCurrentInstance();
const {D_GS_XS_CZZT,D_GS_XS_LY, D_BZ_SSZT,D_BZ_SF,D_GS_XS_LX ,D_GS_XS_QTLX,D_BZ_XB,D_BZ_XSSHZT} = proxy.$dict("D_GS_XS_CZZT","D_GS_XS_LY","D_BZ_SSZT","D_BZ_SF","D_GS_XS_LX","D_GS_XS_QTLX","D_BZ_XB","D_BZ_XSSHZT"); //获取字典数据
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const isShow = ref(false)
const searchConfiger = ref([
  { label: "线索名称", prop: 'xsMc', placeholder: "请输入线索名称", showType: "input" },
  { label: "内容关键字", prop: 'xsNr', placeholder: "请输入语义关键字", showType: "input" },
  { label: "线索类型", prop: 'xlLx', placeholder: "请选择线索类型", showType: "select",options:D_GS_XS_LX },
  { label: "线索来源", prop: 'qbLy', placeholder: "请选择线索来源", showType: "select",options:D_GS_XS_LY },
  { label: "开始时间", prop: 'kssj', placeholder: "请选择开始时间", showType: "datetime" },
  { label: "结束时间", prop: 'jssj', placeholder: "请选择结束时间", showType: "datetime" },
  { label: "指向地点", prop: 'zxdz', placeholder: "请输入指向地点", showType: "input" },
]);
const chooseRow = ref({})
const rules = reactive({
  bhyy:false,
  shzt: false,
})
const pageData = reactive({
  tableData: [],
  keyCount: 0,
  tableConfiger: {
    rowHieght: 61,
    showSelectType: "checkBox",
    loading: false
  },
  total: 0,
  pageConfiger: {
    pageSize: 20,
    pageCurrent: 1
  },
  controlsWidth: 220,
  tableColumn: [
    { label: "线索编号", prop: "xsBh" },
    { label: "线索名称", prop: "xsMc" },
    { label: "线索类型", prop: "xlLx",showSolt:true },
    { label: "线索来源", prop: "qbLy",showSolt:true },
    { label: "指向时间", prop: "zxkssj",showSolt:true,showOverflowTooltip:true },
    { label: "上报时间", prop: "sxsbsj",showOverflowTooltip:true },
    { label: "指向地点", prop: "zxdz" },
    { label: "线索内容", prop: "xsNr"},
    { label: "处置状态", prop: "czzt",showSolt: true},
    { label: "附件", prop: "fjdz", showSolt: true },
    { label: "审核状态", prop: "shzt", showSolt: true },
  ]
});

const queryFrom = ref({});

onMounted(() => {
  getList()
  tabHeightFn();
});

const handleSh = (val) =>{
  chooseRow.value = {id:val.id,shzt:'01'}
  val.visible = !val.visible;
}
const cancel = (row) =>{
  row.visible = false;
  rules.bhyy = false;
  chooseRow.value = {}
}
const handleSumbit = (row) =>{
  rules.bhyy = !chooseRow.value.bhyy ? true :false;
  if(chooseRow.value.shzt == '01' && rules.bhyy) return false;
  let data = { ...chooseRow.value }
  qcckPost(data,'/mosty-gsxt/qbcj/updateByXssh').then(res=>{
    row.visible = false;
    proxy.$message({ type: "success",  message: "审核成功" });
    getList();
  })
}


// 搜索
const onSearch = (val) =>{
  queryFrom.value = {...val}
  pageData.pageConfiger.pageCurrent = 1;
  getList()
}

const changeNo = (val) =>{
  pageData.pageConfiger.pageCurrent = val;
  getList()
}
const changeSize = (val) =>{
  pageData.pageConfiger.pageSize = val;
  getList()
}

// 获取列表
const getList = () =>{
  pageData.tableConfiger.loading = true;
  let data = { ...pageData.pageConfiger, ...queryFrom.value,cjLx:'0' };
  qcckGet(data,'/mosty-gsxt/qbcj/selectPage').then(res=>{
    pageData.tableData = res.records || [];
    pageData.total = res.total;
    pageData.tableConfiger.loading = false;
  }).catch(()=>{ pageData.tableConfiger.loading = false; })
}

// 删除
const delDictItem = (id) =>{
  proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
    qcckPost({id},'/mosty-gsxt/qbcj/delete').then(()=>{
      proxy.$message({ type: "success",  message: "删除成功" });
      getList();
    })
  }).catch(() => {});
}

// 详情
const addEdit = (type, row) => {
  isShow.value = true;
  setTimeout(()=>{
    detailDiloag.value.init(type, row);
  },500)
};

const clickTag = (val) =>{
  if(val == '02')  router.push('/IntelligenceManagement');
}

// 表格高度计算
const tabHeightFn = () => {
  pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
  window.onresize = function () {
    tabHeightFn();
  };
};

// 工作流
const showSp = ref(false);
const rowData = ref()
// 固定值
const fixedValue = {
  clueVerification:'clueVerification',
  byMeansOf: 'qbcj/callback',
  nobyMeansOf: 'qbcj/callback',
  recycle:'qbcj/callback',
}
const createProcess = (row) => {
  showSp.value = true;
  rowData.value = row
}
</script>

<style lang="scss" scoped>
.label-pop{
  position: relative;
  &::before{
    position: absolute;
    content: '*';
    top: 0;
    left: -7px;
    color: red;
  }
}
</style>
<style>
.el-loading-mask {
  background: rgba(0, 0, 0, 0.5) !important;
}
</style>

