无人机管理后台前端(已迁走)
rain
2025-04-23 240e26461ff0fc0df7bf8709cbf64d792ce1da35
src/views/tickets/orderLog.vue
@@ -67,30 +67,27 @@
                        :table-loading="loading" @current-change="currentChange" @refresh-change="refreshChange"
                        @on-load="onLoad" @search-change="searchChange" @size-change="sizeChange">
                        <template #menu-left>
                            <el-button v-if="hasAddBtnPermission()" type="primary" icon="el-icon-plus" @click="handleAdd">新建工单</el-button>
                            <el-button v-if="hasAddBtnPermission()&&activeTab!='WAIT_AUDIT'" type="primary" icon="el-icon-plus" @click="handleAdd" >新建工单</el-button>
                            <el-button type="success" plain icon="el-icon-download" @click="exportData">导出</el-button>
                        </template>
                        <template #menu="{ row }">
                            <div v-if="row.status == 1 && userInfo.user_id != row.create_user">
                            <div v-if="row.status == 1">
                                <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleViewDetail(row)">审核</el-button>
                                <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
                            </div>
                            <div v-if="userInfo.user_id == row.create_user">
                            <div v-if="userInfo.user_id == row.create_user || hasRecallPaddingBtnPermission()">
                                <!--待审核状态-->
                                <div v-if="row.status == 1">
                                    <el-button type="text" icon="el-icon-warning-outline"
                                        @click="orderLogRecall(row.id)">撤回</el-button>
                                    <el-button type="text" icon="el-icon-view"
                                        @click="handleViewDetail(row)">详情</el-button>
                                </div>
                            </div>
                            <!--已驳回-->
                            <div v-if="row.status == 2">
                                <el-button type="text" icon="el-icon-warning-outline"
                                    @click="rejectDetail(row.id)">驳回原因</el-button>
                                <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
                            </div>
                            <!--草稿-->
                            <div v-if="row.status == 0 && userInfo.user_id == row.create_user">
@@ -101,7 +98,10 @@
                                <el-button type="text" icon="el-icon-delete"
                                    @click="deleteOrderLog(row.id)">删除</el-button>
                            </div>
                        <div v-if="row.status == 3 || row.status == 1 || row.status == 2">
                              <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button>
                            </div>
                        </template>
                        <template #status="{ row }">
@@ -118,7 +118,9 @@
        </el-tabs>
        <!-- 新建工单对话框 -->
        <el-dialog v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm">
        <el-dialog  v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm">
            <el-form :model="form" :rules="rules" ref="testform" label-width="100px">
                <el-row :gutter="20">
                    <el-col :span="12">
@@ -195,8 +197,8 @@
        </el-dialog>
        <!-- 工单详情对话框 -->
        <el-dialog v-model="detailVisible" title="工单详情" width="70%" :close-on-click-modal="false" @close="resetForm">
            <el-form :model="form" ref="form" label-width="100px">
        <el-dialog v-model="detailVisible" title="编辑工单" width="70%" :close-on-click-modal="false" @close="resetForm" >
            <el-form :model="form" ref="testform" label-width="100px">
                <div class="custom-steps-container">
                    <!-- 标题行 -->
                    <div class="steps-titles">
@@ -285,8 +287,8 @@
                        <el-button type="danger"
                            v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)"
                            @click="submitForm(1)">发布</el-button>
                        <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
                            @click="submitForm(0)">保存</el-button>
                        <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user"
                            @click="submitForm(0)">保存</el-button> -->
                        <el-button type="primary" v-if="form.status == 1 && userInfo.user_id != form.create_user"
                            @click="orderLogPass(form.id)">通过</el-button>
@@ -333,7 +335,7 @@
    deleteOrderLog
} from '@/api/tickets/orderLog'
import { getTicketInfo } from '@/api/tickets/ticket'
import { getDictionary } from '@/api/system/dictbiz'
import { getDictionaryByCode } from '@/api/system/dictbiz'
import { getWaylineFileListByArea } from '@/api/resource/wayline'
import { export_json_to_excel } from '@/utils/exportExcel'
import { getFlyingNestBy } from '@/api/device/device'
@@ -411,7 +413,7 @@
                    { label: '创建人', prop: 'creator_name', width: 50, ellipsis: true, overHidden: true },
                    { label: '关联机巢', prop: 'device_names', width: 80, ellipsis: true, overHidden: true },
                    {
                        label: '工单周期凭次',
                        label: '工单周期频次',
                        prop: '',
                        width: 108,
                        formatter: row => this.formatCycleTime(row),
@@ -450,10 +452,10 @@
        }
    },
    async created() {
        var response = await getDictionary({ code: 'SF' })
        var word_order_typeResponse = await getDictionary({ code: 'WORK_ORDER_TYPE' })
        this.ai_types = response.data.data
        this.types = word_order_typeResponse.data.data
        var response = await getDictionaryByCode('SF')
        var word_order_typeResponse = await getDictionaryByCode('WORK_ORDER_TYPE' )
        this.ai_types = response.data.data['SF']
        this.types = word_order_typeResponse.data.data['WORK_ORDER_TYPE'];
        //获取航线
        this.asyncgetWaylineFileListByArea()
        const response2 = await getTicketInfo()
@@ -523,7 +525,7 @@
        },
        formatCycleTime(row) {
            return row.begin_time + '-' + row.end_time + '<br/>'
                + row.rep_rule_type + row.rep_rule_val
                 + row.rep_rule_val
        },
        async fetchTableData() {
@@ -598,7 +600,7 @@
            this.page.pageSize = pageSize
        },
        async submitForm(status) {
            console.log(this.$refs.testform, '111111')
            this.$refs.testform.validate(async valid => {
                if (valid) {
@@ -784,6 +786,11 @@
            console.log('权限检查:', this.permission);
            return this.permission && this.permission.order_log_review === true;
        },
            hasRecallPaddingBtnPermission() {
            // undefined 或 false 都返回 false,只有 true 返回 true
            console.log('权限检查:', this.permission);
            return this.permission && this.permission.order_log_recall === true;
        },
        //自己点发布
        userPublishPush(id) {
            this.$confirm('确定发布吗?', '提示', {