2025-08-29 09:51:02 +08:00
|
|
|
|
<template>
|
2025-10-29 13:53:05 +08:00
|
|
|
|
<view class="work_page">
|
2025-08-29 09:51:02 +08:00
|
|
|
|
<view class="show_card">
|
|
|
|
|
|
<view class="card_header_type_status">
|
2025-12-15 18:19:04 +08:00
|
|
|
|
<view class="work_item_header_left">
|
|
|
|
|
|
<view class="btn_type">
|
|
|
|
|
|
<hs-enum-tag
|
|
|
|
|
|
:value="useModel?.dataShow?.value?.type"
|
|
|
|
|
|
:Enums="HouseWorkOrdersTypeEnum"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<view class="btn_type" v-if="useModel?.dataShow?.value?.location">
|
|
|
|
|
|
<hs-enum-tag
|
2025-12-15 18:19:04 +08:00
|
|
|
|
:value="useModel?.dataShow?.value?.location"
|
|
|
|
|
|
:Enums="HouseWorkOrdersLocationEnum"
|
2026-01-30 09:54:26 +08:00
|
|
|
|
/>
|
2025-12-15 18:19:04 +08:00
|
|
|
|
</view>
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
2025-10-29 13:53:05 +08:00
|
|
|
|
<view :class="`btn_status btn_status_${useModel?.dataShow?.value?.status}`">
|
2025-08-29 09:51:02 +08:00
|
|
|
|
<hs-enum-tag
|
|
|
|
|
|
:value="useModel?.dataShow?.value?.status"
|
|
|
|
|
|
:Enums="HouseWorkOrdersStatusEnum"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="card_header_huse_info">
|
|
|
|
|
|
<text> {{ useModel?.dataShow?.value?.asset_house?.full_name }} </text>
|
|
|
|
|
|
<text> {{ useModel?.dataShow?.value?.title }} </text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="card_header_content_info">
|
2025-12-15 18:19:04 +08:00
|
|
|
|
{{ useModel?.dataShow?.value?.content }}
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
<view class="card_header_imgs">
|
|
|
|
|
|
<view
|
|
|
|
|
|
v-for="(k, idx) in useModel?.dataShow?.value?.attachments"
|
|
|
|
|
|
:key="`img_${idx}`"
|
|
|
|
|
|
class="item"
|
|
|
|
|
|
>
|
|
|
|
|
|
<image :src="k?.url" mode="aspectFill" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
|
|
|
|
|
|
<view class="show_card_footer">
|
|
|
|
|
|
<view class="work_item_cell">
|
|
|
|
|
|
工单编号: <text>{{ useModel?.dataShow?.value?.code }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="work_item_cell">
|
|
|
|
|
|
期望上门处理时间:
|
|
|
|
|
|
<text>{{
|
|
|
|
|
|
getTimeRangeDisplay(
|
|
|
|
|
|
useModel?.dataShow?.value?.expect_start_time,
|
|
|
|
|
|
useModel?.dataShow?.value?.expect_end_time
|
|
|
|
|
|
)
|
|
|
|
|
|
}}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="work_item_cell">
|
|
|
|
|
|
提报时间:<text>{{ useModel?.dataShow?.value?.created_at }}</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="work_item_cell" v-if="useModel?.dataShow?.value?.evaluation_score">
|
|
|
|
|
|
客户评价:<hs-up-rate :valueModel="useModel?.dataShow?.value?.evaluation_score" />
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view class="work_item_cell" v-if="parseFloat(useModel?.dataShow?.value?.amount) > 0">
|
|
|
|
|
|
支付金额:<text class="text_red">¥{{ useModel?.dataShow?.value?.amount }}元</text>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<MyProcessLogs />
|
|
|
|
|
|
|
|
|
|
|
|
<view class="work_order_footer" v-if="useModel?.dataShow?.value?.status !== 'Closed'">
|
|
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="useModel?.dataShow?.value?.status === 'Pending'"
|
|
|
|
|
|
@click="method?.handleClosed"
|
|
|
|
|
|
>
|
|
|
|
|
|
关闭工单
|
2025-10-29 13:53:05 +08:00
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<view
|
|
|
|
|
|
class="btn_close"
|
|
|
|
|
|
v-if="useModel?.dataShow?.value?.status === 'Processing'"
|
|
|
|
|
|
@click="method?.handleClosed"
|
|
|
|
|
|
>
|
|
|
|
|
|
<view class="icon_close"><up-icon name="file-text" size="28"></up-icon></view>
|
|
|
|
|
|
<view> 关闭工单 </view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view
|
|
|
|
|
|
class="btn_close"
|
|
|
|
|
|
v-if="
|
|
|
|
|
|
useModel?.dataShow?.value?.status === 'Completed' &&
|
|
|
|
|
|
!useModel?.dataShow?.value?.evaluation_score
|
|
|
|
|
|
"
|
|
|
|
|
|
@click="method?.handleRework"
|
|
|
|
|
|
>
|
|
|
|
|
|
<view class="icon_close">
|
|
|
|
|
|
<uni-icons type="undo-filled" color="#333" size="26"></uni-icons>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view> 工单返工 </view>
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<view
|
|
|
|
|
|
class="btn handle_rework_btn"
|
|
|
|
|
|
v-if="
|
|
|
|
|
|
useModel?.dataShow?.value?.status === 'Completed' &&
|
|
|
|
|
|
useModel?.dataShow?.value?.evaluation_score
|
|
|
|
|
|
"
|
|
|
|
|
|
@click="method?.handleRework"
|
|
|
|
|
|
>
|
|
|
|
|
|
工单返工
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="
|
|
|
|
|
|
useModel?.dataShow?.value?.status !== 'Pending' &&
|
|
|
|
|
|
useModel?.dataShow?.value?.status !== 'Completed' &&
|
|
|
|
|
|
useModel?.dataShow?.value?.status !== 'Closed'
|
|
|
|
|
|
"
|
|
|
|
|
|
@click="method?.handlePhoneCall"
|
|
|
|
|
|
>
|
|
|
|
|
|
联系处理人
|
2025-10-29 13:53:05 +08:00
|
|
|
|
</view>
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="
|
|
|
|
|
|
useModel?.dataShow?.value?.status === 'Pending' ||
|
|
|
|
|
|
useModel?.dataShow?.value?.status === 'Processing'
|
|
|
|
|
|
"
|
|
|
|
|
|
@click="method?.hadnleUpdateTime"
|
|
|
|
|
|
:style="getStyleBgInfo()"
|
|
|
|
|
|
>
|
|
|
|
|
|
修改处理时间
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="useModel?.dataShow?.value?.status === 'PendingAcceptance'"
|
|
|
|
|
|
@click="method?.handleAcceptance"
|
|
|
|
|
|
:style="getStyleBgInfo()"
|
|
|
|
|
|
>
|
|
|
|
|
|
验收工单
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="useModel?.dataShow?.value?.status === 'PendingPayment'"
|
|
|
|
|
|
@click="method?.handleAcceptance"
|
|
|
|
|
|
:style="getStyleBgInfo()"
|
|
|
|
|
|
>
|
|
|
|
|
|
支付费用
|
|
|
|
|
|
</view>
|
|
|
|
|
|
<view
|
|
|
|
|
|
class="btn"
|
|
|
|
|
|
v-if="
|
|
|
|
|
|
useModel?.dataShow?.value?.status === 'Completed' &&
|
|
|
|
|
|
!useModel?.dataShow?.value?.evaluation_score
|
|
|
|
|
|
"
|
|
|
|
|
|
:style="getStyleBgInfo()"
|
|
|
|
|
|
@click="method?.handleAcceptance"
|
|
|
|
|
|
>
|
|
|
|
|
|
工单评价
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</view>
|
|
|
|
|
|
|
2026-01-30 09:54:26 +08:00
|
|
|
|
<hs-popup-evaluate
|
|
|
|
|
|
:show="useModel?.showEvaluate?.value"
|
|
|
|
|
|
mode="bottom"
|
|
|
|
|
|
:closeable="true"
|
|
|
|
|
|
:round="20"
|
|
|
|
|
|
@onSubmit="method?.handlepopupClose"
|
|
|
|
|
|
@onClose="useModel.showEvaluate.value = false"
|
|
|
|
|
|
/>
|
2025-08-29 09:51:02 +08:00
|
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
2025-10-29 13:53:05 +08:00
|
|
|
|
import { onLoad, onShow, onUnload } from '@dcloudio/uni-app'
|
2025-08-29 09:51:02 +08:00
|
|
|
|
import method from './method'
|
|
|
|
|
|
import useModel from './model'
|
2026-01-30 09:54:26 +08:00
|
|
|
|
import { getStyleBgInfo } from '@/common/libraries/getPageConfig'
|
|
|
|
|
|
import {
|
|
|
|
|
|
HouseWorkOrdersTypeEnum,
|
|
|
|
|
|
HouseWorkOrdersStatusEnum,
|
|
|
|
|
|
HouseWorkOrdersLocationEnum
|
|
|
|
|
|
} from '@/gen/Enums'
|
|
|
|
|
|
import { getTimeRangeDisplay } from '@/common/libraries/day'
|
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
|
import MyProcessLogs from './components/ProcessLogs.vue'
|
2025-08-29 09:51:02 +08:00
|
|
|
|
onLoad(e => {
|
|
|
|
|
|
method.getShow(e?.id)
|
2025-10-29 13:53:05 +08:00
|
|
|
|
method?.getHouseWorkLogs(e?.id)
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
onShow(() => {
|
|
|
|
|
|
if (useModel?.dataShow?.value?.id) {
|
|
|
|
|
|
method?.getShow(useModel?.dataShow?.value?.id)
|
|
|
|
|
|
method?.getHouseWorkLogs(useModel?.dataShow?.value?.id)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2026-01-30 09:54:26 +08:00
|
|
|
|
|
2025-10-29 13:53:05 +08:00
|
|
|
|
onUnload(() => {
|
|
|
|
|
|
useModel.dataShow.value = undefined
|
2026-01-30 09:54:26 +08:00
|
|
|
|
useModel.logsData.value = []
|
2025-08-29 09:51:02 +08:00
|
|
|
|
})
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
|
@import './style.scss';
|
|
|
|
|
|
</style>
|