Browse Source

Merge branch 'v3.0' into sit

snow 10 months ago
parent
commit
4663a6f003

+ 25 - 72
src/views/InvoiceSales/invoiceApply/components/approval-process/src/upload-invoice.vue

@@ -43,8 +43,8 @@ const formData = reactive({
 });
 
 
-const isFull = computed(() => { 
-  return Number( scanInvType.value) === 31 || Number(scanInvType.value) === 32
+const isFull = computed(() => {
+  return Number(scanInvType.value) === 31 || Number(scanInvType.value) === 32
 });
 
 
@@ -52,11 +52,16 @@ function handleSaveStatus() {
   formRef.value.validate(isValid => {
     if (!isValid) return;
     const { input_type: _, subtotal_fee, checkCode, ...otherParams } = formData;
+
+    const now = dayjs(new Date()).format('YYYY-MM-DD');
+    if (formData.open_date && !dayjs(formData.open_date).isSame(dayjs(now)) && !dayjs(formData.open_date).isBefore(dayjs(now))) {
+      return ElMessage.error("开票日期不能超过当前日期");
+    }
+
     let params: Record<string, string> | null = null;
 
     const type = map[scanInvType.value];
 
-    console.log(type, props.invType)
     if (scanInvType.value && String(props.invType) !== String(type)) {
       return ElMessage.error("扫描识别的发票类型与开票类型不一致");
     }
@@ -65,7 +70,7 @@ function handleSaveStatus() {
     params = {
       status: "3",
       // subtotal_fee: subtotal_fee.toFixed(2),
-      ...(isFull.value ? { total_fee: subtotal_fee.toFixed(2) } : { subtotal_fee:subtotal_fee.toFixed(2) }),
+      ...(isFull.value ? { total_fee: subtotal_fee.toFixed(2) } : { subtotal_fee: subtotal_fee.toFixed(2) }),
       ...(checkCode ? { checkCode } : {}),
       ...otherParams
     };
@@ -129,112 +134,60 @@ watchEffect(() => {
 </script>
 
 <template>
-  <el-form
-    ref="formRef"
-    :model="formData"
-    :rules="rules"
-    label-width="90px"
-    class="demo-ruleForm"
-    size="small"
-    status-icon
-  >
+  <el-form ref="formRef" :model="formData" :rules="rules" label-width="90px" class="demo-ruleForm" size="small"
+    status-icon>
     <el-row>
       <el-col :span="12">
         <el-form-item label="输入类型" prop="input_type">
-          <el-select
-            v-model="formData.input_type"
-            style="width: 100%"
-            placeholder="菜单类型"
-          >
-            <el-option
-              v-for="(si, sii) in input_type_list"
-              :key="'type' + si.value + sii"
-              :label="si.label"
-              :value="si.value"
-            />
+          <el-select v-model="formData.input_type" style="width: 100%" placeholder="菜单类型">
+            <el-option v-for="(si, sii) in input_type_list" :key="'type' + si.value + sii" :label="si.label"
+              :value="si.value" />
           </el-select>
         </el-form-item>
       </el-col>
 
-      <el-col
-        :span="24"
-        style="padding: 12px 12px 12px 16px"
-        v-if="formData.input_type === '1'"
-      >
-        <el-input
-          clearable
-          v-model="scanInputValue"
-          :rows="3"
-          type="textarea"
-          placeholder="扫码枪输入处"
-          @keydown="handleScanKeydown"
-        />
+      <el-col :span="24" style="padding: 12px 12px 12px 16px" v-if="formData.input_type === '1'">
+        <el-input clearable v-model="scanInputValue" :rows="3" type="textarea" placeholder="扫码枪输入处"
+          @keydown="handleScanKeydown" />
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="发票类型">
           <el-select style="width: 100%" v-model="scanInvType" disabled>
-            <el-option
-              v-for="inv in xs_inv_type_list"
-              :key="inv.scanValue"
-              :value="inv.scanValue"
-              :label="inv.label"
-            />
+            <el-option v-for="inv in xs_inv_type_list" :key="inv.scanValue" :value="inv.scanValue" :label="inv.label" />
           </el-select>
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="发票号码" prop="invNum">
-          <el-input
-            v-model="formData.invNum"
-            placeholder="发票号码"
-            :disabled="disabled"
-          />
+          <el-input v-model="formData.invNum" placeholder="发票号码" :disabled="disabled" />
         </el-form-item>
       </el-col>
 
       <el-col :span="8" v-if="!isFull">
         <el-form-item label="发票代码" prop="invCode">
-          <el-input
-            v-model="formData.invCode"
-            placeholder="发票代码"
-            :disabled="disabled"
-          />
+          <el-input v-model="formData.invCode" placeholder="发票代码" :disabled="disabled" />
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item label="开票日期" prop="open_date">
-          <el-date-picker
-            style="width:100%"
-            value-format="YYYY-MM-DD HH:mm:ss"
-            v-model="formData.open_date"
-            :disabled="disabled"
-          />
+          <el-date-picker style="width:100%" value-format="YYYY-MM-DD HH:mm:ss" v-model="formData.open_date"
+            :disabled="disabled" />
         </el-form-item>
       </el-col>
 
       <el-col :span="8">
         <el-form-item :label="isFull ? '税后金额' : '税前金额'" prop="subtotal_fee">
-          <el-input-number
-            v-model="formData.subtotal_fee"
-            :precision="2"
-            style="width: 100%"
-            :max="100000000"
-            :min="0"
-            :disabled="disabled"
-          />
+          <el-input-number v-model="formData.subtotal_fee" :precision="2" style="width: 100%" :max="100000000" :min="0"
+            :disabled="disabled" />
         </el-form-item>
       </el-col>
 
       <el-col :span="8" v-if="!isFull">
         <el-form-item label="校验码" prop="checkCode">
-          <el-input
-            placeholde="请输入校验码"
-            v-model="formData.checkCode"
-            :disabled="disabled"
-          />
+          <el-input placeholde="请输入校验码" v-model="formData.checkCode" :disabled="disabled" />
         </el-form-item>
       </el-col>
     </el-row>

+ 17 - 1
src/views/InvoiceSales/invoiceApply/components/execl-files-upload/index.vue

@@ -7,6 +7,8 @@ import { responseHandle } from "/@/utils/responseHandle";
 import { useNav } from "/@/layout/hooks/nav";
 import { execlUpload } from "/@/components/execlUpload";
 import { xs_inv_type_list } from "/@/utils/status";
+import dayjs from "dayjs";
+
 const visible = ref(false);
 const loading = ref(false);
 const tableData = ref([]);
@@ -74,6 +76,9 @@ const handleSubmit = async () => {
   const numberErrors: any[] = [];
   const openErrors: any[] = [];
 
+  const openDateErrors: string[] = [];
+  const now = dayjs(new Date()).format('YYYY-MM-DD');
+
   tableData.value.forEach(key => {
     const obj: Record<string, string> = {};
     for (let i in key) {
@@ -89,6 +94,8 @@ const handleSubmit = async () => {
   data.forEach((item, index) => {
     const { inv_type } = item;
 
+    console.log(item);
+
     const invType = xs_inv_type_list.find(
       ({ label }) => label === inv_type.trim()
     );
@@ -107,6 +114,9 @@ const handleSubmit = async () => {
        checkedErrors.push(index + 1);
     }
 
+    if(item.open_date && !dayjs(item.open_date).isSame(dayjs(now)) && !dayjs(item.open_date).isBefore(dayjs(now))){
+        openDateErrors.push(String(index + 1))
+    }
 
     if (
       (item.inv_type === "fully_digitalized_special_electronic" || item.inv_type === "fully_digitalized_normal_electronic") &&
@@ -129,7 +139,13 @@ const handleSubmit = async () => {
        numberErrors.push(index + 1);
     }
   });
-  
+
+
+  if (openDateErrors.length > 0) {
+    ElMessage.error(`第 ${openDateErrors.join(",")} 行,开票日期不能大于当前日期`);
+    loading.value = false;
+    return;
+  }
 
   if (checkedErrors.length > 0) {
     ElMessage.error(`第 ${checkedErrors.join(",")} 行校验码不能为空`);

+ 22 - 0
src/views/purchase/ticketReturn/components/execl-files-upload-inv/index.vue

@@ -6,6 +6,8 @@ import { httpBatchAdd } from "/@/api/purchase/ticketReturn";
 import { useResponseHandle } from "/@/hooks";
 import { useCompany } from "/@/hooks/core/useCompany";
 
+import dayjs from "dayjs"
+
 import {
   initheaders,
   columns,
@@ -88,6 +90,11 @@ const Uploadsuccess = ({ results, header }) => {
     const numberErrors: string[] = [];
     const priceErrors: string[] = [];
 
+    
+  const openDateErrors: string[] = [];
+  const now = dayjs(new Date()).format('YYYY-MM-DD');
+
+
     data.forEach((row, index) => {
       const source = row.invoiceType.trim();
       const target = cg_inv_type_list.find(({ label }) => label === source);
@@ -105,6 +112,10 @@ const Uploadsuccess = ({ results, header }) => {
         }
       }
 
+      if(row.open_time && !dayjs(row.open_time).isSame(dayjs(now)) && !dayjs(row.open_time).isBefore(dayjs(now))){
+        openDateErrors.push(String(index + 1))
+      }
+
       const reg = /^\d+(\.\d+)?$/;
 
       if (!reg.test(row.invoiceCode)) {
@@ -172,6 +183,17 @@ const Uploadsuccess = ({ results, header }) => {
       return;
     }
 
+    if (openDateErrors.length > 0) {
+      ElMessage({
+        type: "error",
+        message: `第 ${openDateErrors.join(",")} 行,开票日期不能超过当前日期`
+      });
+      loading.value = false;
+      tableData.value = [];
+      return;
+    }
+
+
   loading.value = false;
 };
 

+ 11 - 1
src/views/purchase/ticketReturn/components/invoice-form.vue

@@ -66,6 +66,11 @@ function handleSave() {
         return ElMessage.error("上传图片不能超过100张");
     }
 
+    const now = dayjs(new Date()).format('YYYY-MM-DD');
+    if(formData.value.open_time &&  !dayjs(formData.value.open_time).isSame(dayjs(now)) && !dayjs(formData.value.open_time).isBefore(dayjs(now))){
+        return ElMessage.error("开票日期不能超过当前日期");;
+     }
+
     emit(
       "change",
       invType.value === "2"
@@ -90,6 +95,11 @@ function handlCurrentSave() {
       if (imgs.value.length > 100)
         return ElMessage.error("上传图片不能超过100张");
     }
+      
+    const now = dayjs(new Date()).format('YYYY-MM-DD');
+    if(formData.value.open_time &&  !dayjs(formData.value.open_time).isSame(dayjs(now)) && !dayjs(formData.value.open_time).isBefore(dayjs(now))){
+        return ElMessage.error("开票日期不能超过当前日期");;
+     }
 
     emit(
       "change",
@@ -287,7 +297,7 @@ electronicsHiddens;
           <template v-else-if="item.prop === 'open_time'">
             <el-date-picker
               v-model="formData[item.prop]"
-              :disabled-date="disabledDate"
+              :disabledDate="disabledDate"
               value-format="YYYY-MM-DD HH:mm:ss"
               placeholder="请输入开票日期"
             />

+ 18 - 0
src/views/supply/ticketReturn/components/execl-files-upload/index.vue

@@ -5,6 +5,7 @@ import { execlUpload } from "/@/components/execlUpload";
 import { httpBatchAdd } from "/@/api/purchase/ticketReturn";
 import { useResponseHandle } from "/@/hooks";
 import { useCompany } from "/@/hooks/core/useCompany";
+import dayjs from "dayjs"
 
 import {
   initheaders,
@@ -88,6 +89,9 @@ const Uploadsuccess = ({ results, header }) => {
     const numberErrors: string[] = [];
     const priceErrors: string[] = [];
 
+    const openDateErrors: string[] = [];
+  const now = dayjs(new Date()).format('YYYY-MM-DD');
+
     data.forEach((row, index) => {
       const source = row.invoiceType.trim();
       const target = cg_inv_type_list.find(({ label }) => label === source);
@@ -105,6 +109,10 @@ const Uploadsuccess = ({ results, header }) => {
         }
       }
 
+      if(row.open_time && !dayjs(row.open_time).isSame(dayjs(now)) && !dayjs(row.open_time).isBefore(dayjs(now))){
+        openDateErrors.push(String(index + 1))
+      }
+
       const reg = /^\d+(\.\d+)?$/;
 
       if (!reg.test(row.invoiceCode)) {
@@ -172,6 +180,16 @@ const Uploadsuccess = ({ results, header }) => {
       return;
     }
 
+    if (openDateErrors.length > 0) {
+      ElMessage({
+        type: "error",
+        message: `第 ${openDateErrors.join(",")} 行,开票日期不能超过当前日期`
+      });
+      loading.value = false;
+      tableData.value = [];
+      return;
+    }
+
   loading.value = false;
 };
 

+ 11 - 1
src/views/supply/ticketReturn/components/invoice-form.vue

@@ -9,6 +9,7 @@ import { INPUT_MAX_LENGTH } from "/@/utils/global";
 import { cg_inv_type_list } from "/@/utils/status";
 import { invoceRules } from "../config/_rules";
 
+
 const emit = defineEmits(["change"]);
 
 const visible = ref(false);
@@ -66,6 +67,11 @@ function handleSave() {
         return ElMessage.error("上传图片不能超过100张");
     }
 
+    const now = dayjs(new Date()).format('YYYY-MM-DD');
+    if(formData.value.open_time &&  !dayjs(formData.value.open_time).isSame(dayjs(now)) && !dayjs(formData.value.open_time).isBefore(dayjs(now))){
+        return ElMessage.error("开票日期不能超过当前日期");;
+     }
+
     emit(
       "change",
       invType.value === "2"
@@ -91,6 +97,11 @@ function handlCurrentSave() {
         return ElMessage.error("上传图片不能超过100张");
     }
 
+    const now = dayjs(new Date()).format('YYYY-MM-DD');
+    if(formData.value.open_time &&  !dayjs(formData.value.open_time).isSame(dayjs(now)) && !dayjs(formData.value.open_time).isBefore(dayjs(now))){
+        return ElMessage.error("开票日期不能超过当前日期");;
+     }
+
     emit(
       "change",
       invType.value === "2"
@@ -287,7 +298,6 @@ electronicsHiddens;
           <template v-else-if="item.prop === 'open_time'">
             <el-date-picker
               v-model="formData[item.prop]"
-              :disabled-date="disabledDate"
               value-format="YYYY-MM-DD HH:mm:ss"
               placeholder="请输入开票日期"
             />