123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <template>
- <el-dialog
- v-model="state.dialogVisible"
- draggable
- title="督办回复"
- @mouseup="mouseup"
- :style="'transform: ' + state.transform + ';'"
- ref="dialogRef"
- width="50%"
- append-to-body
- destroy-on-close
- @close="close"
- >
- <div class="collapse-container pb1">
- <el-form label-width="110px" ref="ruleFormRef" :model="state.ruleForm">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="工单编码"> {{ state.orderDetail.no }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="工单标题"> {{ state.orderDetail.title }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="督办人"> {{ state.superviseDetail.crUser }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="督办部门"> {{ state.superviseDetail.creatorOrgName }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="督办时间"> {{ formatDate(state.superviseDetail.creationTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="督办回复时限"> {{ formatDate(state.superviseDetail.replyLimitTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
- <el-form-item label="被督办部门">{{ state.superviseDetail.orgName }}</el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
- <el-form-item label="督办回复时间"> {{ formatDate(Date(), 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <el-form-item label="附件" prop="handleResult" :rules="[{ required: false, message: '请选择附件', trigger: 'change' }]">
- <annex-list name="督办申请附件" readonly classify="督办申请" v-model="state.superviseDetail.files"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <el-form-item label="督办回复内容" prop="replyContent" :rules="[{ required: true, message: '请填写督办回复内容', trigger: 'blur' }]">
- <common-advice
- @chooseAdvice="chooseAdvice"
- v-model="state.ruleForm.replyContent"
- placeholder="请填写督办回复内容"
- :loading="state.loading"
- :commonEnum="commonEnum.Supervise"
- />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
- <el-form-item label="附件" prop="handleResult" :rules="[{ required: false, message: '请选择附件', trigger: 'change' }]">
- <annex-list name="督办回复附件" v-model="state.ruleForm.files" v-model:format="filesFormat" :businessId="state.superviseDetail.id" classify="督办回复" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </div>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="closeDialog" class="default-button">取 消</el-button>
- <el-button type="primary" @click="onSubmit(ruleFormRef)" :loading="state.loading">提交</el-button>
- </span>
- </template>
- </el-dialog>
- </template>
- <script setup lang="ts" name="businessSuperviseReplyDialog">
- import {defineAsyncComponent, reactive, ref} from 'vue';
- import {ElMessage, FormInstance} from 'element-plus';
- import {formatDate} from '/@/utils/formatTime';
- import {commonEnum} from '/@/utils/constants';
- import {superviseDetail, superviseReply, superviseSign} from '/@/api/business/supervise';
- // 引入组件
- const AnnexList = defineAsyncComponent(() => import('/@/components/AnnexList/index.vue'));
- const CommonAdvice = defineAsyncComponent(() => import('/@/components/CommonAdvice/index.vue')); // 常用意见
- // 定义子组件向父组件传值/事件
- const emit = defineEmits(['updateList']);
- // 定义变量内容
- const state = reactive<any>({
- collapseArr: ['1', '2'], // 折叠面板
- dialogVisible: false, // 是否显示弹窗
- loading: false, // 是否显示加载
- ruleForm: {
- acceptSms: false, // 发送督办短信
- replyContent: '', // 督办回复内容
- files:[]
- },
- superviseDetail: {}, // 督办详情
- orderDetail: {}, // 工单详情
- transform: 'translate(0px, 0px)', // 滚动条位置
- orgData: [], // 被督办部门
- superviseObj: {},
- });
- const ruleFormRef = ref<RefType>();
- // 查询督办详情
- const getDetail = async (id: string) => {
- let res = await superviseDetail(id);
- state.superviseDetail = res.result ?? {};
- state.orderDetail = res.result?.order ?? {};
- state.dialogVisible = true;
- };
- // 督办签收
- const onSign = (id: string) => {
- superviseSign({ id }).then(() => {
- // ElMessage.success('签收成功');
- emit('updateList');
- });
- };
- // 打开弹窗
- const openDialog = (val: any) => {
- state.superviseObj = val;
- getDetail(val.id);
- };
- // 关闭弹窗
- const closeDialog = () => {
- state.dialogVisible = false;
- };
- const close = () => {
- ruleFormRef.value.clearValidate();
- ruleFormRef.value.resetFields();
- if (!state.superviseObj.signTime) {
- // 如果没有签收时间签收
- onSign(state.superviseObj.id);
- }
- };
- // 选中常用意见
- const chooseAdvice = (item: any) => {
- state.ruleForm.content += item.content;
- };
- // 设置抽屉
- const dialogRef = ref<RefType>();
- const mouseup = () => {
- state.transform = dialogRef.value.dialogContentRef.$el.style.transform;
- };
- // 提交
- const filesFormat = ref<EmptyArrayType>([]); // 附件列表
- const onSubmit = (formEl: FormInstance | undefined) => {
- if (!formEl) return;
- formEl.validate((valid: boolean) => {
- if (!valid) return;
- state.loading = true;
- let request = {
- id: state.superviseDetail.id,
- replyId: state.superviseDetail.replyId,
- files: filesFormat.value,
- replyContent: state.ruleForm.replyContent,
- };
- superviseReply(request)
- .then((res: any) => {
- state.loading = false;
- closeDialog();
- emit('updateList');
- ElMessage.success('操作成功');
- })
- .catch(() => {
- state.loading = false;
- });
- });
- };
- defineExpose({
- openDialog,
- closeDialog,
- });
- </script>
|