179 lines
4.4 KiB
Vue
179 lines
4.4 KiB
Vue
<script setup>
|
|
import Modal from "@/components/customUI/Modal.vue";
|
|
import Upload from "@/components/customUI/Upload.vue";
|
|
import { ref, inject, defineProps, watch, onMounted, computed } from "vue";
|
|
import {
|
|
getGraphAddParamOption,
|
|
addGraphTableData,
|
|
addGraphTableDataWithoutSubSys,
|
|
editGraphTableDataWithoutSubSys,
|
|
} from "@/apis/graph";
|
|
import { useI18n } from "vue-i18n";
|
|
const { t } = useI18n();
|
|
const BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
|
|
|
|
const props = defineProps({
|
|
updateEditRecord: Function,
|
|
editRecord: Object,
|
|
getTableData: Function,
|
|
});
|
|
const { openToast } = inject("app_toast");
|
|
const { current_dir } = inject("current_dir");
|
|
|
|
const options = ref([]);
|
|
|
|
const getOption = async () => {
|
|
const res = await getGraphAddParamOption();
|
|
options.value = res.data.map((d, index) => ({
|
|
...d,
|
|
key: d.sub_system_tag,
|
|
selected: index === 0,
|
|
}));
|
|
};
|
|
|
|
const onSubSysClick = (option) => {
|
|
options.value = options.value.map((d) => ({
|
|
...d,
|
|
selected: d.key === option,
|
|
}));
|
|
};
|
|
|
|
const specOptions = computed(() => {
|
|
// console.log("onSubSysClick", options.value);
|
|
return options.value.find(({ selected }) => selected)?.spec || [];
|
|
});
|
|
|
|
// onMounted(() => {
|
|
// getOption();
|
|
// });
|
|
|
|
const openModal = () => {
|
|
graph_add_item.showModal();
|
|
};
|
|
|
|
const onCancel = () => {
|
|
graph_add_item.close();
|
|
props.updateEditRecord(null);
|
|
resetForm();
|
|
};
|
|
|
|
// Form
|
|
const form = ref(null);
|
|
const fileList = ref([]);
|
|
const updateFileList = (files) => {
|
|
fileList.value = files;
|
|
};
|
|
|
|
const resetForm = () => {
|
|
onSubSysClick(options.value[0].key);
|
|
updateFileList([]);
|
|
};
|
|
|
|
const onOk = async (e) => {
|
|
const formData = new FormData(form.value);
|
|
formData.append("layer_id", current_dir.value.id);
|
|
console.log(fileList);
|
|
formData.delete("oriFile");
|
|
fileList.value.forEach((file) => {
|
|
if (file.id) {
|
|
formData.append("oriFile", null);
|
|
formData.append("oriSavName", file.oriSavName);
|
|
} else {
|
|
formData.append("oriFile", file);
|
|
}
|
|
formData.append("oriOrgName", file?.name);
|
|
});
|
|
|
|
let res;
|
|
if (props.editRecord) {
|
|
formData.append("id", props.editRecord.id);
|
|
res = await editGraphTableDataWithoutSubSys(formData);
|
|
} else {
|
|
// const res = await addGraphTableData(formData);
|
|
res = await addGraphTableDataWithoutSubSys(formData);
|
|
}
|
|
|
|
if (!res.isSuccess) {
|
|
openToast("error", res.msg, "#graph_add_item");
|
|
}
|
|
|
|
await props.getTableData(current_dir.value.id);
|
|
onCancel();
|
|
};
|
|
|
|
watch(
|
|
() => props.editRecord,
|
|
(newVal) => {
|
|
console.log(newVal);
|
|
if (newVal) {
|
|
// onSubSysClick(newVal.sub_system_tag);
|
|
updateFileList([
|
|
{
|
|
...newVal,
|
|
size: newVal.oriSize,
|
|
name: newVal.oriOrgName,
|
|
src: newVal.oriSavName,
|
|
ext: newVal.oriOrgName?.split(".")[1],
|
|
},
|
|
]);
|
|
openModal();
|
|
}
|
|
}
|
|
);
|
|
</script>
|
|
|
|
<template>
|
|
<button class="btn btn-add mr-3" @click.stop.prevent="openModal">
|
|
<font-awesome-icon :icon="['fas', 'plus']" />{{ $t("button.add") }}
|
|
</button>
|
|
<Modal id="graph_add_item" :title="t('graphManagement.upload')" :onCancel="onCancel" width="800">
|
|
<template #modalContent>
|
|
<form ref="form" class="mt-5">
|
|
<div class="mb-2">
|
|
<p>{{ $t("graphManagement.category") }}</p>
|
|
<p class="text-lg">{{ current_dir?.remark }}</p>
|
|
</div>
|
|
<!-- <div class="mt-5 flex">
|
|
<Select
|
|
:options="options"
|
|
Attribute="full_name"
|
|
class="mr-5"
|
|
name="sub_system_tag"
|
|
:onChange="onSubSysClick"
|
|
>
|
|
<template #topLeft>設備</template>
|
|
</Select>
|
|
<Select :options="specOptions" name="spec">
|
|
<template #topLeft name="type">規格</template>
|
|
</Select>
|
|
</div> -->
|
|
<Upload
|
|
name="oriFile"
|
|
:fileList="fileList"
|
|
:getFileList="updateFileList"
|
|
:multiple="false"
|
|
:baseUrl="`${BASEURL}/upload/graph_manage`"
|
|
/>
|
|
</form>
|
|
</template>
|
|
<template #modalAction>
|
|
<button
|
|
type="reset"
|
|
class="btn btn-outline-success mr-2"
|
|
@click.prevent="onCancel"
|
|
>
|
|
{{ $t("button.cancel") }}
|
|
</button>
|
|
<button
|
|
type="submit"
|
|
class="btn btn-outline-success"
|
|
@click.prevent="onOk"
|
|
>
|
|
{{ $t("button.submit") }}
|
|
</button>
|
|
</template>
|
|
</Modal>
|
|
</template>
|
|
|
|
<style lang="scss" scoped></style>
|