/* * @Author: 秦少卫 * @Date: 2024-06-09 13:02:18 * @LastEditors: 秦少卫 * @LastEditTime: 2024-06-10 20:21:41 * @Description: 管理面板管理 */ import { updataTempl, uploadImg, deleteImg, getTempl, createdTempl } from '@/api/admin'; import { Spin } from 'view-ui-plus'; import { useRouter } from 'vue-router'; export default function useMaterial() { const canvasEditor = inject('canvasEditor'); const router = useRouter(); // 画布转图片 const uploadFileToInfo = async () => { const dataURLtoFile = (dataurl, filename) => { var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], filename, { type: mime }); }; const upload = (base64) => { const file = dataURLtoFile(base64, '123.png'); const formData = new FormData(); const time = new Date(); formData.append('files', file, `${time.getTime()}`); return uploadImg(formData) .then((res) => { const [info] = res.data; return info; }) .catch((err) => { console.log(err); }); }; const base64 = await canvasEditor.preview(); // 上传图片 const fileInfo = await upload(base64); return fileInfo.id; }; // 更新详情 const updataTemplHander = async (id) => { Spin.show(); try { const { data: info } = await getTempl(id); const newImgId = await uploadFileToInfo(); const json = canvasEditor.getJson(); await updataTempl(info.id, { ...info, img: newImgId, json, }); deleteImg(info.img.id); } catch (error) { console.log(error); } Spin.hide(); }; const createdTemplHander = async (name) => { Spin.show(); try { const newImgId = await uploadFileToInfo(); const json = canvasEditor.getJson(); const res = await createdTempl({ name, img: newImgId, json, }); router.replace('/?tempId=' + res.data.id + '&admin=true'); } catch (error) { console.log(error); } Spin.hide(); }; return { updataTemplHander, createdTemplHander, }; }