Răsfoiți Sursa

上传附件

lxf 1 an în urmă
părinte
comite
7205e714cc

+ 80 - 1
src/views/group/order/management/detail.vue

@@ -315,8 +315,22 @@
             </div>
           </div>
         </template>
-        <template #remark>
+        <template #attachments>
           <div style="width: 100%">
+            <el-upload
+              v-model:fileList="fileList"
+              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+              :data="uploadFileData"
+              multiple
+              :before-upload="beforeUpload"
+              :on-success="onSuccessFile"
+              :on-preview="onPreviewFile">
+              <el-button style="background: #20b2aa; color: #fff; border: 1px solid #20b2aa">上传</el-button>
+            </el-upload>
+          </div>
+        </template>
+        <template #remark>
+          <div style="margin: 0 2vw">
             <div v-html="getStyle(formData.data.remark)"></div>
           </div>
         </template>
@@ -473,6 +487,16 @@ const formConfig = computed(() => {
     },
     {
       type: "title",
+      title: "附件",
+      label: "",
+    },
+    {
+      type: "slot",
+      slotName: "attachments",
+      label: "附件",
+    },
+    {
+      type: "title",
       title: "订单备注",
       label: "",
     },
@@ -553,6 +577,22 @@ const getOrderDetail = (parameter) => {
       activeNames.value = allIndex;
       formOption.disabled = true;
     }
+    proxy.post("/fileInfo/getList", { businessIdList: [formData.data.id] }).then((fileObj) => {
+      if (fileObj[formData.data.id] && fileObj[formData.data.id].length > 0) {
+        let list = fileObj[formData.data.id].filter((item) => item.businessType == "0");
+        if (list && list.length > 0) {
+          fileList.value = list.map((item) => {
+            return {
+              raw: item,
+              name: item.fileName,
+              url: item.fileUrl,
+            };
+          });
+        } else {
+          fileList.value = [];
+        }
+      }
+    });
   });
 };
 const getStyle = (text) => {
@@ -633,6 +673,17 @@ const submitChangePrice = () => {
         formData.data.managementFee = calculatedAmount("managementFee");
         formData.data.packagingMaterialCost = calculatedPackagingMaterialCost();
         formData.data.totalAmount = calculatedTotalAmount();
+        if (fileList.value && fileList.value.length > 0) {
+          formData.data.fileList = fileList.value.map((item) => {
+            return {
+              id: item.raw.id,
+              fileName: item.raw.fileName,
+              fileUrl: item.raw.fileUrl,
+            };
+          });
+        } else {
+          formData.data.fileList = [];
+        }
         proxy.post("/orderInfo/edit", formData.data).then(() => {
           ElMessage({ message: "修改完成", type: "success" });
           openChangePrice.value = false;
@@ -669,6 +720,17 @@ const submitChangePrice = () => {
         formData.data.managementFee = calculatedAmount("managementFee");
         formData.data.packagingMaterialCost = calculatedPackagingMaterialCost();
         formData.data.totalAmount = calculatedTotalAmount();
+        if (fileList.value && fileList.value.length > 0) {
+          formData.data.fileList = fileList.value.map((item) => {
+            return {
+              id: item.raw.id,
+              fileName: item.raw.fileName,
+              fileUrl: item.raw.fileUrl,
+            };
+          });
+        } else {
+          formData.data.fileList = [];
+        }
         proxy.post("/orderInfo/edit", formData.data).then(() => {
           ElMessage({ message: "修改完成", type: "success" });
           openChangePrice.value = false;
@@ -779,6 +841,23 @@ const calculatedTotalAmount = () => {
   );
   return money;
 };
+const fileList = ref([]);
+const uploadFileData = ref({});
+const beforeUpload = async (file) => {
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadFileData.value = res.uploadBody;
+  file.id = res.id;
+  file.fileName = res.fileName;
+  file.fileUrl = res.fileUrl;
+  file.uploadState = true;
+  return true;
+};
+const onSuccessFile = (any, UploadFile) => {
+  UploadFile.raw.uploadState = false;
+};
+const onPreviewFile = (file) => {
+  window.open(file.raw.fileUrl, "_blank");
+};
 </script>
 
 <style lang="scss" scoped>

+ 75 - 2
src/views/subsidiary/order/management/add.vue

@@ -320,9 +320,23 @@
             </div>
           </div>
         </template>
+        <template #attachments>
+          <div style="width: 100%">
+            <el-upload
+              v-model:fileList="fileList"
+              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+              :data="uploadFileData"
+              multiple
+              :before-upload="beforeUpload"
+              :on-success="onSuccessFile"
+              :on-preview="onPreviewFile">
+              <el-button style="background: #20b2aa; color: #fff; border: 1px solid #20b2aa">上传</el-button>
+            </el-upload>
+          </div>
+        </template>
         <template #remark>
           <div style="width: 100%">
-            <div v-if="route.query && route.query.detailId">
+            <div style="margin: 0 2vw" v-if="route.query && route.query.detailId">
               <div v-html="getStyle(formData.data.remark)"></div>
             </div>
             <Editor v-else :value="formData.data.remark" @updateValue="updateValue" ref="editor" />
@@ -388,6 +402,7 @@ const formData = reactive({
   data: {
     remark: "",
     orderSkuList: [],
+    fileList: [],
   },
 });
 const formConfig = computed(() => {
@@ -471,6 +486,16 @@ const formConfig = computed(() => {
     },
     {
       type: "title",
+      title: "附件",
+      label: "",
+    },
+    {
+      type: "slot",
+      slotName: "attachments",
+      label: "附件",
+    },
+    {
+      type: "title",
       title: "订单备注",
       label: "",
     },
@@ -564,6 +589,22 @@ const submitForm = (status) => {
       formData.data.managementFee = calculatedAmount("managementFee");
       formData.data.packagingMaterialCost = calculatedPackagingMaterialCost();
       formData.data.totalAmount = calculatedTotalAmount();
+      if (fileList.value && fileList.value.length > 0) {
+        for (let i = 0; i < fileList.value.length; i++) {
+          if (fileList.value[i].raw.uploadState) {
+            return ElMessage("文件上传中,请稍后提交");
+          }
+        }
+        formData.data.fileList = fileList.value.map((item) => {
+          return {
+            id: item.raw.id,
+            fileName: item.raw.fileName,
+            fileUrl: item.raw.fileUrl,
+          };
+        });
+      } else {
+        formData.data.fileList = [];
+      }
       formData.data.status = status;
       let type = "add";
       if (formData.data.id) {
@@ -627,6 +668,22 @@ const getOrderDetail = (parameter) => {
       activeNames.value = allIndex;
       formOption.disabled = true;
     }
+    proxy.post("/fileInfo/getList", { businessIdList: [formData.data.id] }).then((fileObj) => {
+      if (fileObj[formData.data.id] && fileObj[formData.data.id].length > 0) {
+        let list = fileObj[formData.data.id].filter((item) => item.businessType == "0");
+        if (list && list.length > 0) {
+          fileList.value = list.map((item) => {
+            return {
+              raw: item,
+              name: item.fileName,
+              url: item.fileUrl,
+            };
+          });
+        } else {
+          fileList.value = [];
+        }
+      }
+    });
   });
 };
 const getStyle = (text) => {
@@ -656,7 +713,6 @@ const selectProduct = (row, SKU) => {
     if (list && list.length > 0) {
       return ElMessage("该产品已添加");
     }
-    console.log(row, SKU);
     proxy.post("/sku/detail", { id: SKU.id }).then((res) => {
       let orderSkuBomList = [];
       if (res.skuSpecList && res.skuSpecList.length > 0) {
@@ -870,6 +926,23 @@ const calculatedTotalAmount = () => {
   );
   return money;
 };
+const fileList = ref([]);
+const uploadFileData = ref({});
+const beforeUpload = async (file) => {
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadFileData.value = res.uploadBody;
+  file.id = res.id;
+  file.fileName = res.fileName;
+  file.fileUrl = res.fileUrl;
+  file.uploadState = true;
+  return true;
+};
+const onSuccessFile = (any, UploadFile) => {
+  UploadFile.raw.uploadState = false;
+};
+const onPreviewFile = (file) => {
+  window.open(file.raw.fileUrl, "_blank");
+};
 </script>
 
 <style lang="scss" scoped>

+ 69 - 1
src/views/subsidiary/order/management/design.vue

@@ -241,8 +241,22 @@
             </div>
           </div>
         </template>
-        <template #remark>
+        <template #attachments>
           <div style="width: 100%">
+            <el-upload
+              v-model:fileList="fileList"
+              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+              :data="uploadFileData"
+              multiple
+              :before-upload="beforeUpload"
+              :on-success="onSuccessFile"
+              :on-preview="onPreviewFile">
+              <el-button style="background: #20b2aa; color: #fff; border: 1px solid #20b2aa">上传</el-button>
+            </el-upload>
+          </div>
+        </template>
+        <template #remark>
+          <div style="margin: 0 2vw">
             <div v-html="getStyle(formData.data.remark)"></div>
           </div>
         </template>
@@ -350,6 +364,16 @@ const formConfig = computed(() => {
     },
     {
       type: "title",
+      title: "附件",
+      label: "",
+    },
+    {
+      type: "slot",
+      slotName: "attachments",
+      label: "附件",
+    },
+    {
+      type: "title",
       title: "订单备注",
       label: "",
     },
@@ -434,6 +458,17 @@ const submitForm = (status) => {
       formData.data.managementFee = calculatedAmount("managementFee");
       formData.data.packagingMaterialCost = calculatedPackagingMaterialCost();
       formData.data.totalAmount = calculatedTotalAmount();
+      if (fileList.value && fileList.value.length > 0) {
+        formData.data.fileList = fileList.value.map((item) => {
+          return {
+            id: item.raw.id,
+            fileName: item.raw.fileName,
+            fileUrl: item.raw.fileUrl,
+          };
+        });
+      } else {
+        formData.data.fileList = [];
+      }
       formData.data.status = status;
       let type = "add";
       if (formData.data.id) {
@@ -475,6 +510,22 @@ const getOrderDetail = (parameter) => {
       activeNames.value = allIndex;
       formOption.disabled = true;
     }
+    proxy.post("/fileInfo/getList", { businessIdList: [formData.data.id] }).then((fileObj) => {
+      if (fileObj[formData.data.id] && fileObj[formData.data.id].length > 0) {
+        let list = fileObj[formData.data.id].filter((item) => item.businessType == "0");
+        if (list && list.length > 0) {
+          fileList.value = list.map((item) => {
+            return {
+              raw: item,
+              name: item.fileName,
+              url: item.fileUrl,
+            };
+          });
+        } else {
+          fileList.value = [];
+        }
+      }
+    });
   });
 };
 const getStyle = (text) => {
@@ -639,6 +690,23 @@ const calculatedTotalAmount = () => {
   );
   return money;
 };
+const fileList = ref([]);
+const uploadFileData = ref({});
+const beforeUpload = async (file) => {
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadFileData.value = res.uploadBody;
+  file.id = res.id;
+  file.fileName = res.fileName;
+  file.fileUrl = res.fileUrl;
+  file.uploadState = true;
+  return true;
+};
+const onSuccessFile = (any, UploadFile) => {
+  UploadFile.raw.uploadState = false;
+};
+const onPreviewFile = (file) => {
+  window.open(file.raw.fileUrl, "_blank");
+};
 </script>
 
 <style lang="scss" scoped>