feat:增加反馈内容

This commit is contained in:
2025-12-18 19:20:57 +08:00
parent 6ddecd72af
commit cc2bf59a19
2 changed files with 118 additions and 1 deletions

View File

@ -0,0 +1,104 @@
<template>
<el-dialog v-model="dialogVisible" title="会商反馈" width="600px" :before-close="handleClose" destroy-on-close>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="反馈内容" prop="fknr">
<el-input v-model="form.fknr" type="textarea" :rows="6" placeholder="请输入反馈内容" maxlength="500" show-word-limit />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" :loading="loading" @click="handleSave">
保存
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { ref, reactive, nextTick } from 'vue'
import { ElMessage } from 'element-plus'
import { wshsHsfk } from '@/api/huiShangyp/onlineConsultationRoom.js'
const emit = defineEmits(['success'])
const dialogVisible = ref(false)
const loading = ref(false)
const formRef = ref()
const currentHsid = ref('')
const form = reactive({
fknr: ''
})
const rules = {
fknr: [
{ required: true, message: '请输入反馈内容', trigger: 'blur' },
{ min: 2, message: '反馈内容至少2个字符', trigger: 'blur' }
]
}
// 打开弹框
const open = (hsid) => {
currentHsid.value = hsid
form.fknr = ''
dialogVisible.value = true
}
// 关闭弹框
const handleClose = () => {
dialogVisible.value = false
form.fknr = ''
currentHsid.value = ''
if (formRef.value) {
formRef.value.resetFields()
}
}
// 保存反馈
const handleSave = async () => {
if (!formRef.value) return
try {
const valid = await formRef.value.validate()
if (!valid) return
loading.value = true
const params = {
hsid: currentHsid.value,
fknr: form.fknr
}
await wshsHsfk(params)
ElMessage.success('反馈保存成功')
handleClose()
emit('success') // 通知父组件刷新列表
} catch (error) {
ElMessage.error('保存失败,请重试')
} finally {
loading.value = false
}
}
defineExpose({
open
})
</script>
<style scoped>
.dialog-footer {
display: flex;
justify-content: flex-end;
gap: 10px;
}
:deep(.el-textarea__inner) {
resize: vertical;
}
</style>

View File

@ -32,7 +32,7 @@
</div> </div>
<div class="right"> <div class="right">
<el-button type="primary" size="small" @click="joinMeeting(item, '会议')">加入会议</el-button> <el-button type="primary" size="small" @click="joinMeeting(item, '会议')">加入会议</el-button>
<el-button type="primary" size="small">反馈情况</el-button> <el-button type="primary" size="small" @click="feedBack(item)">反馈情况</el-button>
<el-button type="primary" size="small">处置下发</el-button> <el-button type="primary" size="small">处置下发</el-button>
</div> </div>
</div> </div>
@ -76,6 +76,9 @@
<!-- 音视频会议窗口 --> <!-- 音视频会议窗口 -->
<MeetingView ref="refMeetingView" :update="updateItem"></MeetingView> <MeetingView ref="refMeetingView" :update="updateItem"></MeetingView>
<!-- 反馈弹窗 -->
<FeedbackForm ref="feedbackFormRef" @success="getList" />
</template> </template>
<script setup> <script setup>
@ -87,8 +90,10 @@ import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue"; import Search from "@/components/aboutTable/Search.vue";
import DetailForm from "./components/detailForm.vue"; import DetailForm from "./components/detailForm.vue";
import RoomDetail from "./components/roomDetail.vue"; import RoomDetail from "./components/roomDetail.vue";
import FeedbackForm from "./components/FeedbackForm.vue";
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue"; import { reactive, ref, onMounted, getCurrentInstance, nextTick } from "vue";
import ConferenceRoom from "./components/Communications/conferenceRoom.vue"; import ConferenceRoom from "./components/Communications/conferenceRoom.vue";
const router = useRouter(); const router = useRouter();
@ -98,6 +103,7 @@ const detailDiloag = ref();
const searchBox = ref(); //搜索框 const searchBox = ref(); //搜索框
const openMeeting = ref(false); // 打开会议窗口 const openMeeting = ref(false); // 打开会议窗口
const refMeetingView = ref() const refMeetingView = ref()
const feedbackFormRef = ref() // 反馈弹窗引用
const searchConfiger = ref([ const searchConfiger = ref([
{ {
label: "会议主题", label: "会议主题",
@ -123,6 +129,9 @@ const pageData = reactive({
}, },
}); });
const jsonData = ref('') const jsonData = ref('')
/** 当前行数据 */
const currRow = ref({})
onMounted(() => { onMounted(() => {
jsonData.value = require('@/components/Consultation/components/zh_CN.json'); jsonData.value = require('@/components/Consultation/components/zh_CN.json');
getList(); getList();
@ -191,6 +200,10 @@ const joinMeeting = (item, type) => {
item.number = item.hybh; item.number = item.hybh;
refMeetingView.value.openInit(item, type) refMeetingView.value.openInit(item, type)
}; };
// 反馈情况
const feedBack = (item) => {
feedbackFormRef.value.open(item.id);
};
// 删除 // 删除
const delDictItem = (id) => { const delDictItem = (id) => {