<!--待办事项列表-->
<template>
    <div class='default-main'>
        <TableHeader date-picker>
            <template v-slot:select>
                <!--        <el-form-item label='任务名称'>-->
                <!--          <el-input-->
                <!--              v-model='tableStore.table.params.searchValue'-->
                <!--              clearable-->
                <!--              placeholder='请输入任务名称'-->
                <!--          />-->
                <!--        </el-form-item>-->
            </template>
            <template #operation>
                <el-button icon='el-icon-Plus' type='primary' @click='add'>新增</el-button>
            </template>
        </TableHeader>
        <!--表格-->
        <Table ref='tableRef'></Table>
        <!--弹框-->
        <device-quit-popup ref='deviceQuitPopup' />

    </div>
</template>

<script setup lang='ts'>
import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { onMounted, provide, ref } from 'vue'
import { useRouter } from 'vue-router'
import DeviceQuitPopup from '@/views/pqs/supervise/retire/deviceQuitPopup.vue'
import { ElMessage } from 'element-plus'
import { ElMessageBox } from 'element-plus/es'
import { cancelQuitRunningDevice } from '@/api/supervision-boot/device/quitRunningDev'

defineOptions({
    name: 'supervision/retire'
})
const { push } = useRouter()
const deviceQuitPopup = ref()

const tableStore = new TableStore({
    url: '/supervision-boot/quitRunningDevice/list',
    method: 'POST',
    column: [
        { title: '序号', type: 'seq', width: 80 },
        {
            title: '设备类型', field: 'deviceType', minWidth: 130,
            render: 'tag',
            custom: {
                1: 'primary',
                2: 'primary'
            },
            replaceValue: {
                1: '装置',
                2: '监测点'
            }
        },
        { title: '供电公司', field: 'gdName', minWidth: 130 },
        { title: '变电站', field: 'subName', minWidth: 130 },
        { title: '设备名称', field: 'deviceName', minWidth: 130 },
        { title: '退役原因', field: 'propertyNo', minWidth: 130 },
        {
            title: '设备状态', field: 'deviceStatus', minWidth: 130,
            render: 'tag',
            custom: {
                0: 'success',
                1: 'warning',
                2: 'danger',
                3: 'warning',
                4: 'info'
            },
            replaceValue: {
                0: '运行',
                1: '检修',
                2: '停运',
                3: '调试',
                4: '退运'
            }
        },
        {
            field: 'status', title: '审核状态', minWidth: 100,
            render: 'tag',
            custom: {
                1: 'primary',
                2: 'success',
                3: 'danger',
                4: 'warning'
            },
            replaceValue: {
                1: '审批中',
                2: '审批通过',
                3: '审批不通过',
                4: '已取消'
            }
        },
        { field: 'createTime', title: '开始时间', minWidth: 170 },

        {
            title: '操作',
            align: 'center',
            minWidth: '150',
            fixed: 'right',
            render: 'buttons',
            buttons: [
                {
                    name: 'productSetting',
                    title: '流程详情',
                    type: 'primary',
                    icon: 'el-icon-EditPen',
                    render: 'basicButton',
                    click: row => {
                        handleAudit(row.processInstanceId,row.historyInstanceId)
                    }
                },
                {
                    name: 'edit',
                    title: '重新发起',
                    type: 'warning',
                    icon: 'el-icon-Open',
                    render: 'basicButton',
                    disabled: row => {
                        return row.status !== 3
                    },
                    click: row => {
                        deviceQuitPopup.value.open('重新发起退运', row)
                    }
                },
                {
                    name: 'cancel',
                    title: '取消',
                    type: 'danger',
                    icon: 'el-icon-Open',
                    render: 'basicButton',
                    disabled: row => {
                        return row.status == 3 || row.status == 2 || row.status == 4
                    },
                    click: row => {
                        cancelLeave(row)
                    }
                }
            ]
        }
    ],
    beforeSearchFun: () => {
        for (let key in tableStore.table.params) {
            if (tableStore.table.params[key] === '') {
                delete tableStore.table.params[key]
            }
        }

    }
})

onMounted(() => {
    // 加载数据
    tableStore.index()
})
tableStore.table.params.searchValue = ''
provide('tableStore', tableStore)

//新增退运设备信息
const add = () => {
    deviceQuitPopup.value.open('新增退运')
}

/** 流程实例详情 */
const handleAudit = (instanceId: string,historyIds:string) => {
    push({
        name: 'BpmProcessInstanceDetail',
        query: {
            id: instanceId,
            historyIds:historyIds
        }
    })
}

/**取消流程操作*/
const cancelLeave = async (row: any) => {
    // 二次确认
    const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputPattern: /^[\s\S]*.*\S[\s\S]*$/, // 判断非空，且非空格
        inputErrorMessage: '取消原因不能为空'
    })
    // 发起取消
    let data = {
        id: row.id,
        processInstanceId: row.processInstanceId,
        reason: value
    }
    await cancelQuitRunningDevice(data)
    ElMessage.success('取消成功')
    // 加载数据
    tableStore.index()
}


</script>
