<template>
  <ContentWrap>
    <!-- 搜索工作栏 -->
    <Search :schema="QualityNoticeMain.allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
  </ContentWrap>

  <!-- 列表头部 -->
  <TableHead :HeadButttondata="HeadButttondata" @button-base-click="buttonBaseClick" :routeName="routeName"
    @updataTableColumns="updataTableColumns" @searchFormClick="searchFormClick"
    :allSchemas="QualityNoticeMain.allSchemas" />

  <!-- 列表 -->
  <ContentWrap>
    <Table :columns="tableColumns" :data="tableObject.tableList" :loading="tableObject.loading" :pagination="{
        total: tableObject.total
      }" v-model:pageSize="tableObject.pageSize" v-model:currentPage="tableObject.currentPage"
      v-model:sort="tableObject.sort">
      <template #number="{row}">
        <el-button type="primary" link @click="openDetail(row, '单据号', row.number)">
          <span>{{ row.number }}</span>
        </el-button>
      </template>
      <template #action="{ row }">
        <ButtonBase :Butttondata="butttondata(row)" @button-base-click="buttonTableClick($event,row)" />
      </template>
    </Table>
  </ContentWrap>

  <!-- 表单弹窗：添加/修改 -->
    <AddForm
    ref="formRef"
    basicFormWidth="80"
    @submitForm="submitForm"
  />
  <!-- 详情 -->
  <!-- <Detail
  ref="detailRef" :isBasic="false" :allSchemas="InspectionJobMain.allSchemas"
    :detailAllSchemas="InspectionJobDetail.allSchemas"
    :detailAllSchemasRules="InspectionJobDetailRules"
    :apiCreate="InspectionJobDetailApi.createInspectionJobDetail"
    :apiUpdate="InspectionJobDetailApi.updateInspectionJobDetail"
    :apiPage="InspectionJobDetailApi.getInspectionJobDetailPage"
    :apiDelete="InspectionJobDetailApi.deleteInspectionJobDetail" @searchTableSuccessDetail="searchTableSuccessDetail"
    :isShowAddBtn="false" :detailButtonIsShow="true"
  /> -->
  <!-- 包装信息 -->
  <ListTable ref="listTableRef" titleName="包装信息"/>
</template>

<script setup lang="ts">
  import download from '@/utils/download'
  import { QualityNoticeMain} from './qualityNoticeMain.data'

  import * as qualityNoticeApi from '@/api/qms/qualityNotice'
  import * as defaultButtons from '@/utils/disposition/defaultButtons'
  import ListTable from '@/components/ListTable/src/ListTable.vue'
  import TableHead from '@/components/TableHead/src/TableHead.vue'
  import AddForm from './addForm.vue'
  // import Detail from './detail.vue'

  // 采购订单
  defineOptions({ name: 'QualityNoticeMain' })

  const message = useMessage() // 消息弹窗
  const { t } = useI18n() // 国际化
  const route = useRoute() // 路由信息
  const routeName = ref()
  routeName.value = route.name
  const tableColumns = ref(QualityNoticeMain.allSchemas.tableColumns)

  // 字段设置 更新主列表字段
  const updataTableColumns = (val) => {
    tableColumns.value = val
  }

  // 查询页面返回
  const searchTableSuccess = (formField, searchField, val, formRef, type, row) => {
    nextTick(async () => {
      if (type == 'tableForm') {
        // 明细查询页赋值
        row[formField] = val[0][searchField]
        // row['itemNumber'] = val[0]['number']
        // row['itemName'] = val[0]['name']
        // row['uom'] = val[0]['uom']
        // row['isRadeIn'] = val[0]['isRadeIn']
        // row['available'] = val[0]['available']
      } else {
        const setV = {}
        setV[formField] = val[0][searchField]
        formRef.setValues(setV)
      }
    })
  }
  // 查询页面返回——详情
  const searchTableSuccessDetail = (formField, searchField, val, formRef) => {
    nextTick(async () => {
      const setV = {}
      // if(formField == 'itemCode'){
      //     await ItembasicApi.getItembasicPage({
      //       code: setV['itemCode']
      //     }).then(res => {
      //       setV['uom'] = res.list[0].uom
      //       setV[formField] = val[0][searchField]
      //     })
      //   }
      formRef.setValues(setV)
    })
  }

  // 子表新增的时候选择表格之后需要会显得字段
  const Echo = []
  const { tableObject, tableMethods } = useTable({
    getListApi: qualityNoticeApi.qualityNoticePage // 分页接口
  })

  // 获得表格的各种操作
  const { getList, setSearchParams } = tableMethods

  // 列表头部按钮
  const HeadButttondata = [
    defaultButtons.defaultAddBtn(null), // 刷新
    defaultButtons.defaultFreshBtn(null), // 刷新
    defaultButtons.defaultFilterBtn(null), // 筛选
    defaultButtons.defaultSetBtn(null), // 设置
  ]

  // 头部按钮事件
  const buttonBaseClick = (val, item) => {
    if (val == 'add') { // 新增
      openForm('create')
    } else if (val == 'import') { // 导入
      handleImport()
    } else if (val == 'export') { // 导出
      handleExport()
    } else if (val == 'refresh') { // 刷新
      getList()
    } else if (val == 'filtrate') { // 筛选
    } else { // 其他按钮
      console.log('其他按钮', item)
    }
  }

  // 根据状态返回该按钮是否显示
  const isShowMainButton = (row, val) => {
    if (val.indexOf(row.status) > -1) {
      return false
    } else {
      return true
    }
  }
  // 列表-操作按钮
  const butttondata = (row) => {
    return [
      defaultButtons.mainListEditBtn({hasPermi:'qms:quality-notice:edit'}), // 编辑
      // defaultButtons.mainListEditBtn({hasPermi:'qms:quality-notice:delete'}), // 删除
      defaultButtons.mainListOrderPubBtn({ hide: isShowMainButton(row,'pub'),hasPermi:'qms:quality-notice:pub'}), // 发布
      // defaultButtons.mainListJobCloBtn({hide:isShowMainButton(row,['1']),hasPermi:'qms:inspection-job-main:close'}), // 关闭
      // defaultButtons.mainListJobAbaBtn({hide:isShowMainButton(row,['2']),hasPermi:'qms:inspection-job-main:abandon'}), // 放弃
      // defaultButtons.mainListJobExeBtn({hide:isShowMainButton(row,['2']),hasPermi:'qms:inspection-job-main:execute'}), // 执行
      // defaultButtons.mainListPackageBtn(null), // 包装
    ]
  }
  const listTableRef = ref()
  // 列表-操作按钮事件
  const buttonTableClick = async (val, row) => {
    if (val == 'edit') { // 编辑
    openForm('update', row)
  } else if (val == 'delete') { // 删除
    handleDelete(row.id)
  } else if(val == 'agree'){
    handleAgree(row.id)
  }
  }
  /** 添加/修改操作 */
  const formRef = ref()
  const openForm = async (type : string, row ?: number) => {
    formRef.value.open(type, row)
  }

  /** 详情操作 */
  const detailRef = ref()
  const openDetail = (row : any, titleName : any, titleValue : any) => {
    detailRef.value.openDetail(row, titleName, titleValue, 'basicInspectionJobMain')
  }
  
  
  // 主子数据 提交
  const submitForm = async (formType, data) => {
    console.log(data)
    // return
    try {
      if (formType === 'create') {
        await qualityNoticeApi.qualityNoticeCreat(data)
        message.success(t('common.createSuccess'))
      } else if(formType === 'update') {
        await qualityNoticeApi.qualityNoticeUpdate(data)
        message.success(t('common.updateSuccess'))
      }
      formRef.value.dialogVisible = false
      // 刷新当前列表
      getList()
    } finally {
      formRef.value.formLoading = false
    }
  }

  /** 导入 */
  const importFormRef = ref()
  const handleImport = () => {
    importFormRef.value.open()
  }


  // 筛选提交
  const searchFormClick = (searchData) => {
    tableObject.params = {
      isSearch: true,
      filters: searchData.filters
    }
    getList() // 刷新当前列表
  }

  /** 初始化 **/
  onMounted(async () => {
    getList()
  })
</script>
