feat:工单添加评价文字、图片
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-07-31 15:25:36 +08:00
parent 988ce1d7c4
commit d722c62f49
2 changed files with 52 additions and 13 deletions

View File

@@ -71,8 +71,40 @@ export interface WorkOrdersVO {
*/ */
isTimeOut: number; isTimeOut: number;
workOrdersRecordVoList: HandleRecords[];
typeName: string;
initiatorPeople: string;
handlerText: string;
/**
* 评价图片
*/
imgUrl: string;
/**
* 评价内容
*/
serviceEvaluaText: string;
/**
* 创建时间
*/
createTime: string;
/**
* 备注
*/
remark: string;
} }
export interface HandleRecords {
status: string;
createTime: string;
handlerName: string;
initiatorPeople: string;
}
export interface WorkOrdersForm extends BaseEntity { export interface WorkOrdersForm extends BaseEntity {
/** /**
* id * id

View File

@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import {computed, ref, shallowRef} from 'vue'; import { ref, shallowRef} from 'vue';
import {useVbenModal} from '@vben/common-ui'; import {useVbenModal} from '@vben/common-ui';
import {Descriptions, DescriptionsItem, Timeline, TimelineItem, Rate,Divider} from 'ant-design-vue'; import {Descriptions, DescriptionsItem, Timeline, TimelineItem, Rate,Divider} from 'ant-design-vue';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
@@ -7,7 +7,7 @@ import duration from 'dayjs/plugin/duration';
import relativeTime from 'dayjs/plugin/relativeTime'; import relativeTime from 'dayjs/plugin/relativeTime';
import {renderDict} from "#/utils/render"; import {renderDict} from "#/utils/render";
import {workOrdersInfo} from "#/api/property/businessManagement/workOrders"; import {workOrdersInfo} from "#/api/property/businessManagement/workOrders";
import type {WorkOrdersVO} from "#/api/property/businessManagement/workOrders/model"; import type {HandleRecords, WorkOrdersVO} from "#/api/property/businessManagement/workOrders/model";
dayjs.extend(duration); dayjs.extend(duration);
dayjs.extend(relativeTime); dayjs.extend(relativeTime);
@@ -20,7 +20,7 @@ const [BasicModal, modalApi] = useVbenModal({
}); });
const orderDetail = shallowRef<null | WorkOrdersVO>(null); const orderDetail = shallowRef<null | WorkOrdersVO>(null);
const handleRecords=ref<any[]>([]) const handleRecords=ref<HandleRecords[]>([])
async function handleOpenChange(open: boolean) { async function handleOpenChange(open: boolean) {
if (!open) { if (!open) {
return null; return null;
@@ -67,22 +67,29 @@ async function handleOpenChange(open: boolean) {
<!-- <DescriptionsItem label="计划完成时间">--> <!-- <DescriptionsItem label="计划完成时间">-->
<!-- {{ orderDetail.planCompleTime }}--> <!-- {{ orderDetail.planCompleTime }}-->
<!-- </DescriptionsItem>--> <!-- </DescriptionsItem>-->
<DescriptionsItem label="完成时间">
{{ orderDetail.compleTime }}
</DescriptionsItem>
<DescriptionsItem label="创建时间"> <DescriptionsItem label="创建时间">
{{ orderDetail.createTime }} {{ orderDetail.createTime }}
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="服务评价" :span="2"> <DescriptionsItem label="备注">
<Rate :value="orderDetail.serviceEvalua" disabled/> {{ orderDetail.remark }}
</DescriptionsItem>
<DescriptionsItem label="完成时间">
{{ orderDetail.compleTime }}
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="是否超时"> <DescriptionsItem label="是否超时">
<component <component
:is="orderDetail.isTimeOut ? renderDict(orderDetail.isTimeOut,'wy_sf') : ''" :is="orderDetail.isTimeOut ? renderDict(orderDetail.isTimeOut,'wy_sf') : ''"
/> />
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="备注"> <DescriptionsItem label="服务评价">
{{ orderDetail.remark }} <Rate :value="orderDetail.serviceEvalua" disabled/>
</DescriptionsItem>
<DescriptionsItem label="评价内容" v-if="orderDetail.serviceEvaluaText" :span="2">
{{ orderDetail.serviceEvaluaText }}
</DescriptionsItem>
<DescriptionsItem label="评价图片" v-if="orderDetail.imgUrl" :span="2">
{{ orderDetail.imgUrl }}
</DescriptionsItem> </DescriptionsItem>
</Descriptions> </Descriptions>
<Divider orientation="left" orientation-margin="0px"> <Divider orientation="left" orientation-margin="0px">