Order-urge-detail.vue 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <el-dialog v-model="state.dialogVisible" draggable title="催办详情" ref="dialogRef" width="50%" destroy-on-close @close="close">
  3. <div class="collapse-container pb1">
  4. <el-form label-width="110px" ref="ruleFormRef" :model="state.ruleForm" class="show-info-form">
  5. <el-row :gutter="10">
  6. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  7. <el-form-item label="工单编码"> {{ state.orderDetail.no }} </el-form-item>
  8. </el-col>
  9. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  10. <el-form-item label="工单标题"> {{ state.orderDetail.title }} </el-form-item>
  11. </el-col>
  12. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  13. <el-form-item label="催办人"> {{ state.urgeDetail.crUser }} </el-form-item>
  14. </el-col>
  15. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  16. <el-form-item label="催办部门"> {{ state.urgeDetail.creatorOrgName }} </el-form-item>
  17. </el-col>
  18. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  19. <el-form-item label="催办时间"> {{ formatDate(state.urgeDetail.creationTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
  22. <el-form-item label="被催办部门">{{ state.urgeDetail.orgName }}</el-form-item>
  23. </el-col>
  24. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-auth="'file:list'">
  25. <el-form-item label="附件" prop="handleResult" :rules="[{ required: false, message: '请选择附件', trigger: 'change' }]">
  26. <annex-list name="查看附件" readonly :businessId="state.urgeDetail.id" classify="催办回复" />
  27. </el-form-item>
  28. </el-col>
  29. </el-row>
  30. </el-form>
  31. </div>
  32. <template #footer>
  33. <span class="dialog-footer">
  34. <el-button @click="closeDialog" class="default-button">关 闭</el-button>
  35. </span>
  36. </template>
  37. </el-dialog>
  38. </template>
  39. <script setup lang="ts" name="businessUrgeDetailDialog">
  40. import {defineAsyncComponent, reactive, ref} from 'vue';
  41. import {formatDate} from '/@/utils/formatTime';
  42. import {urgeDetail, urgeSign} from '/@/api/business/urge';
  43. import {ElMessage} from "element-plus";
  44. // 引入组件
  45. const AnnexList = defineAsyncComponent(() => import('/@/components/AnnexList/index.vue'));
  46. const CommonAdvice = defineAsyncComponent(() => import('/@/components/CommonAdvice/index.vue')); // 常用意见
  47. // 定义子组件向父组件传值/事件
  48. const emit = defineEmits(['updateList']);
  49. // 定义变量内容
  50. const state = reactive<any>({
  51. collapseArr: ['1', '2'], // 折叠面板
  52. dialogVisible: false, // 是否显示弹窗
  53. loading: false, // 是否显示加载
  54. ruleForm: {
  55. acceptSms: false, // 发送催办短信
  56. applyContent: '', // 催办内容
  57. },
  58. urgeDetail: {}, // 催办详情
  59. orderDetail: {}, // 工单详情
  60. orgData: [], // 被催办部门
  61. });
  62. const ruleFormRef = ref<RefType>();
  63. const getDetail = async (id: string) => {
  64. let res = await urgeDetail(id);
  65. state.urgeDetail = res.result ?? {};
  66. state.orderDetail = res.result?.order ?? {};
  67. state.dialogVisible = true;
  68. };
  69. // 催办签收
  70. const onSign = (id: string) => {
  71. urgeSign({ id }).then(() => {
  72. ElMessage.success('签收成功');
  73. emit('updateList');
  74. });
  75. };
  76. // 打开弹窗
  77. const openDialog = (val: any) => {
  78. getDetail(val.id);
  79. if (!val.signTime) {
  80. // 如果没有签收时间签收
  81. onSign(val.id);
  82. }
  83. };
  84. // 关闭弹窗
  85. const closeDialog = () => {
  86. state.dialogVisible = false;
  87. };
  88. const close = () => {
  89. ruleFormRef.value?.clearValidate();
  90. ruleFormRef.value?.resetFields();
  91. };
  92. defineExpose({
  93. openDialog,
  94. closeDialog,
  95. });
  96. </script>