202 lines
6.1 KiB
Vue
Raw Normal View History

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>