|
|
@@ -139,15 +139,8 @@
|
|
|
show-overflow-tooltip
|
|
|
tooltip-effect="dark"
|
|
|
>
|
|
|
- <el-table-column label="操作" width="150" align="center">
|
|
|
+ <el-table-column label="操作" width="180" align="center">
|
|
|
<template #default="scope">
|
|
|
- <!-- <el-button
|
|
|
- link
|
|
|
- type="primary"
|
|
|
- @click="handleAppointment(scope.row)"
|
|
|
- >
|
|
|
- 约检
|
|
|
- </el-button> -->
|
|
|
<el-button
|
|
|
v-if="scope.row.status === 100"
|
|
|
link
|
|
|
@@ -156,6 +149,14 @@
|
|
|
>
|
|
|
发送确认
|
|
|
</el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.status === 100"
|
|
|
+ link
|
|
|
+ type="warning"
|
|
|
+ @click="handleRemark(scope.row)"
|
|
|
+ >
|
|
|
+ 备注
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="约检状态" prop="status" align="center" width="100">
|
|
|
@@ -243,6 +244,14 @@
|
|
|
<el-table-column label="街道" prop="equipStreetName" align="center" sortable width="100" />
|
|
|
<!-- 备注 -->
|
|
|
<el-table-column label="备注" prop="remark" align="center" width="150" />
|
|
|
+ <!-- 备注人 -->
|
|
|
+ <el-table-column label="备注人" prop="annotatorName" align="center" width="100" />
|
|
|
+ <!-- 备注时间 -->
|
|
|
+ <el-table-column label="备注时间" prop="annotatorDate" align="center" width="170">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ scope.row.annotatorDate ? dayjs(scope.row.annotatorDate).format('YYYY-MM-DD HH:mm:ss') : '-' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<!-- 是否受理 -->
|
|
|
<el-table-column label="是否受理" prop="createAcceptOrder" align="center" width="100">
|
|
|
<template #default="scope">
|
|
|
@@ -348,6 +357,52 @@
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
<unitContainerForm ref="unitContainerFormRef" />
|
|
|
+
|
|
|
+ <!-- 备注弹窗 -->
|
|
|
+ <el-dialog
|
|
|
+ v-model="remarkDialogVisible"
|
|
|
+ title="备注"
|
|
|
+ width="500px"
|
|
|
+ destroy-on-close
|
|
|
+ append-to-body
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ ref="remarkFormRef"
|
|
|
+ :model="remarkForm"
|
|
|
+ :rules="remarkRules"
|
|
|
+ label-width="80px"
|
|
|
+ >
|
|
|
+ <el-form-item label="备注类型" prop="remarkType">
|
|
|
+ <el-select
|
|
|
+ v-model="remarkForm.remarkType"
|
|
|
+ placeholder="请选择备注类型"
|
|
|
+ class="!w-full"
|
|
|
+ @change="handleRemarkTypeChange"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in remarkOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="remarkForm.remarkType === 'other'" label="备注内容" prop="customRemark">
|
|
|
+ <el-input
|
|
|
+ v-model="remarkForm.customRemark"
|
|
|
+ type="textarea"
|
|
|
+ :rows="3"
|
|
|
+ placeholder="请输入备注内容"
|
|
|
+ maxlength="200"
|
|
|
+ show-word-limit
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="remarkDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitRemark">确 定</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
@@ -713,6 +768,66 @@
|
|
|
getList();
|
|
|
})
|
|
|
|
|
|
+ // 备注相关
|
|
|
+ const remarkDialogVisible = ref(false)
|
|
|
+ const remarkFormRef = ref()
|
|
|
+ const remarkCurrentRow = ref<AppointmentConfirmOrderVO>()
|
|
|
+ const remarkOptions = [
|
|
|
+ { value: 'unable_contact', label: '无法联系用户' },
|
|
|
+ { value: 'notified_waiting', label: '已通知用户待回复' },
|
|
|
+ { value: 'transfer_pending', label: '用户计划办理过户或迁移手续,待回复' },
|
|
|
+ { value: 'other', label: '其他' }
|
|
|
+ ]
|
|
|
+ const remarkForm = reactive({
|
|
|
+ remarkType: '',
|
|
|
+ customRemark: ''
|
|
|
+ })
|
|
|
+ const remarkRules = {
|
|
|
+ remarkType: [{ required: true, message: '请选择备注类型', trigger: 'change' }],
|
|
|
+ customRemark: [{ required: true, message: '请输入备注内容', trigger: 'blur' }]
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleRemark = (row: AppointmentConfirmOrderVO) => {
|
|
|
+ remarkCurrentRow.value = row
|
|
|
+ remarkForm.remarkType = ''
|
|
|
+ remarkForm.customRemark = ''
|
|
|
+ remarkDialogVisible.value = true
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleRemarkTypeChange = () => {
|
|
|
+ remarkForm.customRemark = ''
|
|
|
+ }
|
|
|
+
|
|
|
+ const submitRemark = async () => {
|
|
|
+ if (!remarkFormRef.value) return
|
|
|
+ await remarkFormRef.value.validate(async (valid: boolean) => {
|
|
|
+ if (valid) {
|
|
|
+ try {
|
|
|
+ let remarkContent = ''
|
|
|
+ if (remarkForm.remarkType === 'other') {
|
|
|
+ remarkContent = remarkForm.customRemark
|
|
|
+ } else {
|
|
|
+ const selected = remarkOptions.find(item => item.value === remarkForm.remarkType)
|
|
|
+ remarkContent = selected ? selected.label : ''
|
|
|
+ }
|
|
|
+ if (!remarkContent) {
|
|
|
+ ElMessage.warning('备注内容不能为空')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ await AppointmentConfirmOrderApi.updateRemark({
|
|
|
+ id: remarkCurrentRow.value?.id,
|
|
|
+ remark: remarkContent
|
|
|
+ })
|
|
|
+ ElMessage.success('备注保存成功')
|
|
|
+ remarkDialogVisible.value = false
|
|
|
+ getList()
|
|
|
+ } catch (error) {
|
|
|
+ console.error('备注保存失败:', error)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
/** 初始化 **/
|
|
|
onMounted(() => {
|
|
|
// const { unitName } = route.query as Recordable
|