main
黄海 9 months ago
parent f7634fbb89
commit 6355733bc7

@ -64,3 +64,7 @@ export const updateStructure = params => {
export const deleteStructure = params => {
return http.post(`/dsRes/base/delResourceStructureById`, params);
};
export const getStructureRootNode = params => {
return http.get<any>(`/dsRes/base/fetchStructure`, params, { loading: false });
};

@ -4,6 +4,7 @@
</div>
<el-scrollbar :style="{ height: title ? `calc(100% - 95px)` : `calc(100% - 78px)` }">
<el-tree
v-if="reload"
ref="treeRef"
default-expand-all
:node-key="id"
@ -59,6 +60,7 @@ const defaultProps = {
const treeRef = ref<InstanceType<typeof ElTree>>();
const treeData = ref<{ [key: string]: any }[]>([]);
const treeAllData = ref<{ [key: string]: any }[]>([]);
const _data = ref<{ [key: string]: any }[]>([]);
const selected = ref();
const setSelected = () => {
@ -81,7 +83,11 @@ onBeforeMount(async () => {
// 使 nextTick
watch(
() => props.defaultValue,
() => nextTick(() => setSelected()),
() =>
nextTick(() => {
console.log("aaaaaaaaaa");
setSelected();
}),
{ deep: true, immediate: true }
);
@ -143,21 +149,21 @@ const handleCheckChange = () => {
emit("change", treeRef.value?.getCheckedKeys());
};
const reload = ref(true);
const refresh = scheme_id => {
reload.value = false;
nextTick(() => {
refreshTree(scheme_id);
reload.value = true;
});
};
const refreshTree = async (scheme_id: number) => {
setSelected();
// setSelected();
if (props.refreshApi) {
const { data } = await props.refreshApi!(scheme_id);
treeData.value = data;
treeAllData.value = [...data];
if (data[0]) {
selected.value = data[0].structure_id;
}
}
};

@ -0,0 +1,154 @@
<template>
<el-dialog
v-model="dialogFormVisible"
:title="`${paramsProps.title}`"
draggable
append-to-body
:destroy-on-close="true"
width="500"
@close="closeDialog"
>
<el-upload
class="upload-demo"
drag
method="PUT"
:action="signature"
:multiple="true"
:before-upload="uploadBefore"
:on-success="uploadSuccess"
:on-exceed="uploadExceed"
:on-change="uploadChange"
:limit="5"
:show-file-list="true"
list-type="picture"
v-model:file-list="fileList"
>
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
<div class="el-upload__text">拖动文件到此区域 <em>点击上传</em></div>
</el-upload>
</el-dialog>
</template>
<script setup lang="ts" name="uploadDialog">
import { ref, onMounted } from "vue";
import { ElMessage, UploadUserFile } from "element-plus";
import { getFileExtIcon, getUpladFileSignature, addResData } from "@/api/modules/res";
const dialogFormVisible = ref(false);
const fileList = ref<UploadUserFile[]>([]);
const iconList = ref<any>([]);
const signature = ref(
"http://10.10.14.210:9000/dsideal/resources/d0a9a28e-ca25-4844-b6c0-5f66f0fd631b.doc?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AOxWewe7pywwEc1NQeP6%2F20241031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241031T082920Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=7f596c972b5c22f73a001460504e1aaa905431a32e3dab456e57e9bc40ad7094"
);
const paramsProps = ref<View.DefaultParams>({
title: "",
row: {},
updateId: 0,
getTableList: undefined
});
const acceptParams = (params: View.DefaultParams) => {
paramsProps.value = params;
dialogFormVisible.value = true;
};
const uploadBefore = async rawFile => {
const fileExt = rawFile.name.split(".").pop();
//
const res = await getUpladFileSignature({ extension: fileExt });
signature.value = res.data.signature;
//rawFile
rawFile.file_ext = fileExt;
rawFile.file_name = res.data.object_name;
};
const uploadChange = async (uploadFile, uploadFiles) => {
if (uploadFile.status == "ready") {
const fileExt = uploadFile.name.split(".").pop();
const imageExt = ["jpg", "jpeg", "png", "gif", "bmp"];
const isImage = imageExt.includes(fileExt.toLowerCase());
if (!isImage) {
const extObj = iconList.value.find(item => item.ext === fileExt);
if (extObj) {
uploadFile.url = extObj.thumb_name;
} else {
const extOtherObj = iconList.value.find(item => item.ext === "other");
uploadFile.url = extOtherObj.thumb_name;
}
}
}
};
const uploadSuccess = (response, uploadFile, uploadFiles) => {
setTimeout(() => {
const _index = fileList.value.findIndex(item => item.name === uploadFile.name);
fileList.value.splice(_index, 1);
}, 3000);
addRes(
uploadFile.name.split(".").slice(0, -1).join("."),
uploadFile.size,
uploadFile.raw.file_ext,
uploadFile.raw.file_name,
paramsProps.value.row.scheme_id,
paramsProps.value.row.structure_id,
paramsProps.value.row.stage_id,
paramsProps.value.row.subject_id
);
};
const uploadExceed = () => {
ElMessage.warning(`一次最多只能选择5个文件上传`);
};
const getFileExtIconList = async () => {
const res = await getFileExtIcon();
iconList.value = res.data;
};
const addRes = async (resource_title, resource_size_int, extension, file_name, scheme_id, structure_id, stage_id, subject_id) => {
await addResData({
resource_title,
resource_size_int,
extension,
file_name,
file_md5: "1",
scheme_id,
structure_id,
stage_id,
subject_id
});
};
const closeDialog = () => {
paramsProps.value.getTableList!();
};
onMounted(() => {
getFileExtIconList();
});
defineExpose({
acceptParams
});
</script>
<style scoped lang="scss">
:deep(li) {
height: 50px; /* 设置固定高度 */
}
:deep(.el-upload-list__item) {
margin-top: 0;
}
:deep(.el-upload-list__item-thumbnail) {
height: 30px;
width: none;
}
</style>

@ -97,10 +97,10 @@ import TreeFilter from "@/components/TreeFilter/index.vue";
import { CirclePlus, Delete } from "@element-plus/icons-vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { getStructureList, getStageList, getSubjectList, getSchemeList } from "@/api/modules/base";
import { getStructureList, getStageList, getSubjectList, getSchemeList, getStructureRootNode } from "@/api/modules/base";
import { getResList, delResData } from "@/api/modules/res";
import UploadDialog from "@/views/res/test/components/uploadDialog.vue";
import UploadDialog from "@/views/res/resource/components/uploadDialog.vue";
const treeFilterData = ref<any>([]);
@ -136,7 +136,7 @@ const getSchemeTree = async () => {
};
const getSchemeTreeRefresh = async scheme_id => {
const res = await getStructureList({ scheme_id: schemeSelect.value });
const res = await getStructureList({ scheme_id });
return res;
};
@ -193,10 +193,19 @@ const openpopover = e => {
visible.value = true;
};
const well = () => {
const well = async () => {
if (schemeSelect.value) {
const rootNodeIdRes = await getStructureRootNode({ scheme_id: schemeSelect.value });
sssTxt.value = stageSelectTxt.value + "-" + subjectSelectTxt.value + "-" + schemeSelectTxt.value;
treeFilterRef.value?.refresh(schemeSelect.value);
if (rootNodeIdRes.data[0]) {
initParam.structure_id = rootNodeIdRes.data[0].structure_id;
} else {
initParam.structure_id = "999";
}
visible.value = false;
}
};

@ -10,7 +10,9 @@
:default-value="initParam.structure_id"
/>
</div>
<div class="table-box"></div>
<div class="table-box">
<el-button type="primary" @click="handleAdd">Primary</el-button>
</div>
</div>
</template>
@ -25,6 +27,10 @@ const treeFilterData = ref<any>([]);
const initParam = reactive({ structure_id: "367554" });
const handleAdd = async () => {
initParam.structure_id = "11";
};
const getSchemeTree = async (scheme_id: number = 500124397) => {
// const { data } = await getStructureList({ scheme_id });
const data = [

Loading…
Cancel
Save