Przeglądaj źródła

feat(records): change url

gemercheung 1 rok temu
rodzic
commit
45681bf905

+ 4 - 0
src/request/urls.ts

@@ -224,6 +224,10 @@ export const downloadSceneList = "/fusion-xj/sceneDownLog/list";
 export const offLine = "/web/fireProject/offLine"; //{roomId}
 export const onLine = "/web/fireProject/onLine"; //{roomId}
 export const onLineCheck = "/web/fireProject/onLineCheck";
+// 照片制卷
+export const caseApiList = "/fusion-xj/caseImg/list";
+export const saveApiOrUpdate = "/fusion-xj/caseImg/saveOrUpdate";
+export const caseApiDel = "/fusion-xj/caseImg/delete";
 
 export const getSysSetting = `/fusion-xj/systemSetting/info`;
 export const updateSysSetting = `/fusion-xj/systemSetting/save`;

+ 20 - 0
src/store/case.ts

@@ -7,6 +7,9 @@ import {
   setCasePsw,
   syncInfo,
   updateCaseFile,
+  caseApiList,
+  saveApiOrUpdate,
+  caseApiDel,
   caseInquestInfo,
   caseInquestOpt,
   caseInquestExport
@@ -23,6 +26,15 @@ export type Case = {
   userName: number;
 };
 
+export type CaseImg = {
+  id: number;
+  caseId: number;
+  imgInfo: string| null;
+  imgUrl: string| null;
+  status: number| null;
+  sort: number | null;
+};
+
 export const setCaseSharePWD = (params: { caseId: number; randCode: string }) =>
   axios.post(setCasePsw, params);
 
@@ -73,6 +85,14 @@ export const getCaseScenes = (scenes: Scene[]) => {
 export const replaceCaseScenes = (caseId: number, caseScenes: CaseScenes) =>
   axios.post(repCaseScenes, { sceneNumParam: caseScenes, caseId });
 
+export const caseImgList = (caseId: number, orderBy: string) =>
+  axios.post(caseApiList, { orderBy: orderBy || '', caseId });
+
+export const saveOrUpdate = (params: CaseImg) =>
+  axios.post(saveApiOrUpdate, { ...params});
+
+export const caseDel = (id: number) =>
+  axios.post(caseApiDel, { id });
 
 export const getCaseInquestInfo = (caseId: number) =>
   axios.get(caseInquestInfo, { params: { caseId } });

+ 30 - 15
src/view/case/addPhotoFile.vue

@@ -13,7 +13,7 @@
         :disabled="!!file"
         :before-upload="upload"
         :file-list="fileList"
-        :http-request="() => {}"
+        :http-request="httpsApi"
         :on-preview="previewFile"
         :accept="accept"
         :before-remove="removeFile"
@@ -24,7 +24,7 @@
         <template v-slot:tip>
           <div class="el-upload__tip">注:可上传{{ size }}以内的{{ formatDesc }}</div>
         </template>
-        <template v-slot:file="{ file }: { file: UploadFile }">
+        <template v-slot:file="{ file }">
           <div class="file" @click.stop="previewFile()">
             <div>
               <el-icon><Document /></el-icon>
@@ -37,7 +37,7 @@
     </el-form-item>
     <el-form-item label="附件标题:" class="mandatory">
       <el-input
-        v-model="caseFile.filesTitle"
+        v-model="caseFile.imgInfo"
         placeholder="请输入最多不能超过50字"
         maxlength="50"
         show-word-limit
@@ -54,50 +54,65 @@ import {
   OtherFormatDesc,
   OtherFormats,
 } from "@/constant/caseFile";
+import { uploadFile } from "@/store/system";
 import { maxFileSize } from "@/constant/caseFile";
 import { useUpload } from "@/hook/upload";
-import { CaseFile, addCaseFile } from "@/store/caseFile";
-import { ElMessage, UploadFile } from "element-plus";
+import { saveOrUpdate, CaseImg } from "@/store/case";
+import { ElMessage } from "element-plus";
 import { computed, ref, watchEffect } from "vue";
 import { QuiskExpose } from "@/helper/mount";
 
 const props = defineProps<{
   caseId: number;
-  fileType: number;
+  data: CaseImg;
 }>();
 
-const caseFile = ref<CaseFile>({
+const caseFile = ref<CaseImg>({
   caseId: props.caseId,
-  filesTypeId: props.fileType,
-  filesTitle: "",
+  id: props.data?.id,
+  imgUrl: props.data.imgUrl,
+  imgInfo: props.data.imgInfo,
+  sort: props.data?.sort || '',
 } as any);
 
 const { size, fileList, upload, removeFile, previewFile, file, accept } = useUpload({
   maxSize: maxFileSize,
-  formats: props.fileType === FileDrawType ? DrawFormats : OtherFormats,
+  formats: DrawFormats,
 });
 
 const formatDesc = computed(() =>
-  props.fileType === FileDrawType ? DrawFormatDesc : OtherFormatDesc
+DrawFormatDesc
 );
 
 watchEffect(() => {
   if (file.value?.name) {
-    caseFile.value.filesTitle = file.value?.name.substring(0, 50);
+    caseFile.value.imgUrl = file.value && file.value[0]?.url;
+    caseFile.value.imgInfo = file.value?.name.substring(0, 50);
   }
 });
 
+const httpsApi = async ({file})=> {
+  console.log('httpsApi', file)
+  let fileUrl = await uploadFile(file);
+
+  file.value = [{
+    name: file.name,
+    url: fileUrl,
+  }]
+  console.log('httpsApi', file, fileUrl)
+}
+
 defineExpose<QuiskExpose>({
   async submit() {
     if (!file.value) {
       ElMessage.error("请上传附件");
       throw "请上传附件";
-    } else if (!caseFile.value.filesTitle.trim()) {
+    } else if (!caseFile.value.imgInfo.trim()) {
       ElMessage.error("附件标题不能为空!");
       throw "附件标题不能为空!";
     }
-
-    await addCaseFile({ ...caseFile.value, file: file.value });
+    console.log('defineExpose', caseFile.value, file.value.value[0]?.url)
+    await saveOrUpdate({ ...caseFile.value, imgUrl: file.value && file.value.value && file.value.value[0]?.url });
     return caseFile.value;
   },
 });

+ 8 - 3
src/view/case/photos/index.vue

@@ -54,8 +54,8 @@ import { Menu, FullScreen } from "@element-plus/icons-vue";
 import { Swiper, SwiperSlide } from "swiper/vue";
 import "swiper/css";
 // import { addCaseFile } from "@/store/caseFile";
-import { addCaseFile } from "../quisk";
-import draggable from "./draggable.vue";
+import { addCaseImgFile } from "../quisk";
+import draggable from './draggable.vue';
 const props = defineProps({ caseId: Number });
 const newlist = ref([]);
 const swiperRef = ref(null);
@@ -63,7 +63,12 @@ const caseId = ref(props.caseId);
 const sortType = ref(false);
 console.log(props);
 const addCaseFileHandler = async () => {
-  await addCaseFile({ caseId: caseId.value, fileType: "currentTypeId.value!" });
+  await addCaseImgFile({ caseId: caseId.value, data: {
+    imgUrl: '',
+    imgInfo: '',
+    id: '',
+    sort: '',
+  } });
   refresh();
 };
 const changeList = (list) => {

+ 7 - 0
src/view/case/quisk.ts

@@ -1,3 +1,4 @@
+import addPhotoFile from "./addPhotoFile.vue";
 import AddCaseFile from "./addCaseFile.vue";
 import AddScenes from "./addScenes.vue";
 import ShareCase from "./share.vue";
@@ -15,6 +16,12 @@ export const addCaseFile = quiskMountFactory(AddCaseFile, {
   width: 500,
 });
 
+export const addCaseImgFile = quiskMountFactory(addPhotoFile, {
+  title: "上传附件",
+  width: 500,
+});
+
+
 export const addCaseScenes = quiskMountFactory(AddScenes, {
   title: "添加场景",
   width: 800,