Files
info-from/src/views/info.vue
T
2025-04-24 15:54:29 +08:00

233 lines
6.6 KiB
Vue

<template>
<div class="container">
<el-form label-position="left">
<template v-for="(item, index) in fromData">
<template v-if="item.type === 'upload'">
<el-form-item :label="item.title" label-width="200px">
<FileUpload
v-model:modelValue="item.content"
v-model:loaderData="loaderData"
/>
</el-form-item>
</template>
<template v-if="item.type === 'input'">
<el-form-item
:label="item.title"
label-width="200px"
:required="item.title == '手机号'"
v-if="item.title == '手机号'"
>
<el-input
v-model="item.content"
:placeholder="'请输入' + item.title"
type="text"
/>
</el-form-item>
<el-form-item
:label="item.title"
label-width="200px"
:required="item.title == '微信号' || item.title == '需要设计的内容'"
v-else
>
<el-input
v-model="item.content"
:placeholder="'请输入' + item.title"
/>
</el-form-item>
</template>
</template>
<el-button type="primary" @click="saveData" :disabled="isSubmit">确认</el-button>
<el-button type="primary" @click="handleDownload(loaderData)"
>下载全部文件</el-button
>
</el-form>
<div style="text-align: center; margin-top: 50px">
闽ICP备2023014112号-1
</div>
</div>
</template>
<script setup>
import { getFormData, saveFormData } from "../api/index";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { handleBatchDownload } from "../utils/downFile";
const baseUrl = "https://dfdiyfile.oss-cn-fuzhou.aliyuncs.com/";
import { ref } from "vue";
import FileUpload from "../components/FileUpload/index";
const { currentRoute } = useRouter();
const tid = currentRoute.value.query.tid;
const userId = currentRoute.value.query.userId;
const fromData = ref([]);
const uploadList = ref([]);
const CeErpOrderFormData = ref({});
const loaderData = ref([]);
const isSubmit = ref(false);
async function saveData() {
if (isSubmit.value) {
return;
}
isSubmit.value = true;
setTimeout(() => {
isSubmit.value = false;
}, 2000);
let mobile = false;
let wx = false;
let need_content = false;
let mobile_number = "123";
fromData.value?.map((item) => {
console.log("🚀 ~ fromData.value?.map ~ item:", item);
if (item.title == "手机号" && !item?.content) {
mobile = true;
}
if (item.title == "手机号" && item?.content) {
mobile_number = item?.content;
}
if (item.title == "微信号" && !item?.content) {
wx = true;
}
if (item.title == "需要设计的内容" && !item?.content) {
need_content = true;
}
});
if (need_content) {
return ElMessage({
message: "需要设计的内容不能为空",
type: "error",
});
}
if (mobile && wx) {
return ElMessage({
message: "手机号或者微信号不能都为空",
type: "error",
});
}
let regex =
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
//!regex.test(mobile_number)
if (mobile_number != "123" && mobile_number.length > 20) {
return ElMessage({
message: "请输入正确手机号",
type: "error",
});
}
try {
let data = await saveFormData({
id: CeErpOrderFormData.value ? CeErpOrderFormData.value.id : 0,
tid,
userId,
content: JSON.stringify(fromData.value),
});
if (data.type === "success") {
ElMessage({
message: "保存成功",
type: "success",
});
}
} catch (error) {
ElMessage({
message: error.result,
type: "error",
});
}
}
async function getData() {
if (!tid) {
return ElMessage({
message: "获取不到参数",
type: "error",
});
}
try {
let data = await getFormData({ tid });
if (data.code === 200) {
let product = data.product;
CeErpOrderFormData.value = data.CeErpOrderFormData;
let info = {};
let json_info = `[{"title":"logo文件上传/模板截图/设计素材上传等等~","type":"upload"},
{"title":"需要设计的内容","type":"input"},
{"title":"手机号","type":"input"},
{"title":"微信号","type":"input"},
{"title":"请上传微信二维码","type":"upload"}]`;
if (!product) {
product = {
FormJson: json_info,
};
}
if (CeErpOrderFormData.value && CeErpOrderFormData.value.content) {
console.log(
"🚀 ~ getData ~ CeErpOrderFormData.value.content:",
CeErpOrderFormData.value.content
);
CeErpOrderFormData.value = {
content: JSON.parse(CeErpOrderFormData.value.content),
id: CeErpOrderFormData.value.ID,
tid: CeErpOrderFormData.value.tid,
};
CeErpOrderFormData.value?.content.map((item) => {
if (
item.type == "upload" &&
item.content &&
typeof item.content == "string"
) {
item.content?.split(",")?.map((e) => {
loaderData.value.push(baseUrl + e);
});
}
});
}
product.FormJson = json_info;
if (product && product.FormJson != "") {
let formJson = JSON.parse(product.FormJson);
let need = true;
formJson.map((item) => {
if (item.type === "upload") {
item.content = [];
} else {
item.content = "";
}
if (CeErpOrderFormData.value && CeErpOrderFormData.value.content) {
CeErpOrderFormData.value.content.map((e) => {
if (e.title === item.title && e.type === item.type) {
item.content = e.content;
}
});
}
if (item.title == "手机号") {
need = false;
}
if (item.title == "微信号") {
need = false;
}
});
if (need) {
formJson.push(
...[
{ title: "手机号", type: "input" },
{ title: "微信号", type: "input" },
]
);
}
fromData.value = formJson;
}
}
} catch (error) {
console.log("🚀 ~ file: info.vue:15 ~ getData ~ error:", error);
}
}
function handleDownload(data) {
handleBatchDownload(data);
}
getData();
</script>
<style scoped lang="scss">
.container {
max-width: 1400px;
margin: 0 auto;
}
</style>