Quellcode durchsuchen

采购付款0.8需求

cz vor 1 Jahr
Ursprung
Commit
dd6c96a2ff

+ 176 - 63
src/components/process/PurchasePayment.vue

@@ -1,9 +1,21 @@
 <template>
   <div style="width: 100%; padding: 0px 15px">
-    <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
+    <byForm
+      :formConfig="formConfig"
+      :formOption="formOption"
+      v-model="formData.data"
+      :rules="rules"
+      ref="submit"
+    >
       <template #deadline>
         <div style="width: 100%">
-          <el-date-picker v-model="formData.data.deadline" type="date" placeholder="请选择付款期限" value-format="YYYY-MM-DD" style="width: 100%" />
+          <el-date-picker
+            v-model="formData.data.deadline"
+            type="date"
+            placeholder="请选择付款期限"
+            value-format="YYYY-MM-DD"
+            style="width: 100%"
+          />
         </div>
       </template>
       <template #receiptsNum>
@@ -15,7 +27,8 @@
             :min="0"
             :precision="0"
             :controls="false"
-            style="width: 100%" />
+            style="width: 100%"
+          />
         </div>
       </template>
       <template #rate>
@@ -28,7 +41,8 @@
             :max="100"
             :precision="2"
             :controls="false"
-            style="width: 100%" />
+            style="width: 100%"
+          />
         </div>
       </template>
       <template #fileList>
@@ -39,7 +53,8 @@
             multiple
             :data="uploadData"
             :before-upload="uploadFile"
-            :on-preview="onPreviewFile">
+            :on-preview="onPreviewFile"
+          >
             <el-button>选择</el-button>
           </el-upload>
         </div>
@@ -47,26 +62,59 @@
       <template #payDetailList>
         <div style="width: 100%">
           <el-button type="primary" @click="clickAdd()">添加行</el-button>
-          <el-table :data="formData.data.payDetailList" style="width: 100%; margin-top: 16px">
+          <el-table
+            :data="formData.data.payDetailList"
+            style="width: 100%; margin-top: 16px"
+          >
             <el-table-column label="采购合同" width="220">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
-                  <el-form-item :prop="'payDetailList.' + $index + '.purchaseId'" :rules="rules.purchaseId" :inline-message="true">
-                    <el-select v-model="row.purchaseId" placeholder="请选择采购合同" style="width: 100%" @change="changePurchaseId(row, true)">
-                      <el-option v-for="item in contractList" :key="item.value" :label="item.label" :value="item.value" />
+                  <el-form-item
+                    :prop="'payDetailList.' + $index + '.purchaseId'"
+                    :rules="rules.purchaseId"
+                    :inline-message="true"
+                  >
+                    <el-select
+                      v-model="row.purchaseId"
+                      placeholder="请选择采购合同"
+                      style="width: 100%"
+                      @change="changePurchaseId(row, true)"
+                    >
+                      <el-option
+                        v-for="item in contractList"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                      />
                     </el-select>
                   </el-form-item>
                 </div>
               </template>
             </el-table-column>
             <el-table-column prop="amount" label="合同金额" width="140" />
-            <el-table-column prop="sumPayMoney" label="已付款金额" width="140" />
-            <el-table-column prop="sumInvoiceMoney" label="已收发票金额" width="140" />
+            <el-table-column
+              prop="sumPayMoney"
+              label="已付款金额"
+              width="140"
+            />
+            <el-table-column
+              prop="sumInvoiceMoney"
+              label="已收发票金额"
+              width="140"
+            />
             <el-table-column label="款项说明">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
-                  <el-form-item :prop="'payDetailList.' + $index + '.remark'" :rules="rules.remark" :inline-message="true">
-                    <el-input v-model="row.remark" placeholder="请输入款项说明" style="width: 100%" />
+                  <el-form-item
+                    :prop="'payDetailList.' + $index + '.remark'"
+                    :rules="rules.remark"
+                    :inline-message="true"
+                  >
+                    <el-input
+                      v-model="row.remark"
+                      placeholder="请输入款项说明"
+                      style="width: 100%"
+                    />
                   </el-form-item>
                 </div>
               </template>
@@ -74,7 +122,11 @@
             <el-table-column label="付款金额" width="180">
               <template #default="{ row, $index }">
                 <div style="width: 100%">
-                  <el-form-item :prop="'payDetailList.' + $index + '.money'" :rules="rules.money" :inline-message="true">
+                  <el-form-item
+                    :prop="'payDetailList.' + $index + '.money'"
+                    :rules="rules.money"
+                    :inline-message="true"
+                  >
                     <el-input-number
                       onmousewheel="return false;"
                       v-model="row.money"
@@ -84,14 +136,17 @@
                       :controls="false"
                       :min="0"
                       :disabled="row.id"
-                      @change="changeMoney()" />
+                      @change="changeMoney()"
+                    />
                   </el-form-item>
                 </div>
               </template>
             </el-table-column>
             <el-table-column label="操作" width="80">
               <template #default="{ row, $index }">
-                <el-button type="primary" link @click="handleRemove($index)">删除</el-button>
+                <el-button type="primary" link @click="handleRemove($index)"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>
@@ -140,7 +195,9 @@ const judgeStatus = () => {
     return true;
   }
   if (props.queryData.recordList && props.queryData.recordList.length > 0) {
-    let data = props.queryData.recordList.filter((item) => item.status === 2 && item.nodeType !== 1);
+    let data = props.queryData.recordList.filter(
+      (item) => item.status === 2 && item.nodeType !== 1
+    );
     if (data && data.length > 0) {
       return true;
     }
@@ -235,7 +292,8 @@ const formConfig = computed(() => {
       slotName: "rate",
       label: "税率 (%)",
       itemWidth: 34,
-      isShow: formData.data.invoiceType == "1" || formData.data.invoiceType == "2",
+      isShow:
+        formData.data.invoiceType == "1" || formData.data.invoiceType == "2",
     },
     {
       type: "slot",
@@ -314,13 +372,19 @@ const formConfig = computed(() => {
 });
 const rules = ref({
   supplyId: [{ required: true, message: "请选择供应商", trigger: "change" }],
-  invoiceType: [{ required: true, message: "请选择发票类型", trigger: "change" }],
+  invoiceType: [
+    { required: true, message: "请选择发票类型", trigger: "change" },
+  ],
   payType: [{ required: true, message: "请选择付款方式", trigger: "change" }],
   // accountManagementId: [{ required: true, message: "请选择付款账户", trigger: "change" }],
-  purchaseId: [{ required: true, message: "请选择采购合同", trigger: "change" }],
+  purchaseId: [
+    { required: true, message: "请选择采购合同", trigger: "change" },
+  ],
   money: [{ required: true, message: "请输入付款金额", trigger: "blur" }],
   name: [{ required: true, message: "请输入户名", trigger: "blur" }],
-  advanceCode: [{ required: true, message: "请选择预付款单号", trigger: "change" }],
+  advanceCode: [
+    { required: true, message: "请选择预付款单号", trigger: "change" },
+  ],
   type: [{ required: true, message: "请选择付款类型", trigger: "change" }],
   rate: [{ required: true, message: "请输入税率", trigger: "blur" }],
 });
@@ -378,28 +442,32 @@ const getDict = () => {
         });
       }
     });
-  proxy.post("/supplierInfo/page", { pageNum: 1, pageSize: 999 }).then((res) => {
-    if (res.rows && res.rows.length > 0) {
-      supplierList.value = res.rows.map((item) => {
+  proxy
+    .post("/supplierInfo/page", { pageNum: 1, pageSize: 999 })
+    .then((res) => {
+      if (res.rows && res.rows.length > 0) {
+        supplierList.value = res.rows.map((item) => {
+          return {
+            label: item.name,
+            value: item.id,
+          };
+        });
+      }
+    });
+  proxy
+    .post("/accountManagement/page", { pageNum: 1, pageSize: 999 })
+    .then((res) => {
+      accountList.value = res.rows.map((item) => {
         return {
-          label: item.name,
+          bankName: item.name,
+          accountOpening: item.accountOpening,
+          openingBank: item.openingBank,
+          interbankNumber: item.interbankNumber,
+          label: item.alias,
           value: item.id,
         };
       });
-    }
-  });
-  proxy.post("/accountManagement/page", { pageNum: 1, pageSize: 999 }).then((res) => {
-    accountList.value = res.rows.map((item) => {
-      return {
-        bankName: item.name,
-        accountOpening: item.accountOpening,
-        openingBank: item.openingBank,
-        interbankNumber: item.interbankNumber,
-        label: item.alias,
-        value: item.id,
-      };
     });
-  });
 };
 getDict();
 const uploadFile = async (file) => {
@@ -415,21 +483,23 @@ const onPreviewFile = (file) => {
 };
 const changeSupply = async (val) => {
   if (val) {
-    await proxy.get("/purchase/getListBySupplyId", { supplyId: val }).then((res) => {
-      if (res.data && res.data.length > 0) {
-        contractList.value = res.data.map((item) => {
-          return {
-            value: item.id,
-            label: item.code,
-            amount: item.amount,
-            sumPayMoney: item.sumPayMoney,
-            sumInvoiceMoney: item.sumInvoiceMoney,
-          };
-        });
-      } else {
-        contractList.value = [];
-      }
-    });
+    await proxy
+      .get("/purchase/getListBySupplyId", { supplyId: val })
+      .then((res) => {
+        if (res.data && res.data.length > 0) {
+          contractList.value = res.data.map((item) => {
+            return {
+              value: item.id,
+              label: item.code,
+              amount: item.amount,
+              sumPayMoney: item.sumPayMoney,
+              sumInvoiceMoney: item.sumInvoiceMoney,
+            };
+          });
+        } else {
+          contractList.value = [];
+        }
+      });
   } else {
     contractList.value = [];
   }
@@ -444,7 +514,9 @@ const clickAdd = () => {
       remark: "",
     });
   } else {
-    formData.data.payDetailList = [{ purchaseId: "", money: undefined, remark: "" }];
+    formData.data.payDetailList = [
+      { purchaseId: "", money: undefined, remark: "" },
+    ];
   }
 };
 const handleRemove = (index) => {
@@ -481,7 +553,9 @@ const changeMoney = () => {
   let money = 0;
   for (let i = 0; i < formData.data.payDetailList.length; i++) {
     if (formData.data.payDetailList[i].money) {
-      money = parseFloat(Number(money) + Number(formData.data.payDetailList[i].money)).toFixed(2);
+      money = parseFloat(
+        Number(money) + Number(formData.data.payDetailList[i].money)
+      ).toFixed(2);
     }
   }
   formData.data.amount = money;
@@ -515,7 +589,10 @@ watch(
   props.queryData,
   () => {
     formOption.disabled = judgeStatus();
-    if (props.queryData && ["10", "20", "30"].includes(route.query.processType)) {
+    if (
+      props.queryData &&
+      ["10", "20", "30"].includes(route.query.processType)
+    ) {
       for (var text in props.queryData) {
         formData.data[text] = props.queryData[text];
       }
@@ -530,7 +607,11 @@ watch(
       } else {
         fileList.value = [];
       }
-      if (route.query.processType !== "30" && formData.data.payDetailList && formData.data.payDetailList.length) {
+      if (
+        route.query.processType !== "30" &&
+        formData.data.payDetailList &&
+        formData.data.payDetailList.length
+      ) {
         let ids = formData.data.payDetailList.map((item) => item.purchaseId);
         if (ids && ids.length > 0) {
           proxy.post("/purchase/getListInId", ids).then((res) => {
@@ -563,21 +644,31 @@ onMounted(async () => {
       if (ids && ids.length > 0) {
         for (let i = 0; i < ids.length; i++) {
           if (contractList.value && contractList.value.length > 0) {
-            let data = contractList.value.filter((item) => item.value === ids[i]);
+            let data = contractList.value.filter(
+              (item) => item.value === ids[i]
+            );
             if (data && data.length > 0) {
-              if (formData.data.payDetailList && formData.data.payDetailList.length > 0) {
+              if (
+                formData.data.payDetailList &&
+                formData.data.payDetailList.length > 0
+              ) {
                 formData.data.payDetailList.push({
                   purchaseId: ids[i],
                   money: undefined,
                   remark: "",
                 });
               } else {
-                formData.data.payDetailList = [{ purchaseId: ids[i], money: undefined, remark: "" }];
+                formData.data.payDetailList = [
+                  { purchaseId: ids[i], money: undefined, remark: "" },
+                ];
               }
             }
           }
         }
-        if (formData.data.payDetailList && formData.data.payDetailList.length > 0) {
+        if (
+          formData.data.payDetailList &&
+          formData.data.payDetailList.length > 0
+        ) {
           for (let i = 0; i < formData.data.payDetailList.length; i++) {
             changePurchaseId(formData.data.payDetailList[i]);
           }
@@ -587,6 +678,14 @@ onMounted(async () => {
     }
   }
 });
+// 判断当前用户有无销售合同页面权限
+const isHave = ref(false);
+if (
+  useUserStore().permissions &&
+  useUserStore().permissions.includes("contract")
+) {
+  isHave.value = true;
+}
 const getFormData = () => {
   return proxy.deepClone(formData.data);
 };
@@ -615,7 +714,9 @@ const getDecisionAids = () => {
     purchaseIdList: [],
   };
   if (formData.data.payDetailList && formData.data.payDetailList.length > 0) {
-    data.purchaseIdList = formData.data.payDetailList.map((item) => item.purchaseId);
+    data.purchaseIdList = formData.data.payDetailList.map(
+      (item) => item.purchaseId
+    );
   }
   proxy.post("/contract/payDecisionAid", data).then((res) => {
     if (res.contractList && res.contractList.length > 0) {
@@ -626,7 +727,9 @@ const getDecisionAids = () => {
             value: item.code,
             style: {
               color: "#0084FF",
+              cursor: isHave.value ? "pointer" : "revert",
             },
+            fn: isHave.value ? handlePushRoute : () => {},
             id: item.id,
             num: 1,
           },
@@ -673,7 +776,9 @@ const getDecisionAids = () => {
       auxiliaryData.value[2].data = res.purchaseInfoList.map((item) => {
         let odds = 0;
         if (item.invoiceQuantity && item.qualifiedCount) {
-          odds = parseFloat((Number(item.qualifiedCount) / Number(item.invoiceQuantity)) * 100).toFixed(2);
+          odds = parseFloat(
+            (Number(item.qualifiedCount) / Number(item.invoiceQuantity)) * 100
+          ).toFixed(2);
         }
         return [
           {
@@ -713,6 +818,14 @@ const getDecisionAids = () => {
     emit("auxiliaryChange", list);
   });
 };
+const handlePushRoute = (row) => {
+  proxy.$router.push({
+    name: "Contract",
+    query: {
+      code: row.value,
+    },
+  });
+};
 </script>
 
 <style lang="scss" scoped>

+ 1 - 1
src/views/process/processApproval/auxiliary.vue

@@ -9,7 +9,7 @@
 							<div 
 								class="value" 
 								:class="n.fn ? 'color-bl' : ''" 
-								@click="n.fn ? n.fn() : ''"
+								@click="n.fn ? n.fn(n) : ''"
 								:style="n.style || ''">
 								{{n.value}}
 							</div>