|
@@ -2,7 +2,7 @@
|
|
|
import { ref } from "vue";
|
|
|
import { ElMessage } from "element-plus";
|
|
|
import { execlUpload } from "/@/components/execlUpload";
|
|
|
-import { httpBatchAdd } from "/@/api/purchase/ticketReturn";
|
|
|
+import { httpBatchimport } from "/@/api/purchase/ticketReturn";
|
|
|
import { useResponseHandle } from "/@/hooks";
|
|
|
import { useCompany } from "/@/hooks/core/useCompany";
|
|
|
|
|
@@ -12,7 +12,6 @@ import {
|
|
|
mapProp,
|
|
|
requireHeaders
|
|
|
} from "./columns-config";
|
|
|
-import { cg_inv_type_list } from "/@/utils/status";
|
|
|
|
|
|
const visible = ref(false);
|
|
|
const loading = ref(false);
|
|
@@ -20,13 +19,6 @@ const tableData = ref([]);
|
|
|
const columnsConfig = columns();
|
|
|
const emit = defineEmits(["onSuccess"]);
|
|
|
|
|
|
-const allTypes = cg_inv_type_list.map(({ label }) => label);
|
|
|
-
|
|
|
-const row = ref(1);
|
|
|
-
|
|
|
-const createInvErrorMessage = (row: string) =>
|
|
|
- `导入数据第 ${row} 行 发票类型格式不正确,发票类型必须为${allTypes.join(",")}`;
|
|
|
-
|
|
|
const { currentCompany } = useCompany();
|
|
|
|
|
|
const responseHandle = useResponseHandle();
|
|
@@ -58,18 +50,19 @@ const Uploadsuccess = ({ results, header }) => {
|
|
|
}
|
|
|
tableData.value = [];
|
|
|
|
|
|
- for (const v1 of results) {
|
|
|
- const b = Object.values(v1);
|
|
|
- let model = {};
|
|
|
- b.forEach((si, sii) => {
|
|
|
- model["value" + sii] = si + "";
|
|
|
- });
|
|
|
- tableData.value.push(model);
|
|
|
-
|
|
|
- row.value = row.value + 1;
|
|
|
+ try {
|
|
|
+ for (const v1 of results) {
|
|
|
+ const b = Object.values(v1);
|
|
|
+ let model = {};
|
|
|
+ b.forEach((si, sii) => {
|
|
|
+ model["value" + sii] = si + "";
|
|
|
+ });
|
|
|
+ tableData.value.push(model);
|
|
|
+ }
|
|
|
+ loading.value = false;
|
|
|
+ } catch (err) {
|
|
|
+ return err;
|
|
|
}
|
|
|
-
|
|
|
- loading.value = false;
|
|
|
};
|
|
|
//提交
|
|
|
const handleSubmit = async () => {
|
|
@@ -77,6 +70,9 @@ const handleSubmit = async () => {
|
|
|
loading.value = true;
|
|
|
|
|
|
const data = [];
|
|
|
+ const errorStatus = [];
|
|
|
+ const errorHp = [];
|
|
|
+ const errorDz = [];
|
|
|
|
|
|
tableData.value.forEach((key, index) => {
|
|
|
const obj: Record<string, string> = {};
|
|
@@ -84,75 +80,77 @@ const handleSubmit = async () => {
|
|
|
for (let i in key) {
|
|
|
const prop = mapProp[i];
|
|
|
const value = key[i];
|
|
|
- obj[prop] = value;
|
|
|
+ if (prop === "status") {
|
|
|
+ const trimValue = value.trim();
|
|
|
+ if (trimValue !== "通过" && trimValue !== "驳回") {
|
|
|
+ errorStatus.push(index + 1);
|
|
|
+ } else {
|
|
|
+ obj[prop] = trimValue === "通过" ? "4" : "7";
|
|
|
+ }
|
|
|
+ } else if (prop === "hpNo") {
|
|
|
+ if (!value) errorHp.push(index + 1);
|
|
|
+ obj[prop] = value;
|
|
|
+ } else if (prop === "payNo") {
|
|
|
+ if (!value) errorDz.push(index + 1);
|
|
|
+ obj[prop] = value;
|
|
|
+ } else {
|
|
|
+ obj[prop] = value;
|
|
|
+ }
|
|
|
}
|
|
|
data.push(obj);
|
|
|
});
|
|
|
|
|
|
- const typeErrors: string[] = [];
|
|
|
- const checkErrors: string[] = [];
|
|
|
-
|
|
|
- data.forEach((row, index) => {
|
|
|
- const source = row.invoiceType.trim();
|
|
|
- const target = cg_inv_type_list.find(({ label }) => label === source);
|
|
|
-
|
|
|
- if (!target) {
|
|
|
- typeErrors.push(String(index + 1));
|
|
|
- } else {
|
|
|
- row.invoiceType = target.value;
|
|
|
-
|
|
|
- if (
|
|
|
- (target.value === "normal" || target.value === "electronic") &&
|
|
|
- !row.checkNumber
|
|
|
- ) {
|
|
|
- checkErrors.push(String(index + 1));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- console.log(row);
|
|
|
- });
|
|
|
+ const buyers = data.map(({ companyNo }) => companyNo);
|
|
|
+ const setBuyers = [...new Set(buyers)];
|
|
|
|
|
|
- if (typeErrors.length > 0) {
|
|
|
- ElMessage({
|
|
|
- type: "error",
|
|
|
- message: createInvErrorMessage(typeErrors.join(","))
|
|
|
- });
|
|
|
+ if (errorStatus.length > 0) {
|
|
|
+ ElMessage.error(
|
|
|
+ `第 ${errorStatus.join(",")} 行审核状态格式不正确,应该为'通过',或'驳回'`
|
|
|
+ );
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (checkErrors.length > 0) {
|
|
|
- ElMessage({
|
|
|
- type: "error",
|
|
|
- message: `第 ${checkErrors.join(",")} 行,校验码不能为空。`
|
|
|
- });
|
|
|
+ if (errorHp.length > 0) {
|
|
|
+ ElMessage.error(
|
|
|
+ `第 ${errorHp.join(",")} 行格式不正确,回票申请编码为必填项`
|
|
|
+ );
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- const buyers = data.map(({ supplierNo }) => supplierNo);
|
|
|
- const setBuyers = [...new Set(buyers)];
|
|
|
-
|
|
|
- if (setBuyers.length > 1) {
|
|
|
- ElMessage.error("卖方公司编码不一致");
|
|
|
+ if (errorDz.length > 0) {
|
|
|
+ ElMessage.error(`第 ${errorDz.join(",")} 行格式不正确,对账编码为必填项`);
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (setBuyers[0] !== currentCompany.value.companyNo) {
|
|
|
- ElMessage.error("卖方公司编码与当前选择的公司不一致");
|
|
|
+ if (setBuyers.length > 1) {
|
|
|
+ ElMessage.error("买方公司编码不一致");
|
|
|
loading.value = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // if (setBuyers[0] !== currentCompany.value.companyNo) {
|
|
|
+ // ElMessage.error("买方公司编码与当前选择的公司不一致");
|
|
|
+ // loading.value = false;
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ const companyNo = data[0].companyNo
|
|
|
+
|
|
|
data.forEach(item => {
|
|
|
- delete item["supplierNo"];
|
|
|
+ delete item["payNo"];
|
|
|
+ delete item["companyNo"];
|
|
|
});
|
|
|
|
|
|
- const { code, message } = await httpBatchAdd({
|
|
|
+ const { code, message } = await httpBatchimport({
|
|
|
list: data,
|
|
|
- companyNo: currentCompany.value.companyNo,
|
|
|
- relaComNo: currentCompany.value.companyNo
|
|
|
+ companyNo,
|
|
|
+ emptyRela:true
|
|
|
+ // relaComNo
|
|
|
});
|
|
|
|
|
|
loading.value = false;
|
|
@@ -160,7 +158,6 @@ const handleSubmit = async () => {
|
|
|
responseHandle({
|
|
|
code,
|
|
|
message,
|
|
|
- noMessage: false,
|
|
|
handler: () => {
|
|
|
ElMessage.success("数据导入成功!");
|
|
|
emit("onSuccess");
|
|
@@ -180,7 +177,7 @@ defineExpose({
|
|
|
<el-dialog
|
|
|
:close-on-click-modal="false"
|
|
|
v-model="visible"
|
|
|
- title="导入批量开票数据"
|
|
|
+ title="批量导入认证结果"
|
|
|
width="1040px"
|
|
|
top="8vh"
|
|
|
center
|
|
@@ -237,4 +234,8 @@ defineExpose({
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
-<style lang="scss" scoped></style>
|
|
|
+<style lang="scss" scoped>
|
|
|
+:deep(.el-upload-list__item) {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+</style>
|