SchedueLog.vue 3.97 KB
<template>
  <div>
    <BasicModal
      v-bind="$attrs"
      width="110rem"
      :height="heightNum"
      @register="register"
      title="调度日志"
      @cancel="handleCancel"
      :showOkBtn="false"
    >
      <div>
        <BasicTable @register="registerTable">
          <template #toolbar>
            <a-button type="primary"> 导出 </a-button>
            <Popconfirm title="您确定要批量删除数据" ok-text="确定" cancel-text="取消">
              <a-button type="primary" color="error" :disabled="hasBatchDelete">
                批量删除
              </a-button>
            </Popconfirm>
          </template>
          <template #action="{ record }">
            <TableAction
              :actions="[
                {
                  label: '查看',
                  icon: 'clarity:note-edit-line',
                },
                {
                  label: '删除',
                  icon: 'ant-design:delete-outlined',
                  color: 'error',
                  popConfirm: {
                    title: '是否确认删除',
                    confirm: handleDeleteOrBatchDelete.bind(null, record),
                  },
                },
              ]"
            />
          </template>
          <template #doStatus="{ record }">
            <Switch
              :disabled="disabledSwitch"
              :checked="record.status === 1"
              :loading="record.pendingStatus"
              checkedChildren="启用"
              unCheckedChildren="禁用"
              @change="(checked:boolean)=>statusChange(checked,record)"
            />
          </template>
        </BasicTable>
      </div>
    </BasicModal>
  </div>
</template>
<script setup lang="ts">
  import { ref, nextTick } from 'vue';
  import { BasicModal, useModalInner } from '/@/components/Modal';
  import { BasicTable, useTable, TableAction } from '/@/components/Table';
  import { columnSchedue, searchSchedueFormSchema } from '../../report/config/config.data';
  import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
  import { deleteReportManage, reportPage } from '/@/api/report/reportManager';
  import { Popconfirm, Switch } from 'ant-design-vue';

  const disabledSwitch = ref(false);
  const heightNum = ref(800);
  const [registerTable, { setProps, reload }] = useTable({
    title: '调度日志列表',
    api: reportPage,
    columns: columnSchedue,
    showIndexColumn: false,
    clickToRowSelect: false,
    useSearchForm: true,
    ellipsis: true,
    showTableSetting: true,
    bordered: true,
    formConfig: {
      labelWidth: 120,
      schemas: searchSchedueFormSchema,
      fieldMapToTime: [['sendTime', ['startTime', 'endTime'], 'YYYY-MM-DD HH:mm:ss']],
    },
    rowKey: 'id',
    actionColumn: {
      width: 200,
      title: '操作',
      dataIndex: 'action',
      slots: { customRender: 'action' },
      fixed: 'right',
    },
  });
  // 刷新
  const handleSuccess = () => {
    reload();
  };
  const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete(
    deleteReportManage,
    handleSuccess,
    setProps
  );

  const [register] = useModalInner((data) => {
    console.log(data);
    nextTick(() => {
      setProps(selectionOptions);
      setProps({
        rowKey: 'id',
      });
    });
  });
  const handleCancel = () => {};
  const statusChange = async (checked, record) => {
    try {
      setProps({
        loading: true,
      });
      disabledSwitch.value = true;
      const newStatus = checked ? 1 : 0;
      console.log(checked, record, newStatus);
      // const res = await putReportByidAndStatusManage(record.id, newStatus);
      // if (res && newStatus) {
      //   createMessage.success(`启用成功`);
      // } else {
      //   createMessage.success('禁用成功');
      // }
    } finally {
      setTimeout(() => {
        setProps({
          loading: false,
        });
        disabledSwitch.value = false;
      }, 500);
      reload();
    }
  };
</script>
<style lang="less" scoped></style>