chenhaozhe
2026-03-02 96e240ad712e6f439cc5df23829dd0e1a8b01979
pages/MJGL/Sc_MouldRepairCheckTaskReport/Sc_MouldRepairCheckTaskReport.vue
@@ -1,22 +1,226 @@
<template>
    <view>
        <view class="tabs" id="tabs">
            <view :class="tabs == 0 ? 'on':''" @tap="switchTab(0)">待维修</view>
            <view :class="tabs == 1 ? 'on':''" @tap="switchTab(1)">已维修</view>
            <view :class="tabs == 2 ? 'on':''" @tap="switchTab(2)">已验收</view>
        </view>
        <!-- 设备点检任务列表 -->
        <view class="list" v-for="(item,index) in reportBillsDisplay" :key="index">
            <uni-card :title="item.故障登记单号" style="margin: 10px;" @tap="showDetail = showDetail==index?-1:index">
                <view class="card-detail">
                    <view class="detail" v-for="(field, index) in CommonUtils.emptyValueFilter(item, HFieldList)"
                        :key="index">
                        <template v-if="field.ColmType == 'DateTime'">
                            <text>{{field.ColmCols}}:</text>{{dayjs(item[field.ColmCols]).format('YYYY-MM-DD HH:mm:ss')}}
                        </template>
                        <template v-else>
                            <text>{{field.ColmCols}}:</text>{{item[field.ColmCols]}}
                        </template>
                    </view>
                </view>
                <view class="more" v-if="showDetail == index && operations != index">
                    <view class="part" style="border-right: 1px solid #eee;">
                        <uni-icons type="top" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>收起
                    </view>
                    <view class="part" @tap.stop="operations = operations==index?-1:index">
                        <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>操作
                    </view>
                </view>
                <view class="more" v-if="showDetail != index && operations != index">
                    <view class="part" style="border-right: 1px solid #eee;">
                        <uni-icons type="bottom" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>更多信息
                    </view>
                    <view class="part" @tap.stop="operations = operations==index?-1:index">
                        <uni-icons type="more-filled" style="color: #888;margin-right: 10rpx;" size="14"></uni-icons>操作
                    </view>
                </view>
                <view class="op" v-if="operations == index">
                    <!-- <button class="op3" size="mini" plain @tap.stop="edit(item)">编辑</button> -->
                    <!-- <button class="op4" size="mini" plain @tap.stop="del(item)">删除</button> -->
                    <button class="op3" size="mini" v-if="tabs == 0" plain @tap.stop="pushBill(0, item)">下推派工单</button>
                    <button class="op3" size="mini" v-if="tabs == 1" plain @tap.stop="pushBill(1, item)">下推维修单</button>
                    <button class="op3" size="mini" v-if="tabs == 2" plain @tap.stop="pushBill(2, item)">下推验收单</button>
                    <button class="op5" size="mini" plain @tap.stop="operations = -1">取消操作</button>
                </view>
            </uni-card>
        </view>
        <view class="over" v-if="reportBillsDisplay.length == 0">暂无数据</view>
    </view>
</template>
<script>
    import {
        getUserInfo
    } from '../../../utils/auth';
    import {
        CommonUtils
    } from '../../../utils/common';
    import dayjs from 'dayjs';
    export default {
        // 器具故障登记跟踪 模块
        name: 'Sc_MouldRepairCheckTaskReport',
        data() {
            return {
            }
                dayjs,
                CommonUtils,
                tabs: 0,
                showDetail: -1,
                operations: -1,
                reportBillsDisplay: [],
                reportBillsAwaitRepair: [], // 待维修
                reportBillsRepaired: [], // 已维修
                reportBillsChecked: [], // 已验收
                HFieldList: [], // 字段列表
            };
        },
        methods: {
            pushBill(tab, item) {
                console.log('item: ', item);
                let Query = `&HBillNo=${item['故障登记单号']}&HInterID=${item['HInterID']}&HSourceBillType=3907`
                if (tab == 0) {
                    uni.navigateTo({
                        url: '/pages/MJGL/Sb_EquipRepairSendWork/Sb_EquipRepairSendWorkBill?operationType=4' +
                            Query
                    })
                } else if (tab == 1) {
                    uni.navigateTo({
                        url: '/pages/MJGL/Sb_EqpMaintenance/Sb_EqpMaintenanceBill?operationType=5' + Query +
                            `&HSendWorkID=${item.HSendWorkID}`
                    })
                } else if (tab == 2) {
                    uni.navigateTo({
                        url: '/pages/MJGL/Sb_EquipRepairCheckBill/Sb_EquipRepairCheckBill?operationType=4' +
                            Query + `&HSendWorkID=${item.HSendWorkID}`
                    })
                }
            },
            switchTab(tabIndex) {
                this.tabs = tabIndex
                switch (tabIndex) {
                    case 0:
                        this.reportBillsDisplay = this.reportBillsAwaitRepair;
                        break;
                    case 1:
                        this.reportBillsDisplay = this.reportBillsRepaired;
                        break;
                    case 2:
                        this.reportBillsDisplay = this.reportBillsChecked;
                        break;
                }
            },
            async getRepairList() {
                try {
                    let res = await CommonUtils.doRequest2Async({
                        url: '/Sc_MouldRepairCheckTaskReport/RepairCheckList',
                        data: {
                            user: getUserInfo()["HEmpName"]
                        }
                    })
                    let {
                        count,
                        data,
                        Message,
                        list
                    } = res.data
                    if (count == 1) {
                        console.log('data: ', data);
                        this.reportBillsAwaitRepair = data.h_p_Sc_MouldRepairCheckTaskReport
                        this.reportBillsRepaired = data.h_p_Sc_MouldRepairCheckTaskReport1
                        this.reportBillsChecked = data.h_p_Sc_MouldRepairCheckTaskReport2
                        let fieldList = CommonUtils.fieldListFilterRole({
                            ExcludeKeys: ['故障登记单号'],
                            FieldList: list
                        })
                        if (fieldList.status == false) {
                            CommonUtils.showTips({
                                title: '温馨提示',
                                message: `获取表单结构失败: ${fieldList.Message}`
                            })
                        }
                        this.HFieldList = fieldList.data
                        this.switchTab(0)
                    } else {
                        CommonUtils.showTips({
                            title: '温馨提示',
                            message: `获取故障登记单异常: ${Message}`
                        })
                    }
                } catch (err) {
                    CommonUtils.showTips({
                        title: '温馨提示',
                        message: `获取故障登记单异常: ${err}`
                    })
                }
            }
        },
        onShow() {
            this.getRepairList()
        }
    }
</script>
<style>
<style lang="scss">
    @import "@/pages/MJGL/style/MJBillStyle.scss";
</style>
    .more {
        color: #888;
        font-size: 26rpx;
        display: flex;
        border-top: 1px solid #eee;
        padding-top: 20rpx;
        .part {
            width: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
        }
    }
    .op {
        display: flex;
        justify-content: space-around;
        margin-top: 20rpx;
        button {
            padding: 0;
            width: 150rpx;
            font-size: 25rpx;
        }
        .op1 {
            border: 1px solid #41a863;
            color: #41a863;
        }
        .op2 {
            border: 1px solid #d98d00;
            color: #d98d00;
        }
        .op3 {
            border: 1px solid #3a78ff;
            color: #3a78ff;
        }
        .op4 {
            border: 1px solid #da0000;
            color: #da0000;
        }
        .op5 {
            border: 1px solid #888;
            color: #888;
        }
    }
</style>