<template>
    <div class="app-container">
        <div class="title-container">
            <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
        </div>
        <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="selectPage">
            <template slot="left">
                <el-input style="margin-left: 20px;width: 300px;float: left;" class="filter-item"
                    v-model="listQuery.keyWord" placeholder="项目编号/报告号/项目名称/业务来源" clearable>
                </el-input>
                <el-select v-model="listQuery.principalId" filterable placeholder="项目负责人（可搜索）"
                    style=" width: 200px;margin-left: 10px;float: left;">
                    <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
                </el-select>
                <el-select v-model="listQuery.clientManagerId" filterable placeholder="客户经理（可搜索）"
                    style=" width: 200px;margin-left: 10px;float: left;">
                    <el-option v-for="(u, id) in allUsers" :label="u.name" :value="u.id"></el-option>
                </el-select>
                <el-select v-model="listQuery.assetsBusinessGener" filterable placeholder="业务类型"
                    style=" width: 200px;margin-left: 10px;float: left;">
                    <el-option v-for="(s, value) in assetsBusinessGeners" :label="s.label" :value="s.value"></el-option>
                </el-select>
                <el-select v-model="listQuery.nodeCode" filterable placeholder="流程节点（可搜索）"
                    style=" width: 200px;margin-left: 10px;float: left;">
                    <el-option v-for="item in nodes" :label="item.name" :value="item.code">
                    </el-option>
                </el-select>
                <el-button class="filter-item" style="margin-left: 10px;float: left;" type="primary" @click="searchList"
                    round>搜索
                </el-button>
                <el-button class="filter-item" style="float: left;" round type="success" @click="resetParams()">重置
                </el-button>
                <PermissionButton menu-code="_views_assets_batch_commit_bookbinding_stamp" class-name="filter-item"
                    type="danger" icon="el-icon-paperclip" :page-jump="false" round @click="openBatchCommitDialog()" />
            </template>
            <parentTable ref="table" v-loading="listLoading" :data="pageData.records" slot="table" style="width: 100%;">
                <el-table-column label="项目编号" align="center" width="100">
                    <template slot-scope="{row}">
                        <span @contextmenu.prevent="$doCopy(row.orderId)">{{ row.orderId }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="分单类型" align="center" width="80">
                    <template slot-scope="{row}">
                        <span>{{ row.allotType }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="意见书号" align="center" width="220">
                    <template slot-scope="{row}">
                        <span @contextmenu.prevent="$doCopy(row.statementNo)">{{ row.statementNo == null ? '-' :
                            row.statementNo }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="报告号" align="center" width="220">
                    <template slot-scope="{row}">
                        <span @contextmenu.prevent="$doCopy(row.reportNo)">{{ row.reportNo == null ? '-' : row.reportNo
                        }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="项目名称" align="center" width="250" show-overflow-tooltip>
                    <template slot-scope="{row}">
                        <span>{{ row.reportName || row.statementName || row.name }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="业务类型" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.assetsBusinessGener }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="客户名称" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.customerName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="业务来源" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.customerSubName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="委托人" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.bailor == null ? '-' : row.bailor }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="委托人联系电话" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.bailorContactTel == null ? '-' : row.bailorContactTel }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="当前节点" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.currentNodeName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="当前负责人" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.handlerName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="项目负责人" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.principalName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="客户经理" align="center" width="100">
                    <template slot-scope="{row}">
                        <span>{{ row.clientManagerName }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="下单时间" align="center" width="170">
                        <template slot-scope="{row}">
                            <span>{{ row.created }}</span>
                        </template>
                    </el-table-column>
                <el-table-column label="操作" align="center" width="120" fixed="right">
                    <template slot-scope="{row}">
                        <el-button type="text" @click="orderDetail(row)">任务处理</el-button>
                        <el-button type="text" @click="transfer(row.recordId)">转交</el-button>
                    </template>
                </el-table-column>
            </parentTable>
        </y-page-list-layout>
        <TransferDialog :transferDialogVisible="visible" @parentFalse="parentFalse()" @getPage="selectPage()"
            :recordId="recordId"></TransferDialog>
        <el-dialog :visible.sync="batchCommitDialog" width="70%">
            <y-page-list-layout :page-list="batchCommitPageData" :page-para="batchCommitListQuery"
                :get-page-list="selectBatchCommitPage">
                <template slot="left">
                    <el-input style="margin-left: 20px;width: 300px;float: left;" class="filter-item"
                        v-model="batchCommitListQuery.keyWord" placeholder="项目编号/报告号/项目名称/业务来源" clearable>
                    </el-input>
                    <el-button class="filter-item" style="margin-left: 10px;float: left;" type="primary"
                        @click="searchBatchCommitList()" round>搜索
                    </el-button>
                    <el-button class="filter-item" style="margin-left: 10px;float: left;" type="danger"
                        @click="batchCommitNode()" round>提交选中流程
                    </el-button>
                </template>
                <parentTable :clickRowToPick="true" ref="table" v-loading="batchCommitListLoading" :data="batchCommitPageData.records"
                    slot="table" style="width: 100%;height: 800px;" :selectionChange="handleSelectionChange">
                    <el-table-column align="center" type="selection" claimOrders width="50" border="true">
                    </el-table-column>
                    <el-table-column label="项目编号" align="center" width="150">
                        <template slot-scope="{row}">
                            <span @contextmenu.prevent="$doCopy(row.orderId)">{{ row.orderId }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="意见书号" align="center" width="250">
                        <template slot-scope="{row}">
                            <span @contextmenu.prevent="$doCopy(row.statementNo)">{{ row.statementNo == null ? '-' :
                                row.statementNo }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="报告号" align="center" width="250">
                        <template slot-scope="{row}">
                            <span @contextmenu.prevent="$doCopy(row.reportNo)">{{ row.reportNo == null ? '-' : row.reportNo
                            }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="项目名称" align="center" width="265">
                        <template slot-scope="{row}">
                            <span>{{ row.reportName || row.statementName || row.name }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="业务类型" align="center" width="150">
                        <template slot-scope="{row}">
                            <span>{{ row.assetsBusinessGener }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="当前节点" align="center" width="150">
                        <template slot-scope="{row}">
                            <span>{{ row.currentNodeName }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="当前节点负责人" align="center" width="150">
                        <template slot-scope="{row}">
                            <span>{{ row.handlerName }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="项目负责人" align="center" width="150">
                        <template slot-scope="{row}">
                            <span>{{ row.principalName }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column label="客户经理" align="center" width="150">
                        <template slot-scope="{row}">
                            <span>{{ row.clientManagerName }}</span>
                        </template>
                    </el-table-column>
                </parentTable>
            </y-page-list-layout>
        </el-dialog>
    </div>
</template>

<script>
import YPageListLayout from '@/components/YPageListLayout'
import Breadcrumb from '@/components/Breadcrumb'
import TransferDialog from '@/components/TaskTransferDialog'

export default {
    name: 'AssetsToDoList',
    components: {
        Breadcrumb,
        YPageListLayout,
        TransferDialog
    },
    data() {
        return {
            pageData: { records: [] },
            listLoading: false,
            batchCommitListLoading: false,
            listQuery: {
                page: 1,
                size: 10,
                current: 1,
                // 节点code
                nodeCode: null,
                // 客户经理id
                clientManagerId: null,
                // 项目负责人id
                principalId: null,
                // 业务类型
                assetsBusinessGener: null,
                // 关键字
                keyWord: null,
                // 处理人id
                handlerId: this.$store.getters.userInfo.id
            },
            // 用户下拉列表
            allUsers: [],
            // 节点信息下拉列表
            nodes: [],
            // 业务类型下拉列表
            assetsBusinessGeners: [
                {
                    value: '企业价值',
                    label: '企业价值'
                }, {
                    value: '单项资产',
                    label: '单项资产'
                }, {
                    value: '资产组合',
                    label: '资产组合'
                }, {
                    value: '无形资产',
                    label: '无形资产'
                }, {
                    value: '森林资源资产',
                    label: '森林资源资产'
                }, {
                    value: '珠宝首饰艺术品',
                    label: '珠宝首饰艺术品'
                }, {
                    value: '其他资产评估',
                    label: '其他资产评估'
                }
            ],
            visible: false,
            recordId: null,
            batchCommitDialog: false,
            workNodeCommits: [],
            batchCommitListQuery: {
                page: 1,
                size: 10,
                current: 1,
                keyWord: null,
                handlerId: this.$store.getters.userInfo.id,
                getNodeIsBookbindingStamp: false
            },
            batchCommitPageData: { records: [] }
        }
    },
    created() {
        // 获取用户下拉列表
        this.getAllUser();
        // 获取节点下拉列表
        this.getNodes();
        // 获取资产业务订单
        this.selectPage();
    },
    methods: {
        // 当前用户待办分页查询
        selectPage() {
            this.listLoading = true;
            this.$api.assets.selectPage(this.listQuery).then(res => {
                if (res.code === 200) {
                    this.pageData = res.data;
                }
                this.listLoading = false;
            })
        },
        // 条件查询
        searchList() {
            // 重置分页
            this.listQuery.page = 1
            this.listQuery.size = 10
            this.selectPage()
        },
        // 重置搜索条件
        resetParams() {
            this.$router.push({ query: {} });
            this.listQuery = {
                current: 1,
                size: 10,
            }
            this.selectPage();
        },
        // 当前用户待办批量提交列表分页查询
        selectBatchCommitPage() {
            this.batchCommitListLoading = true;
            this.$api.assets.selectPage(this.batchCommitListQuery).then(res => {
                if (res.code === 200) {
                    this.batchCommitPageData = res.data;
                }
                this.batchCommitListLoading = false;
            })
        },
        // 条件查询
        searchBatchCommitList() {
            // 重置分页
            this.batchCommitListQuery.page = 1
            this.batchCommitListQuery.size = 10
            this.selectBatchCommitPage()
        },
        // 获取所有用户下拉列表
        getAllUser() {
            this.$api.user.simpleAll().then(res => {
                if (res.code === 200) {
                    this.allUsers = res.data;
                }
            })
        },
        getNodes() {
            this.$api.workNode.enum().then(res => {
                if (res.code === 200) {
                    this.nodes = res.data
                }
            })
        },
        orderDetail(row) {
            if (row.currentNodeCode === 'REPORT_OUT_APPLY') {
                const newRow = {
                    reportNo: row.reportNo,
                    statementNo: row.statementNo,
                    businessType: 'ASSET_BUSINESS',
                    assetsId: row.assetsId,
                    recordId: row.recordId,
                    currentNodeId: row.currentNodeId
                }
                this.$router.push({
                    path: `/assets/myOrderList`,
                    query: {
                        repertoryOutWarehouseVisible: true,
                        row: JSON.stringify(newRow)
                    }
                })
                return;
            } else if (row.currentNodeCode === 'REPORT_OUT_DEPARTMENT_CHECK') {
                this.$router.push(`/out/warehouse/check?todoBusinessId=${row.assetsId}&sNo=${row.statementNo}&rNo=${row.reportNo}&tId=${row.recordId}&cId=${row.currentNodeId}&nCode=${row.currentNodeCode}&businessType=ASSET_BUSINESS`)
                return;
            } else if (row.currentNodeCode === 'STATEMENT_IN' || row.currentNodeCode === 'STATEMENT_OUT' ||
                row.currentNodeCode === 'REPORT_IN' || row.currentNodeCode === 'REPORT_OUT' ||
                row.currentNodeCode === 'LETTER_IN' || row.currentNodeCode === 'LETTER_OUT') {
                this.$router.push(`/major/production/in?openDialog=${true}`)
                return;
            }
            else {
                // 根据节点预设需要激活的tab页面
                let activeTabName = 'baseInfo';
                if (row.currentNodeCode === 'DEPARTMENT_ALLOCATION') {
                    activeTabName = 'members';
                } else if (row.currentNodeCode === 'SPOT_RECONNAISSANCE_DETERMINE_PRICE'
                    || row.currentNodeCode === 'ASSET_REPORT_TAKE_NO'
                    || row.currentNodeCode === 'GENERATE_STATEMENT'
                    || row.currentNodeCode === 'WRITE_REPORT'
                    || row.currentNodeCode === 'REVIEW_STATEMENT'
                    || row.currentNodeCode === 'CHECK_REPORT') {
                    activeTabName = 'target';
                } else if (row.currentNodeCode === 'REEXAMINE_STATEMENT'
                    || row.currentNodeCode === 'RECHECK_REPORT'
                    || row.currentNodeCode === 'FOURTH_CHECK_REPORT'
                    || row.currentNodeCode === 'STATEMENT_IN'
                    || row.currentNodeCode === 'STATEMENT_OUT'
                    || row.currentNodeCode === 'REPORT_IN'
                    || row.currentNodeCode === 'REPORT_OUT') {
                    activeTabName = 'production';
                }
                const newRow = {
                    assetsId: row.assetsId,
                    statementNo: row.statementNo,
                    reportNo: row.reportNo,
                }
                this.$router.push({
                    path: "/assets/orderDetail",
                    query: {
                        row: JSON.stringify(newRow),
                        back: '/assets/todoList',
                        couldEdit: true,
                        couldBack: true,
                        disabledStatus: false,
                        activeTabName: activeTabName
                    }
                })
            }
        },
        parentFalse() {
            this.visible = false;
        },
        transfer(recordId) {
            this.visible = true;
            this.recordId = recordId;
        },
        openBatchCommitDialog() {
            this.batchCommitListQuery.getNodeIsBookbindingStamp = true;
            this.selectBatchCommitPage();
            this.batchCommitDialog = true;
        },
        handleSelectionChange(val) {
            let pickedCommits = [];
            for (let i in val) {
                let commit = new Object();
                commit.instanceNodeId = val[i].currentNodeId;
                commit.state = "PASS";
                commit.comments = "批量提交装订盖章节点";
                commit.businessSubId = val[i].statementNo;
                commit.businessMinId = val[i].reportNo;
                pickedCommits.push(commit);
            }
            this.workNodeCommits = pickedCommits;
        },
        // 批量提交流程节点
        batchCommitNode() {
            if (this.workNodeCommits.length > 0) {
                this.$confirm('确认批量提交已选中流程?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    this.$api.workflow.batchCommit(this.workNodeCommits).then(res => {
                        if (res.code === 200 && res.data) {
                            this.$notify({
                                title: '成功',
                                message: '工作流节点批量提交成功。',
                                type: 'success',
                                duration: 2000
                            });
                            this.selectPage();
                            this.selectBatchCommitPage();
                        } else {
                            this.$notify({
                                title: '失败',
                                message: res.message,
                                type: 'error',
                                duration: 2000
                            });
                        }
                    })
                }).catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消批量提交'
                    });
                });
            } else {
                this.$notify.error({
                    title: '错误',
                    message: '请选择至少一条流程再提交!'
                });
            }
        }
    }
}
</script>

<style lang="scss" scoped>
    
</style>