无人机管理后台前端(已迁走)
rjg
2025-04-23 2b58bb0d1f2bbf8fba41f7a56a27ccfc4ebae844
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">
@@ -138,9 +140,14 @@
                <el-row :gutter="20">
                    <el-col :span="12">
                        <el-form-item label="关联机巢" prop="device_sns">
                            <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple>
                                <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname"
                                    :value="item.device_sn" />
                                <el-option
                                    v-for="item in device_sns"
                                    :key="item.device_sn"
                                    :label="item.nickname"
                                    :value="item.device_sn"
                                />
                            </el-select>
                        </el-form-item>
                    </el-col>
@@ -195,8 +202,9 @@
        </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="detailTitle" width="70%" :close-on-click-modal="false" @close="resetForm" >
              <div class="event-title-center">{{ form.name}}</div>
            <el-form :model="form" ref="testform" label-width="100px">
                <div class="custom-steps-container">
                    <!-- 标题行 -->
                    <div class="steps-titles">
@@ -253,8 +261,12 @@
                    <el-col :span="12">
                        <el-form-item label="关联机巢" prop="device_sns">
                            <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple>
                                <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname"
                                    :value="item.device_sn" />
                                <el-option
                                    v-for="item in device_sns"
                                    :key="item.device_sn"
                                    :label="item.nickname"
                                    :value="item.device_sn"
                                />
                            </el-select>
                        </el-form-item>
                    </el-col>
@@ -285,12 +297,12 @@
                        <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"
                        <el-button type="primary" v-if="form.status == 1 && this.permission.orderLogpass"
                            @click="orderLogPass(form.id)">通过</el-button>
                        <el-button type="danger" v-if="form.status == 1 && userInfo.user_id != form.create_user"
                        <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()"
                            @click="orderLogReject(form.id)">驳回</el-button>
                    </el-col>
                    <el-col :span="3">
@@ -333,7 +345,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'
@@ -371,6 +383,7 @@
            device_sns: [],
            ai_types: [],
            wayLineList: [],
            detailTitle:"编辑工单",
            statuses: [
                { label: '草稿', value: '0' },
@@ -411,7 +424,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 +463,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 +536,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 +611,7 @@
            this.page.pageSize = pageSize
        },
        async submitForm(status) {
            console.log(this.$refs.testform, '111111')
            this.$refs.testform.validate(async valid => {
                if (valid) {
@@ -749,15 +762,21 @@
            return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}`
        },
        async handleViewDetail(row) {
            const response = await orderLogDetails(row.id)
            this.form = {
                ...response.data.data,
            }
            this.detailVisible = true
             console.log("工单名称1111:");
            const response = await orderLogDetails(row.id);
            const data = response.data.data;
            //航线列表
            this.asyncgetWaylineFileListByArea()
            this.device_sns = response.data.data.deviceList
            this.form = {
                ...data,
            };
            this.detailVisible = true;
            // 更新机巢列表
            this.device_sns = data.device_list;
          (this.permission && (this.permission.order_log_review  || this.permission.order_log_recall))&& (data.status==1||data.status==3||data.status==2) ? this.detailTitle="工单详情":this.detailTitle="编辑工单";
          console.log("工单名称:"+this.detailTitle);
        },
        //导出
        async exportData() {
@@ -783,6 +802,17 @@
            // undefined 或 false 都返回 false,只有 true 返回 true
            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;
        },
        //驳回按钮权限
          hasRejectionBtnPermission() {
            // undefined 或 false 都返回 false,只有 true 返回 true
            console.log('权限检查:', this.permission);
            return this.permission && this.permission.rejection_btn === true;
        },
        //自己点发布
        userPublishPush(id) {
@@ -1048,4 +1078,12 @@
    color: #666;
    line-height: 1.5;
}
</style>
.event-title-center {
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  margin-bottom: 12px;
  color: #333;
}
</style>