From ca987bfb2dad4b87b931a4bf3e93c030bde63e1d Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Mon, 13 Oct 2025 11:44:39 +0800
Subject: [PATCH] feat:详情
---
src/subPackages/workDetail/index.vue | 233 +++++++++++++++++++++++++++++++++------------------------
1 files changed, 135 insertions(+), 98 deletions(-)
diff --git a/src/subPackages/workDetail/index.vue b/src/subPackages/workDetail/index.vue
index 32a159e..dc3593f 100644
--- a/src/subPackages/workDetail/index.vue
+++ b/src/subPackages/workDetail/index.vue
@@ -15,34 +15,32 @@
</div>
<!-- 步骤条 -->
<div class="stepContainer">
- <up-steps :current="currentStep" direction="column">
- <up-steps-item
- v-for="(step, index) in stepTitles"
- :key="index"
- >
- <template #title>
- <div class="horizontal-step">
- <span class="step-title">{{ step.title }}</span>
- <div class="step-desc" v-if="stepResponse[index]">
- <span>{{ stepResponse[index].name || '' }}</span>
- <span>{{ stepResponse[index].create_time || '' }}</span>
- </div>
- </div>
- </template>
- </up-steps-item>
- </up-steps>
+ <up-steps :current="currentStep" direction="column">
+ <up-steps-item v-for="(step, index) in stepTitles" :key="index">
+ <template #title>
+ <div class="horizontal-step">
+ <span class="step-title">{{ step.title }}</span>
+ <div class="step-desc" v-if="stepResponse[index]">
+ <span>{{ stepResponse[index].name || '' }}</span>
+ <span>{{ stepResponse[index].create_time || '' }}</span>
+ </div>
+ </div>
+ </template>
+ </up-steps-item>
+ </up-steps>
</div>
<!-- 工单内容 -->
<div class="workOrderContent">
<div class="workOrderTitle">工单内容</div>
<div class="workOrderContainer">
-
+
<div>工单名称:{{workDetailData.event_name}}</div>
<div>工单类型:{{workDetailData.type}}</div>
<div>关联任务:{{workDetailData.job_name}}</div>
<div>工单创建人:{{workDetailData.event_num?.slice(0, 2) === 'AI' ? 'AI 小飞':workDetailData.creator}}</div>
<div>事件地址:{{workDetailData.address}}</div>
- <div>关联算法:{{workDetailData.ai_types}}</div>
+
+ <div >关联算法:{{workDetailData.ai_types}}</div>
<div>发起部门:{{workDetailData.dept_name}}</div>
<div>发起任务时间:{{workDetailData.create_time}}</div>
<div>工单内容:{{workDetailData.remark}}</div>
@@ -54,11 +52,11 @@
上一页
</div>
<div class="btngroups" v-if="workDetailData.status===2">
- <up-button type="primary" text="通过" @click="approveTicket"></up-button>
+ <up-button type="primary" text="通过" @click="approveTicket"></up-button>
<up-button type="error" text="不通过" @click="rejectTicket"></up-button>
</div>
<div class="btngroups" v-else-if="workDetailData.status===0">
- <up-button type="primary" text="受理" @click="approveAndDispatch"></up-button>
+ <up-button type="primary" text="受理" @click="approveAndDispatch"></up-button>
<up-button type="error" text="不受理" @click="rejectTicket"></up-button>
</div>
<div class="btngroups" v-else-if="workDetailData.status===3">
@@ -66,7 +64,7 @@
<up-button type="error" text="取消"></up-button>
</div>
<div class="btngroups" v-else="workDetailData.status===4">
-
+
<up-button type="error" text="取消"></up-button>
</div>
<div class="leftBtn" @click="rightClick">
@@ -78,17 +76,19 @@
</template>
<script setup>
-
- import {getStepInfo,getList,flowEvent} from '/src/api/work/index.js'
-
+ import {
+ getStepInfo,
+ getList,
+ flowEvent
+ } from '/src/api/work/index.js'
+
const eventNum = ref('');
const currentStatus = ref('')
const stepResponse = ref([]);
const currentStep = ref(0);
// 工单内容
const workDetailData = ref({})
- const stepTitles =ref([
- {
+ const stepTitles = ref([{
title: '待审核',
status: '2'
},
@@ -96,49 +96,62 @@
title: '待处理',
status: '0'
},
-
+
{
title: '处理中',
status: '3'
- },{
+ }, {
title: '已完成',
status: '4'
}
])
onLoad(async (options) => {
- eventNum.value = options.eventNum;
- await getDataList(eventNum.value);
- await getStepInfoData(eventNum.value);
+ eventNum.value = options.eventNum;
+ await getDataList(eventNum.value);
+ await getStepInfoData(eventNum.value);
});
const getDataList = async (val) => {
- const params = {
- current: 1,
- size: 9999,
- source: 1,
- event_name: val
- }
- const res = await getList(params);
- const response = res.data.data.records;
- workDetailData.value = response[0];
- currentStatus.value = workDetailData.value.status;
- console.log('详情',response);
+ const params = {
+ current: 1,
+ size: 9999,
+ source: 1,
+ event_name: val
+ }
+ const res = await getList(params);
+ const response = res.data.data.records;
+ workDetailData.value = response[0];
+ currentStatus.value = workDetailData.value.status;
+ // console.log('详情',response);
}
// 步骤条
const calculateCurrentStep = (status) => {
- const statusToStep = {
- '2': 0, // 待审核 -> 第0步
- '0': 1, // 待处理 -> 第1步
- '3': 2, // 处理中 -> 第2步
- '4': 3 // 已完成 -> 第3步
- }
- return statusToStep[String(status)] || 0
+ const statusToStep = {
+ '2': 0, // 待审核 -> 第0步
+ '0': 1, // 待处理 -> 第1步
+ '3': 2, // 处理中 -> 第2步
+ '4': 3 // 已完成 -> 第3步
+ }
+ return statusToStep[String(status)] || 0
}
+
const getStepInfoData = async (val) => {
- const res = await getStepInfo(val);
- stepResponse.value = res.data.data;
- console.log('stepResponse',stepResponse.value)
- currentStep.value = calculateCurrentStep(currentStatus.value);
- }
+ const res = await getStepInfo(val);
+ stepResponse.value = res.data.data;
+ currentStep.value = calculateCurrentStep(currentStatus.value);
+
+ // 动态匹配步骤描述
+ const matchedSteps = {};
+ stepResponse.value.forEach(step => {
+ // 找到 stepTitles 中对应的步骤索引
+ const stepIndex = stepTitles.value.findIndex(item => item.status === String(step.status));
+ if (stepIndex !== -1) {
+ matchedSteps[stepIndex] = step;
+ }
+ });
+
+ // 确保 stepResponse 按 stepTitles 顺序填充
+ stepResponse.value = stepTitles.value.map((_, index) => matchedSteps[index] || null);
+ };
// 图片预览
const previewImage = (url) => {
uni.previewImage({
@@ -147,11 +160,22 @@
});
};
// 通过
- const approveTicket=()=>{}
+ const approveTicket = async () => {
+ const data = {
+ id: workDetailData.value.id,
+ status: workDetailData.value.status,
+ isPass: 0, // 0 表示通过
+ eventNum: workDetailData.value.event_num,
+ };
+ console.log('data', data)
+ const file = workDetailData.value.file || null;
+ const response = await flowEvent(data, file);
+ console.log('通过', response)
+ }
// // 不通过
- const rejectTicket=()=>{}
+ const rejectTicket = () => {}
// // 受理
- const approveAndDispatch=()=>{}
+ const approveAndDispatch = () => {}
// // 不受理
// const rejectTicket=()=>{}
// // 完成工单
@@ -180,7 +204,7 @@
position: absolute;
left: 0;
bottom: 0;
- width: 100%;
+ width: 100%;
}
.titleText {
@@ -198,69 +222,82 @@
background-color: antiquewhite;
border-radius: 5px;
padding: 10px;
- .horizontal-step {
- display: flex;
- align-items: center;
- gap: 12px;
-
- .step-title {
- min-width: 60px;
- }
-
- .step-desc {
- display: flex;
- justify-content: space-between;
- gap: 8px;
- // color: #666;
- font-size: 14px;
- }
- }
+
+ .horizontal-step {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+
+ .step-title {
+ min-width: 60px;
+ }
+
+ .step-desc {
+ display: flex;
+ justify-content: space-between;
+ gap: 8px;
+ // color: #666;
+ font-size: 14px;
+ }
+ }
}
-
- .actionButton{
+
+ .actionButton {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
+
.btngroups {
display: flex;
justify-content: space-between;
+
.u-button {
- padding: 9px 20px;
- height: 32px;
- &:last-child {
- margin-left: 12px;
- margin-right: 12px;
- }
+ padding: 9px 20px;
+ height: 32px;
+
+ &:last-child {
+ margin-left: 12px;
+ margin-right: 12px;
+ }
}
}
+
.leftBtn {
- width: 70px;
- height: 32px;
- background-color: #999;
- border-radius: 5px;
- text-align: center;
- line-height: 32px;
- color: #fff;
- cursor: pointer;
- opacity: 0.8;
+ width: 70px;
+ height: 32px;
+ background-color: #999;
+ border-radius: 5px;
+ text-align: center;
+ line-height: 32px;
+ color: #fff;
+ cursor: pointer;
+ opacity: 0.8;
}
+
.disableds {
- background: #999 !important;
- cursor: not-allowed !important;
- pointer-events: none;
- opacity: 0.3 !important;
+ background: #999 !important;
+ cursor: not-allowed !important;
+ pointer-events: none;
+ opacity: 0.3 !important;
}
}
+
.workOrderContent {
margin-top: 15px;
+
.workOrderContainer {
div {
margin-bottom: 10px;
}
+
+ .titketName {
+ display: flex;
+ align-items: center;
+ }
}
}
-
+
}
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3