|
@@ -1,6 +1,6 @@
|
|
|
<script setup lang="ts">
|
|
|
import { ref } from "vue";
|
|
|
-import { ElMessage } from "element-plus";
|
|
|
+import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
import { execlUpload } from "/@/components/execlUpload";
|
|
|
import { httpBatchAdd } from "/@/api/purchase/ticketReturn";
|
|
|
import { useResponseHandle } from "/@/hooks";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
mapProp,
|
|
|
requireHeaders
|
|
|
} from "./columns-config";
|
|
|
-import { result } from "lodash-unified";
|
|
|
+import { cg_inv_type_list } from "/@/utils/status";
|
|
|
|
|
|
const visible = ref(false);
|
|
|
const loading = ref(false);
|
|
@@ -20,16 +20,12 @@ const tableData = ref([]);
|
|
|
const columnsConfig = columns();
|
|
|
const emit = defineEmits(["onSuccess"]);
|
|
|
|
|
|
-const mapTypes = {
|
|
|
- 增值税专用发票: "special",
|
|
|
- 增值税普通发票: "normal",
|
|
|
- "增值税普通发票(卷式)": "roll",
|
|
|
- 增值税电子专用发票: "special_electronic",
|
|
|
- 增值税电子普通发票: "electronic",
|
|
|
- "增值税电子普通发票(通行费)": "toll",
|
|
|
- 全电专用发票: "fully_digitalized_special_electronic",
|
|
|
- 全电普通发票: "fully_digitalized_normal_electronic"
|
|
|
-};
|
|
|
+const allTypes = cg_inv_type_list.map(({ label }) => label);
|
|
|
+
|
|
|
+const row = ref(1);
|
|
|
+
|
|
|
+const createInvErrorMessage = (row: number) =>
|
|
|
+ `导入数据第 ${row} 行 发票类型格式不正确,发票类型必须为${allTypes.join(",")}`;
|
|
|
|
|
|
const { currentCompany } = useCompany();
|
|
|
|
|
@@ -62,20 +58,31 @@ const Uploadsuccess = ({ results, header }) => {
|
|
|
}
|
|
|
tableData.value = [];
|
|
|
|
|
|
- try {
|
|
|
- results.forEach(v1 => {
|
|
|
- const b = Object.values(v1);
|
|
|
- let model = {};
|
|
|
- b.forEach((si, sii) => {
|
|
|
- model["value" + sii] = si + "";
|
|
|
- });
|
|
|
- tableData.value.push(model);
|
|
|
+ for (const v1 of results) {
|
|
|
+ const b = Object.values(v1);
|
|
|
+ let model = {};
|
|
|
+ b.forEach((si, sii) => {
|
|
|
+ model["value" + sii] = si + "";
|
|
|
});
|
|
|
- loading.value = false;
|
|
|
- console.log(result);
|
|
|
- } catch (err) {
|
|
|
- return err;
|
|
|
+
|
|
|
+ const type = model["value2"];
|
|
|
+
|
|
|
+ if (!allTypes.includes(type.trim())) {
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ message: createInvErrorMessage(row.value)
|
|
|
+ });
|
|
|
+
|
|
|
+ tableData.value = [];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ tableData.value.push(model);
|
|
|
+
|
|
|
+ row.value = row.value + 1;
|
|
|
}
|
|
|
+
|
|
|
+ loading.value = false;
|
|
|
};
|
|
|
//提交
|
|
|
const handleSubmit = async () => {
|
|
@@ -83,7 +90,6 @@ const handleSubmit = async () => {
|
|
|
loading.value = true;
|
|
|
|
|
|
const data = [];
|
|
|
- const errorInvTypes = [];
|
|
|
|
|
|
tableData.value.forEach((key, index) => {
|
|
|
const obj: Record<string, string> = {};
|
|
@@ -91,28 +97,16 @@ const handleSubmit = async () => {
|
|
|
for (let i in key) {
|
|
|
const prop = mapProp[i];
|
|
|
const value = key[i];
|
|
|
-
|
|
|
- if (prop === "invoiceType") {
|
|
|
- const invs = Object.keys(mapTypes);
|
|
|
- if (!invs.includes(value)) {
|
|
|
- errorInvTypes.push(index + 1);
|
|
|
- }
|
|
|
-
|
|
|
- obj[prop] = mapTypes[value];
|
|
|
- } else {
|
|
|
- obj[prop] = value;
|
|
|
- }
|
|
|
+ obj[prop] = value;
|
|
|
}
|
|
|
data.push(obj);
|
|
|
});
|
|
|
|
|
|
- if (errorInvTypes.length > 0) {
|
|
|
- return ElMessage.error(
|
|
|
- `第 ${errorInvTypes.join(",")} 行 发票类型格式不正确,必须在${Object.keys(
|
|
|
- mapTypes
|
|
|
- ).join(",")}中`
|
|
|
- );
|
|
|
- }
|
|
|
+ data.forEach(row => {
|
|
|
+ const source = row.invoiceType.trim();
|
|
|
+ const target = cg_inv_type_list.find(({ label }) => label === source);
|
|
|
+ row.invoiceType = target.value;
|
|
|
+ });
|
|
|
|
|
|
const { code, message } = await httpBatchAdd({
|
|
|
list: data,
|