Commit 0a5ac713 authored by qingjl's avatar qingjl

文件上传

parent 305c1de1
...@@ -3,3 +3,13 @@ import request from "@/utils/http/index"; ...@@ -3,3 +3,13 @@ import request from "@/utils/http/index";
export const meetingList = (params) => { export const meetingList = (params) => {
return request.get("/md/meeting/find", params); return request.get("/md/meeting/find", params);
}; };
export const meetingAdd = (data) => {
return request.post("/md/meeting/add", data);
};
export const meetingUpload = (data) => {
return request.post("/api/upload/file", data);
}
\ No newline at end of file
...@@ -26,7 +26,7 @@ export const staticRoute = [ ...@@ -26,7 +26,7 @@ export const staticRoute = [
} }
}, },
{ {
path: '/recording-convert', path: '/recording-convert/:id',
name: "recordingConvert", name: "recordingConvert",
component: () => import("@/views/recording/convert.vue"), component: () => import("@/views/recording/convert.vue"),
meta: { meta: {
......
<template> <template>
<div class="container py-4 m-auto"> <div class="container py-4 m-auto">
<div class="text-xl font-bold mb-2">新增会议</div> <el-button type="text" @click="router.go(-1)">返回</el-button>
<el-form label-width="120px" label-position="left"> <div class="text-xl font-bold mb-2 mt-1">新增会议</div>
<el-form ref="form" label-width="120px" label-position="left">
<el-form-item label="会议主题"> <el-form-item label="会议主题">
<el-input v-model="formState.meetingName"></el-input> <el-input v-model="formState.meetingName"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="会议时间"> <el-form-item label="会议时间">
<el-date-picker type="date" value-format="YYYY-MM-DD" v-model="formState.meetingTime"></el-date-picker> <el-date-picker
type="date"
value-format="YYYY-MM-DD"
v-model="formState.meetingTime"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="主持人"> <el-form-item label="主持人">
<el-input v-model="formState.meetingHost"></el-input> <el-input v-model="formState.meetingHost"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="text-lg mb-2">参会人员</div>
<div class="text-lg mb-2">
参会人员
</div>
<vxe-table :data="tableData"> <vxe-table :data="tableData">
<vxe-column field="name" title="姓名"></vxe-column> <vxe-column field="name" title="姓名"></vxe-column>
<vxe-column field="role" title="部门/角色"></vxe-column> <vxe-column field="role" title="部门/角色"></vxe-column>
<vxe-column field="projectRole" title="项目角色"></vxe-column> <vxe-column field="projectRole" title="项目角色"></vxe-column>
</vxe-table> </vxe-table>
<div>
<el-button type="primary" @click="hanldeSubmit">提交</el-button>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { reactive } from 'vue'; import { reactive, ref } from "vue";
import {ref} from 'vue' import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
import { meetingAdd } from "@/api/meeting";
const form = ref();
const router = useRouter();
const tableData = ref([]); const tableData = ref([]);
const formState = reactive({ const formState = reactive({
meetingName: '', meetingName: "",
meetingTime: '', meetingTime: "",
meetingHost: '', meetingHost: "",
}) });
const hanldeSubmit = async () => {
await form.value.validate();
const { data } = await meetingAdd(formState);
ElMessage.success("创建成功!");
setTimeout(() => {
router.replace("/recording");
}, 1500);
};
</script> </script>
<template> <template>
<div>convert</div> <div class="container py-4 m-auto">
</template> <el-button type="text" @click="router.go(-1)">返回</el-button>
\ No newline at end of file <div class="text-xl font-bold mb-2 mt-1">会议详情</div>
<el-descriptions :column="1" border label-width="120px">
<el-descriptions-item label="会议主题">{{
detail.meetingName
}}</el-descriptions-item>
<el-descriptions-item label="会议时间">{{
detail.meetingTime
}}</el-descriptions-item>
<el-descriptions-item label="主持人">{{
detail.meetingHost
}}</el-descriptions-item>
</el-descriptions>
<div class="mt-3">
<div class="text-lg font-bold mb-2">转录详情</div>
<div class="p-2 border round">{{detail.content}}</div>
</div>
</div>
</template>
<script setup>
import { onMounted, reactive } from "vue";
import { useRoute, useRouter } from "vue-router";
const route = useRoute();
const router = useRouter()
const detail = reactive({
meetingName: "会议主题----1",
meetingTime: "2024-11-01 12:00:00",
meetingHost: "主持人",
content: "转录详情", // 转录详情
});
onMounted(() => {
const id = route.query?.id;
// 请求...
console.log(id, "detail - id");
});
</script>
\ No newline at end of file
...@@ -32,10 +32,28 @@ ...@@ -32,10 +32,28 @@
<el-button type="success" @click="handleAdd">新增</el-button> <el-button type="success" @click="handleAdd">新增</el-button>
</div> </div>
<vxe-table :data="tableData" :loading="loading"> <vxe-table :data="tableData" :loading="loading">
<vxe-column field="meetingName" title="会议主题"></vxe-column> <vxe-column field="meetingName" title="会议主题">
<template #default="{ row }">
<el-link :href="'/recording-convert/' + row.id">{{
row.meetingName
}}</el-link>
</template>
</vxe-column>
<vxe-column field="meetingHost" title="主持人"></vxe-column> <vxe-column field="meetingHost" title="主持人"></vxe-column>
<vxe-column field="meetingTime" title="会议时间"></vxe-column> <vxe-column field="meetingTime" title="会议时间"></vxe-column>
<vxe-column field="name4" title="录音"></vxe-column> <vxe-column field="name4" title="录音">
<template #default="{ row }">
<el-upload
:show-file-list="false"
action="#"
:auto-upload="false"
:limit="1"
:on-change="(file) => handleChange(file, row)"
>
<el-button type="primary">上传录音</el-button>
</el-upload>
</template>
</vxe-column>
</vxe-table> </vxe-table>
</div> </div>
</template> </template>
...@@ -43,8 +61,9 @@ ...@@ -43,8 +61,9 @@
<script setup> <script setup>
import { reactive, ref } from "vue"; import { reactive, ref } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { meetingList } from "@/api/meeting"; import { meetingList, meetingUpload } from "@/api/meeting";
import { onMounted } from "vue"; import { onMounted } from "vue";
import { ElMessage } from "element-plus";
const formState = reactive({ const formState = reactive({
meetingName: "", meetingName: "",
...@@ -52,13 +71,14 @@ const formState = reactive({ ...@@ -52,13 +71,14 @@ const formState = reactive({
meetingTime: "", meetingTime: "",
}); });
const tableData = ref([]); const tableData = ref([]);
const loading = ref(false) const loading = ref(false);
const router = useRouter(); const router = useRouter();
const hanldeQuery = async () => { const hanldeQuery = async () => {
loading.value = true; loading.value = true;
try { try {
const { data } = await meetingList(); const { data } = await meetingList();
tableData.value = data;
} catch {} } catch {}
loading.value = false; loading.value = false;
}; };
...@@ -71,6 +91,16 @@ const handleReset = () => { ...@@ -71,6 +91,16 @@ const handleReset = () => {
formState.meetingTime = ""; formState.meetingTime = "";
}; };
const handleChange = async (file, row) => {
const formData = new FormData();
formData.append("file", file.raw);
formData.append("mdMeeting", JSON.stringify(row));
const { data } = await meetingUpload(formData);
ElMessage.success("上传成功!文件地址:" + data);
};
onMounted(() => { onMounted(() => {
hanldeQuery(); hanldeQuery();
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment