From ca87d8ff8645744dd900cdabff6c96c5c272ebe4 Mon Sep 17 00:00:00 2001
From: rain <1679827795@qq.com>
Date: Mon, 28 Apr 2025 15:02:10 +0800
Subject: [PATCH] Merge branch 'test' of http://139.196.74.78:10010/r/drone/drone-web-manage into test
---
src/views/tickets/orderLog.vue | 189 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 178 insertions(+), 11 deletions(-)
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index 09e5af3..ef0c0bf 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -73,7 +73,7 @@
<template #menu="{ row }">
<div v-if="row.status == 1">
- <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleViewDetail(row)">审核</el-button>
+ <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleCheckDetail(row)">审核</el-button>
</div>
@@ -117,7 +117,7 @@
</el-tab-pane>
</el-tabs>
- <!-- 新建工单对话框 -->
+ <!-- 新建工单 -->
<el-dialog v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm">
@@ -342,6 +342,158 @@
</el-row>
</el-form>
</el-dialog>
+
+
+
+ <!-- 工单详情 -->
+ <el-dialog v-model="detailVisibleCopy" title="工单详情" 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">
+ <div v-for="(record, index) in form.record_list" :class="{ active: record.user_id >= 0 }"
+ :key="index" class="step-title">
+ {{ record.status_str }}
+ </div>
+ </div>
+
+ <!-- Element Steps 组件 -->
+ <el-steps :active="form.active" align-center class="custom-steps">
+ <el-step v-for="(record, index) in form.record_list" :key="index">
+ <template #description>
+ <span class="step-description" style="position: relative; display: inline-block;">
+ {{ record.user_name }}
+ </span>
+ <span style="
+ position: absolute;
+ left: 80%;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 100px;
+ margin-left: 4px;
+ color: #666;
+ font-size: 12px;
+ ">
+ {{ record.interval_time_str }}
+ </span>
+ <div class="step-description">
+ {{ record.create_time_str }}
+ </div>
+ </template>
+ </el-step>
+ </el-steps>
+ </div>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="工单名称" prop="name">
+ <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="true"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="关联航线" prop="file_id">
+ <el-select v-model="form.file_id" placeholder="请选择航线" :disabled="true">
+ <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name"
+ :value="item.wayline_id" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="关联机巢" prop="device_sns">
+ <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="true">
+ <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>
+ <el-col :span="12">
+ <el-form-item label="关联算法" prop="ai_types">
+ <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple :disabled="true">
+ <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue"
+ :value="item.dictKey" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12" prop="statusStr">
+
+ <el-form-item label="当前状态">
+ {{statusStr}}
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="6">
+ <el-form-item label="周期频次" prop="date_range">
+ <el-date-picker v-model="form.date_range" type="daterange" range-separator="至"
+ start-placeholder="开始日期" end-placeholder="结束日期" class="date-picker" :disabled="true"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="3">
+ <el-select v-model="form.rep_fre_type" placeholder="请选择频次" :disabled="true">
+ <el-option v-for="item in cycles" :key="item" :label="item" :value="item" />
+ </el-select>
+ </el-col>
+
+ <el-col :span="3">
+ <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" :disabled="true"
+ value-format="HH:mm" :picker-options="{
+ selectableRange: '00:00 - 23:59',
+ }" />
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="工单内容" prop="content">
+ <el-input
+ type="textarea"
+ v-model="form.content"
+ rows="2"
+ placeholder="请输入工单内容"
+ maxlength="255"
+ show-word-limit
+ :readonly="true"
+ :disabled="true"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="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 == 1 && this.permission.orderLogpass"
+ @click="orderLogPass(form.id)">通过</el-button>
+ <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()"
+ @click="orderLogReject(form.id)">驳回</el-button>
+
+ </el-col>
+ </el-row>
+
+
+
+ <el-row :gutter="20" style="height: 400px">
+ <el-col :span="24">
+ <map-container v-if='detailVisible' ref="MapContainer"></map-container>
+ </el-col>
+ </el-row>
+ </el-form>
+</el-dialog>
+
+
</basic-container>
</template>
@@ -398,6 +550,7 @@
ai_types: [],
wayLineList: [],
detailTitle:"编辑工单",
+ detailVisibleCopy: false,
statuses: [
{ label: '草稿', value: '0' },
@@ -501,7 +654,6 @@
computed: {
...mapGetters(['userInfo', 'permission']),
filteredTabs() {
- // rejection_and_draft 权限控制“已驳回”和“草稿”tab
const canShowRejectAndDraft = this.permission?.rejection_and_draft === true;
return this.tabs.map(tab => {
if (tab.name === 'DRAFT') {
@@ -513,6 +665,7 @@
return { ...tab, isShow: true };
}).filter(tab => tab.isShow);
},
+
},
methods: {
@@ -554,8 +707,7 @@
}
},
formatCycleTime(row) {
- return row.begin_time + '-' + row.end_time + '<br/>'
- + row.rep_rule_val
+ return row.cycle_time_value;
},
async fetchTableData() {
@@ -695,7 +847,7 @@
const statusMap = {
1: 'warning',
2: 'info',
- 3: 'primary',
+ 3: 'primary',
4: 'success',
5: 'danger',
}
@@ -768,6 +920,7 @@
address: '',
content: '',
photos: [],
+ status : null,
}
if (this.$refs.testform) {
this.$refs.testform.resetFields()
@@ -781,7 +934,6 @@
return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}`
},
async handleViewDetail(row) {
- console.log("工单名称1111:");
const response = await orderLogDetails(row.id);
const data = response.data.data;
@@ -796,6 +948,21 @@
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 handleCheckDetail(row) {
+ const response = await orderLogDetails(row.id);
+ const data = response.data.data;
+
+ this.form = {
+ ...data,
+ };
+
+ this.detailVisibleCopy = true;
+ this.statusStr = this.mapStatus(data.status);
+
+ // 更新机巢列表
+ this.device_sns = data.device_list;
+
},
//导出
async exportData() {
@@ -946,7 +1113,7 @@
let response = await orderLogPass(id)
let data = response.data.data
this.$message.success('审核通过')
- this.detailVisible = false
+ this.detailVisibleCopy = false
},
/**
* 驳回
@@ -958,8 +1125,8 @@
}).then(async ({ value }) => {
let response = await orderLogReject(id, value)
let data = response.data.data
- this.$message.success('驳回成果')
- this.detailVisible = false
+ this.$message.success('驳回成功')
+ this.detailVisibleCopy = false
})
},
},
@@ -1105,5 +1272,5 @@
color: #333;
}
</style>
-`
+```
--
Gitblit v1.9.3