cz 1 год назад
Родитель
Сommit
46d062094a

+ 101 - 40
src/components/WDLY/process/SendPurchaseWDLY.vue

@@ -233,6 +233,32 @@
           </el-table-column>
         </el-table>
       </el-form-item>
+
+      <el-row :gutter="10">
+        <el-col :span="4">
+          <el-form-item label="运费" prop="freight">
+            <el-input-number
+              v-model="formData.data.freight"
+              :precision="4"
+              :min="0"
+              :controls="false"
+              @change="handleChangeAmount"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="4">
+          <el-form-item label="优惠" prop="preferential">
+            <el-input-number
+              v-model="formData.data.preferential"
+              :precision="4"
+              :controls="false"
+              @change="handleChangeAmount"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
       <div class="_t" style="margin-bottom: 15px">采购总金额</div>
       <el-row>
         <el-col :span="4">
@@ -245,6 +271,21 @@
           </el-form-item>
         </el-col>
       </el-row>
+      <el-form-item label="上传附件">
+        <div style="width: 100%">
+          <el-upload
+            v-model:fileList="fileList"
+            action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+            :data="uploadData"
+            multiple
+            :before-upload="handleBeforeUpload"
+            :on-success="handleSuccess"
+            :on-preview="onPreviewFile"
+          >
+            <el-button>选择</el-button>
+          </el-upload>
+        </div>
+      </el-form-item>
     </el-form>
     <el-dialog
       v-model="openProduct"
@@ -295,13 +336,33 @@ let rules = ref({
   contractCode: [
     { required: true, message: "请输入采购单号", trigger: "blur" },
   ],
+  freight: [{ required: true, message: "请输入运费", trigger: "blur" }],
+  preferential: [{ required: true, message: "请输入优惠", trigger: "blur" }],
 });
 let rulesOne = ref({
   name: [{ required: true, message: "请输入费用名称", trigger: "blur" }],
   price: [{ required: true, message: "请输入金额", trigger: "blur" }],
 });
+const openProduct = ref(false);
+// 上传附件
+const uploadData = ref({});
+const fileList = ref([]);
+const handleBeforeUpload = async (file) => {
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadData.value = res.uploadBody;
+  file.id = res.id;
+  file.fileName = res.fileName;
+  file.fileUrl = res.fileUrl;
+  file.uploadState = true;
+  return true;
+};
+const handleSuccess = (any, UploadFile) => {
+  UploadFile.raw.uploadState = false;
+};
+const onPreviewFile = (file) => {
+  window.open(file.raw.fileUrl, "_blank");
+};
 
-let openProduct = ref(false);
 const handleAdd = () => {
   formData.data.otherFeeList.push({
     name: "",
@@ -379,6 +440,24 @@ const handleSubmit = async () => {
           }
         }
       }
+      if (fileList.value && fileList.value.length > 0) {
+        for (let i = 0; i < fileList.value.length; i++) {
+          if (fileList.value[i].raw.uploadState) {
+            ElMessage("文件上传中,请稍后提交");
+            return false;
+          }
+        }
+        formData.data.fileList = fileList.value.map((item) => {
+          return {
+            id: item.raw.id,
+            fileName: item.raw.fileName,
+            fileUrl: item.raw.fileUrl,
+            uploadState: item.raw.uploadState,
+          };
+        });
+      } else {
+        formData.data.fileList = [];
+      }
       return true;
     }
     ElMessage({
@@ -398,12 +477,15 @@ onMounted(() => {
   formData.data.purchaseName = userInfo.nickName;
   getSupplierList();
   if (!route.query.processType) {
+    formData.data.freight = 0;
+    formData.data.preferential = 0;
     ids.value = props.queryData.ids.split(",") || [];
     getDetails();
   } else {
+    let val = route.query.businessId;
     proxy
       .post("/purchase/detail", {
-        id: route.query.businessId,
+        id: val,
       })
       .then((res) => {
         let jsonData = {};
@@ -419,45 +501,22 @@ onMounted(() => {
           })
         );
       });
+
+    proxy
+      .post("/fileInfo/getList", { businessIdList: [val] })
+      .then((fileObj) => {
+        formData.data.fileList = fileObj[val] || [];
+        if (formData.data.fileList && formData.data.fileList.length > 0) {
+          fileList.value = formData.data.fileList.map((item) => {
+            return {
+              raw: item,
+              name: item.fileName,
+              url: item.fileUrl,
+            };
+          });
+        }
+      });
   }
-  setTimeout(() => {
-    if (!props.queryData.purchaseDetailList) return;
-    // formData.data = props.queryData;
-    // proxy
-    //   .post("/subscribeDetail/detail", {
-    //     ids: props.queryData.purchaseDetailList.map((item) => {
-    //       return item.subscribeDetailId;
-    //     }),
-    //   })
-    //   .then((res) => {
-    //     formData.data.purchaseDetailList =
-    //       props.queryData.purchaseDetailList.map((x, index) => ({
-    //         ...res[index],
-    //         subscribeCount: x.count,
-    //         count: x.count,
-    //         price: x.price,
-    //         amount: x.amount,
-    //       }));
-    //   });
-    // proxy
-    //   .post("/purchase/detail", {
-    //     id: route.query.businessId,
-    //   })
-    //   .then((res) => {
-    //     let jsonData = {};
-    //     if (res.victoriatouristJson) {
-    //       jsonData = JSON.parse(res.victoriatouristJson);
-    //     }
-    //     formData.data = { ...res, ...jsonData };
-    //     formData.data.purchaseDetailList = formData.data.purchaseDetailList.map(
-    //       (x) => ({
-    //         ...x,
-    //         subscribeCount: x.subscribeQuantity,
-    //         purchaseCount: x.purchaseQuantity,
-    //       })
-    //     );
-    //   });
-  }, 2000);
 });
 
 // 接收父组件的传值
@@ -540,6 +599,8 @@ const handleChangeAmount = () => {
     const e = formData.data.otherFeeList[i];
     sum += Number(e.price);
   }
+  sum += formData.data.freight;
+  sum += formData.data.preferential;
   formData.data.amount = parseFloat(sum).toFixed(4);
 };
 

+ 6 - 2
src/views/WDLY/outInBound/abnormal/index.vue

@@ -192,8 +192,12 @@
                     >
                       <div default>
                         <el-table :data="row.purchaseBackDetailsList">
-                          <el-table-column label="退货时间" prop="createTime" />
-                          <el-table-column label="数量" prop="quantity" />
+                          <el-table-column label="申请时间" prop="createTime" />
+                          <el-table-column label="申请数量" prop="quantity" />
+                          <el-table-column
+                            label="已退数量"
+                            prop="returnedQuantity"
+                          />
                         </el-table>
                       </div>
                       <template #reference>

+ 6 - 2
src/views/WDLY/outInBound/logistics/index.vue

@@ -240,8 +240,12 @@
                     >
                       <div default>
                         <el-table :data="row.purchaseBackDetailsList">
-                          <el-table-column label="退货时间" prop="createTime" />
-                          <el-table-column label="数量" prop="quantity" />
+                          <el-table-column label="申请时间" prop="createTime" />
+                          <el-table-column label="申请数量" prop="quantity" />
+                          <el-table-column
+                            label="已退数量"
+                            prop="returnedQuantity"
+                          />
                         </el-table>
                       </div>
                       <template #reference>

+ 11 - 39
src/views/WDLY/purchaseManage/alreadyPurchase/index.vue

@@ -1,6 +1,5 @@
 <template>
   <div class="tenant">
-    <!-- <Banner /> -->
     <div class="content">
       <byTable
         :source="sourceList.data"
@@ -36,55 +35,24 @@
 
         <template #btn="{ item }">
           <div>
-            <el-button type="primary" link @click="handleReturnGoods(item)"
-              >退货</el-button
-            >
-            <!-- <el-button
-              type="primary"
-              link
-              v-if="
-                (item.purchaseStatus == 20 || item.purchaseStatus == 30) &&
-                item.arrivalStatus != 20
-              "
-              @click="handleArrival(item, 'add')"
-              >发货登记</el-button
-            >
-            <el-button
-              type="primary"
-              link
-              v-if="
-                (item.purchaseStatus == 20 || item.purchaseStatus == 30) &&
-                item.arrivalStatus != 20
-              "
-              @click="handleArrival(item, 'edit')"
-              >到货通知</el-button
-            >
             <el-button
               type="primary"
+              v-if="item.purchaseStatus == 30"
               link
-              v-if="item.purchaseStatus == 30 && item.arrivalStatus == 10"
-              @click="handleEdit(item, 88)"
-              >作废</el-button
+              @click="handleReturnGoods(item)"
+              >退货</el-button
             >
             <el-button
               type="primary"
               link
-              v-if="item.purchaseStatus == 30 && item.arrivalStatus == 0"
-              @click="handleEdit(item, 99)"
-              >结束</el-button
-            > -->
-
-            <el-button
-              type="primary"
-              link
-              v-if="item.purchaseStatus != 99"
+              v-if="item.purchaseStatus == 30 && item.purchaseStatus != 99"
               @click="handleArrival(item, 'add')"
               >发货登记</el-button
             >
             <el-button
               type="primary"
               link
-              v-if="item.purchaseStatus != 99"
+              v-if="item.purchaseStatus == 30 && item.purchaseStatus != 99"
               @click="handleArrival(item, 'edit')"
               >到货通知</el-button
             >
@@ -370,8 +338,12 @@
                     >
                       <div default>
                         <el-table :data="row.purchaseBackDetailsList">
-                          <el-table-column label="退货时间" prop="createTime" />
-                          <el-table-column label="数量" prop="quantity" />
+                          <el-table-column label="申请时间" prop="createTime" />
+                          <el-table-column label="申请数量" prop="quantity" />
+                          <el-table-column
+                            label="已退数量"
+                            prop="returnedQuantity"
+                          />
                         </el-table>
                       </div>
                       <template #reference>

+ 31 - 10
src/views/WDLY/purchaseManage/payment/index.vue

@@ -97,6 +97,7 @@
                       :controls="false"
                       :min="0"
                       onmousewheel="return false;"
+                      @change="handleChangeAmount"
                     />
                   </el-form-item>
                 </template>
@@ -211,6 +212,7 @@ const paymentStatus = ref([
     value: "30",
   },
 ]);
+const alreadyPurchase = ref([]);
 const selectConfig = computed(() => [
   {
     label: "到货状态",
@@ -222,6 +224,11 @@ const selectConfig = computed(() => [
     prop: "payStatus",
     data: paymentStatus.value,
   },
+  {
+    label: "采购人",
+    prop: "purchaseUserId",
+    data: alreadyPurchase.value,
+  },
 ]);
 const config = computed(() => {
   return [
@@ -354,6 +361,7 @@ let formConfig = computed(() => [
     precision: 4,
     min: 0,
     controls: false,
+    disabled: true,
   },
   {
     type: "title",
@@ -394,13 +402,13 @@ const submitForm = () => {
         });
       }
     }
-    const total = list.reduce((total, x) => (total += Number(x.amount)), 0);
-    if (Number(formData.data.amount) != total) {
-      return ElMessage({
-        message: "本次付款合计必须等于上方的付款金额",
-        type: "info",
-      });
-    }
+    // const total = list.reduce((total, x) => (total += Number(x.amount)), 0);
+    // if (Number(formData.data.amount) != total) {
+    //   return ElMessage({
+    //     message: "本次付款合计必须等于上方的付款金额",
+    //     type: "info",
+    //   });
+    // }
     proxy.post("/purchasePayRecord/add", formData.data).then(
       (res) => {
         ElMessage({
@@ -408,9 +416,7 @@ const submitForm = () => {
           type: "success",
         });
         handleClose();
-        setTimeout(() => {
-          submitLoading.value = false;
-        }, 5000);
+        submitLoading.value = false;
         getList();
       },
       (err) => {
@@ -524,8 +530,23 @@ const handleClear = (row) => {
       });
   });
 };
+
+const handleChangeAmount = () => {
+  let amount = 0;
+  for (let i = 0; i < formData.data.purchasePayRecordDetailList.length; i++) {
+    const e = formData.data.purchasePayRecordDetailList[i];
+    amount += e.amount;
+  }
+  formData.data.amount = parseFloat(amount).toFixed(4);
+};
 const accountData = ref([]);
 const getDict = () => {
+  proxy.get("/purchase/getPurchaseUserList").then((res) => {
+    alreadyPurchase.value = res.data.map((x) => ({
+      label: x.nickName,
+      value: x.userId,
+    }));
+  });
   proxy.getDictOne(["purchase_payment_account"]).then((res) => {
     accountData.value = res["purchase_payment_account"].map((x) => ({
       label: x.dictValue,

+ 76 - 5
src/views/WDLY/stockManage/query/index.vue

@@ -14,6 +14,23 @@
         <el-tab-pane label="按SPU" name="three"></el-tab-pane>
       </el-tabs>
       <byTable
+        v-if="activeName === 'first' || activeName === 'three'"
+        :source="sourceList.data"
+        :pagination="sourceList.pagination"
+        :config="config"
+        :loading="loading"
+        highlight-current-row
+        :selectConfig="selectConfig"
+        :table-events="{
+          //element talbe事件都能传
+          select: select,
+        }"
+        :action-list="[]"
+        @get-list="getList"
+      >
+      </byTable>
+      <byTable
+        v-if="activeName === 'second'"
         :source="sourceList.data"
         :pagination="sourceList.pagination"
         :config="config"
@@ -196,25 +213,50 @@ const configData = [
       attrs: {
         label: "可用库存",
         prop: "quantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.quantity) - Number(b.quantity);
+        },
       },
     },
     {
       attrs: {
         label: "冻结库存",
         prop: "frozenQuantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.frozenQuantity) - Number(b.frozenQuantity);
+        },
       },
     },
     {
       attrs: {
         label: "次品库存",
         prop: "defectiveQuantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.defectiveQuantity) - Number(b.defectiveQuantity);
+        },
+      },
+    },
+    {
+      attrs: {
+        label: "最近入库时间",
+        prop: "updateTime",
+        width: 155,
+        sortable: true,
+        "sort-method": (a, b) => {
+          return (
+            new Date(a.updateTime).getTime() - new Date(b.updateTime).getTime()
+          );
+        },
       },
     },
     {
       attrs: {
         label: "操作",
-        width: "200",
-        align: "right",
+        width: "140",
+        align: "center",
       },
       // 渲染 el-button,一般用在最后一列。
       renderHTML(row) {
@@ -283,25 +325,50 @@ const configData = [
       attrs: {
         label: "可用库存",
         prop: "quantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.quantity) - Number(b.quantity);
+        },
       },
     },
     {
       attrs: {
         label: "冻结库存",
         prop: "frozenQuantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.frozenQuantity) - Number(b.frozenQuantity);
+        },
       },
     },
     {
       attrs: {
         label: "次品库存",
         prop: "defectiveQuantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.defectiveQuantity) - Number(b.defectiveQuantity);
+        },
+      },
+    },
+    {
+      attrs: {
+        label: "最近入库时间",
+        prop: "updateTime",
+        width: 155,
+        sortable: true,
+        "sort-method": (a, b) => {
+          return (
+            new Date(a.updateTime).getTime() - new Date(b.updateTime).getTime()
+          );
+        },
       },
     },
     {
       attrs: {
         label: "操作",
-        width: "200",
-        align: "right",
+        width: "140",
+        align: "center",
       },
       // 渲染 el-button,一般用在最后一列。
       renderHTML(row) {
@@ -355,6 +422,10 @@ const configData = [
       attrs: {
         label: "库存数量",
         prop: "quantity",
+        sortable: true,
+        "sort-method": (a, b) => {
+          return Number(a.quantity) - Number(b.quantity);
+        },
       },
     },
   ],
@@ -394,7 +465,6 @@ const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   loading.value = true;
   proxy.post(requestUrl, sourceList.value.pagination).then((message) => {
-    console.log(message);
     sourceList.value.data = message.rows.map((x) => ({
       ...x,
       ...JSON.parse(x.victoriatouristJson),
@@ -450,6 +520,7 @@ getList();
 
 const handleChange = () => {
   sourceList.value.pagination.pageNum = 1;
+  sourceList.value.data = [];
   if (activeName.value === "first") {
     requestUrl = "/stock/pageByWarehouse";
     selectConfig.value = selectConfigData[0];

+ 4 - 5
src/views/process/processApproval/index.vue

@@ -310,7 +310,7 @@ const handleSubmit = async (_type) => {
                 count: x.count,
                 price: x.price,
                 amount: x.amount,
-                deptId: x.deptId,
+                deptId: x.productDeptId,
                 id: x.id,
               }));
             } else {
@@ -328,6 +328,8 @@ const handleSubmit = async (_type) => {
               paymentMethod: data.paymentMethod,
               otherFeeList: data.otherFeeList,
               contractCode: data.contractCode,
+              freight: data.freight,
+              preferential: data.preferential,
             };
             data.victoriatouristJson = JSON.stringify(victoriatouristJson);
           } else if (flowForm.flowKey == "sale_quotation_flow") {
@@ -441,7 +443,7 @@ const handleSubmit = async (_type) => {
               proxy
                 .post("/flowExample/setStartData", {
                   exampleId: route.query.id,
-                  startDate: data,
+                  startData: data,
                 })
                 .then();
             }
@@ -471,7 +473,6 @@ const skipPage = () => {
     });
   } else {
     const useTagsStore = useTagsViewStore();
-    console.log(useTagsStore);
     useTagsStore.delVisitedView(router.currentRoute.value);
     ElMessage({
       message: "操作成功!",
@@ -559,7 +560,6 @@ const getRecords = (_id) => {
         id: _id,
       })
       .then((res) => {
-        console.log(res, "ass");
         recordList.value = res.recordList;
         queryData.data.recordList = res.recordList;
         approvalRecordData.value = res;
@@ -570,7 +570,6 @@ const getRecords = (_id) => {
         flowKey: flowForm.flowKey,
       })
       .then((res) => {
-        console.log(res, "ass");
         recordList.value = res;
       });
   }