tangning 8 月之前
父節點
當前提交
31f526ac67

+ 11 - 1
src/components/viewImg/index.vue

@@ -84,6 +84,11 @@ const props = defineProps({
     default: false,
     required: false,
   },
+  delete: {
+    type: Boolean,
+    default: false,
+    required: false,
+  },
   deleteShow: {
     type: Boolean,
     default: false,
@@ -155,7 +160,12 @@ const del = async (file) => {
     cancelButtonText: "取消",
     type: "warning",
   }).then(async () => {
-    await delCaseFile({ caseId: caseId.value, filesId: file.filesId });
+    if(props.delete){
+
+    }else{
+      await delCaseFile({ caseId: caseId.value, filesId: file.filesId });
+    }
+
     emits("handleItem", 'delete', file);
     ElMessage({
       type: "success",

+ 1 - 0
src/request/urls.ts

@@ -244,6 +244,7 @@ export const casesaveOrUpdate = "/fusion/caseInquestInfo/saveOrUpdate";
 export const getByTree = "/fusion/caseFilesType/getByTree";
 export const updateFileType = "/fusion/caseFiles/updateFileType";
 export const addByMediaLibrary = "/fusion/caseFiles/addByMediaLibrary";
+export const addByMediaLibrarys = "/fusion/caseFiles/addByMediaLibrarys";
 export const addmodelByMediaLibrary = "/fusion/model/addByMediaLibrary";
 export const criminalInfo = "/fusion/caseInquestCriminal/info";
 export const saveOrUpdate = "/fusion/caseInquestCriminal/saveOrUpdate";

+ 5 - 2
src/store/case.ts

@@ -13,6 +13,7 @@ import {
   getByTree,
   getListFileList,
   addByMediaLibrary,
+  addByMediaLibrarys,
   updateFileType,
   saveOrUpdate,
   criminalInfo,
@@ -58,8 +59,10 @@ export const setCaseaddOrUpdate = (params) =>
 export const getCaseSharePWD = async (params: { caseId: number }) =>
   (await axios.get<string>(getCasePsw, { params })).data;
 
-export const addByMediaLiBrary = async (params) =>
-  (await axios.post<string>(addByMediaLibrary, params)).data;
+export const addByMediaLiBrary = async (params) =>{
+  const newUrl = params.uploadIds?.length ? addByMediaLibrarys : addByMediaLibrary
+  return (await axios.post<string>(newUrl, params)).data;
+}
 
 export const AddsaveOrUpdate = async (params) =>
   (await axios.post<string>(saveOrUpdate, params)).data;

+ 1 - 1
src/view/dossier/index.vue

@@ -161,7 +161,7 @@ function handleItem(type, item) {
   console.log("handleItem", type, item);
 }
 async function handleAdd() {
-  await addCaseFile({ caseId: caseId.value, fileType: 1, fileInfo: fileInfo.value, filesTypeName: ['案件卷宗'] });
+  await addCaseFile({ caseId: caseId.value, fileInfo: fileInfo.value, filesTypeName: ['案件卷宗'] });
   getList();
 }
 function handleDel() {

+ 1 - 1
src/view/material/index.vue

@@ -218,7 +218,7 @@ async function handledrawCasePhotos() {
   console.log("handleAdd");
 }
 async function handleAdd(filesTypeName) {
-  await addCaseFile({ caseId: caseId.value, fileType: 1, filesTypeName });
+  await addCaseFile({ caseId: caseId.value, filesTypeName });
   getList()
   console.log("handleAdd");
 }

+ 13 - 11
src/view/originalPhoto/addCaseFile.vue

@@ -17,12 +17,11 @@
         clearable
       />
     </el-form-item>
-    <el-form-item label="文件类别:" class="mandatory">
+    <el-form-item label="上传类别:" class="mandatory">
       <el-select
         style="width: 300px;"
         v-model="caseFile.filesType"
-        placeholder="请选择文件类别"
-        clearable
+        placeholder="请选择上传类别"
       >
         <el-option label="本地上传" :value="1" />
         <el-option label="媒体库上传" :value="0" />
@@ -74,7 +73,7 @@
       >从媒体库上传</el-button>
     </el-form-item>
     <div style="padding-left: 90px">
-        <viewImg :list="mtkList" edit @handleItem="handleItem"/>
+        <viewImg :list="mtkList" edit delete @handleItem="handleItem"/>
       </div>
   </el-form>
 </template>
@@ -145,7 +144,7 @@ const handleSuccess = (option) => {
 }
 
 const handleAdd = async () => {
-  let fileId =  await addCaseScenes();
+  let fileId =  await addCaseScenes({formats: props.fileInfo?.formats || [".jpg", ".jpeg", ".png", '.mp4']});
   mtkList.value = fileId.map(ele => {
     return {
       filesUrl: ele.fileUrl,
@@ -156,6 +155,9 @@ const handleAdd = async () => {
 };
 const handleItem = (type, item) => {
   console.log("handleItem", type, item);
+  if(type == 'delete'){
+    mtkList.value = mtkList.value.filter(ele => ele.id != item.id)
+  }
 };
 watchEffect(() => {
   console.log('file', file.value);
@@ -166,16 +168,16 @@ watchEffect(() => {
 
 defineExpose<QuiskExpose>({
   async submit() {
-    console.log('filesTypeId', caseFile.value);
+    let filesTypeId = caseFile.value.filesTypeId && Array.isArray(caseFile.value.filesTypeId)?caseFile.value.filesTypeId.slice(-1):caseFile.value.filesTypeId
+    console.log('filesTypeId', caseFile.value, filesTypeId);
     if (!file.value && mtkList.value.length == 0) {
       ElMessage.error("请上传文件");
       throw "请上传文件";
-    } else if (!caseFile.value.filesTypeId) {
-      ElMessage.error("文件类不能为空!");
-      throw "文件类不能为空!";
+    } else if (!filesTypeId) {
+      ElMessage.error("文件类不能为空!");
+      throw "文件类不能为空!";
     }
-    let filesTypeId = caseFile.value.filesTypeId?.slice(-1),
-    uploadId = file.value?.response?.data.id,
+    let uploadId = file.value?.response?.data.id,
     uploadIds = mtkList.value.map(ele => ele.id) || [];
     let params = { ...caseFile.value, file: file.value, filesTypeId: filesTypeId[0], uploadId, uploadIds };
     console.log('filesTypeId', params);

+ 9 - 2
src/view/originalPhoto/addScenes.vue

@@ -17,7 +17,7 @@
         size="large"
         @selection-change="changeSelection"
       >
-        <el-table-column type="selection" width="50" />
+        <el-table-column type="selection" width="50" :selectable="selectable"/>
         <el-table-column label="名称" v-slot:default="{ row }">
           {{ params.isSwmx ? row.modelTitle : row.name }}
         </el-table-column>
@@ -60,7 +60,7 @@ import {
 import { QuiskExpose } from "@/helper/mount";
 import { ElTable } from "element-plus";
 
-const props = defineProps<{ caseId: number }>();
+const props = defineProps<{ caseId: number, formats: Array<string> }>();
 const params = useScenePaggingParams();
 const caseScenes = ref([]);
 const tableRef = ref<InstanceType<typeof ElTable>>();
@@ -86,6 +86,13 @@ watchEffect(() => {
   });
 });
 
+const selectable = (row) => {
+  console.log("row", row);
+  const fileType = row.fileUrl?.substring(row.fileUrl.lastIndexOf("."))
+      .toLowerCase();
+  return props.formats.includes(fileType);
+}
+
 const changeSelection = (selectScenes) => {
   if (params.pagging.loading) return;
   const pagScenes = params.pagging.state.table.rows;

+ 1 - 1
src/view/originalPhoto/index.vue

@@ -53,7 +53,7 @@ function getList() {
   })
 }
 async function handleAdd() {
-  await addCaseFile({ caseId: caseId.value, fileType: 1, filesTypeName: ['原始照片'] });
+  await addCaseFile({ caseId: caseId.value, filesTypeName: ['原始照片'] });
   getList();
 }
 async function handleItem(type, item) {

+ 1 - 1
src/view/other/index.vue

@@ -102,7 +102,7 @@ const submitForm = async (formEl) => {
   });
 };
 async function handleAdd() {
-  await addCaseFile({ caseId: caseId.value, fileType: 1, fileInfo: fileInfo.value, filesTypeName: ['其他资料'] });
+  await addCaseFile({ caseId: caseId.value, fileInfo: fileInfo.value, filesTypeName: ['其他资料'] });
   getList();
 }
 function getList() {