|
|
@@ -17,7 +17,10 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="content">{{ content }}</div>
|
|
|
+ <div class="content">
|
|
|
+ <span v-if="!table.length">{{ err }}</span>
|
|
|
+ <p v-else v-for="(item,id) in table" :key="id">{{item.name}}:{{item.num}}</p>
|
|
|
+ </div>
|
|
|
<div class="top">
|
|
|
<Button type="primary" size="large" @click="save" v-if="!show"
|
|
|
>识别</Button
|
|
|
@@ -31,6 +34,7 @@
|
|
|
<script>
|
|
|
import { Icon, Button } from "view-design";
|
|
|
import "view-design/dist/styles/iview.css";
|
|
|
+import axios from "@/utils/axios";
|
|
|
export default {
|
|
|
components: {
|
|
|
Icon,
|
|
|
@@ -40,7 +44,8 @@ export default {
|
|
|
return {
|
|
|
newImg: [],
|
|
|
show: false,
|
|
|
- content: "",
|
|
|
+ err: "",
|
|
|
+ table:[]
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
@@ -49,14 +54,14 @@ export default {
|
|
|
const file = event.target.files;
|
|
|
const size = 10485760; //10M
|
|
|
const newArr = [];
|
|
|
- if (file.length > 3) {
|
|
|
- this.content = "不能超过3张";
|
|
|
+ if (file.length > 1) {
|
|
|
+ this.err = "不能超过1张";
|
|
|
return;
|
|
|
}
|
|
|
for (let j = 0; j < file.length; j++) {
|
|
|
const el = file[j];
|
|
|
if (el.size > size) {
|
|
|
- this.content = el.name + "大小超过限制";
|
|
|
+ this.err = el.name + "大小超过限制";
|
|
|
continue;
|
|
|
} else {
|
|
|
newArr.push({
|
|
|
@@ -66,7 +71,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
this.newImg = newArr;
|
|
|
- this.content = "";
|
|
|
+ this.err = "";
|
|
|
},
|
|
|
// 图片临时路径
|
|
|
getObjectURL(file) {
|
|
|
@@ -81,11 +86,98 @@ export default {
|
|
|
return url;
|
|
|
},
|
|
|
// 识别
|
|
|
- save() {
|
|
|
+ async save() {
|
|
|
if (!this.newImg.length) return;
|
|
|
this.show = true;
|
|
|
- console.log(this.newImg);
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("pic", this.newImg[0].data);
|
|
|
+ const res = await axios.post("/uploadOneInvoicePic", formData);
|
|
|
+ if (res.success) {
|
|
|
+ const newArr = this.setData(res.data.invoice_data.words_result[0].result)
|
|
|
+ this.table = newArr
|
|
|
+ } else {
|
|
|
+ this.err = "识别错误";
|
|
|
+ this.table = []
|
|
|
+ }
|
|
|
+ this.show = false;
|
|
|
+ },
|
|
|
+ // 处理数据
|
|
|
+ setData(data) {
|
|
|
+ let content = [];
|
|
|
+ for (const key in data) {
|
|
|
+ content.push({
|
|
|
+ name: this.names(key) || '无',
|
|
|
+ num: data[key].length ? data[key][0].word : ''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return content
|
|
|
},
|
|
|
+ // 名词
|
|
|
+ names(key){
|
|
|
+ let name = ''
|
|
|
+ switch (key) {
|
|
|
+ case "AmountInFiguers":
|
|
|
+ name = "合计"
|
|
|
+ break;
|
|
|
+ case "AmountInWords":
|
|
|
+ name = '合计大写'
|
|
|
+ break;
|
|
|
+ case "CheckCode":
|
|
|
+ name = '校验码'
|
|
|
+ break;
|
|
|
+ case "Checker":
|
|
|
+ name = '复核'
|
|
|
+ break;
|
|
|
+ case "InvoiceCode":
|
|
|
+ name = '发票代码'
|
|
|
+ break;
|
|
|
+ case "InvoiceCodeConfirm":
|
|
|
+ name = '发票代码确认'
|
|
|
+ break;
|
|
|
+ case "InvoiceDate":
|
|
|
+ name = '发票日期'
|
|
|
+ break;
|
|
|
+ case "InvoiceNum":
|
|
|
+ name = '发票编号'
|
|
|
+ break;
|
|
|
+ case "InvoiceNumConfirm":
|
|
|
+ name = '发票编号确认'
|
|
|
+ break;
|
|
|
+ case "NoteDrawer":
|
|
|
+ name = '开票人'
|
|
|
+ break;
|
|
|
+ case "Payee":
|
|
|
+ name = '收款人'
|
|
|
+ break;
|
|
|
+ case "PurchaserAddress":
|
|
|
+ name = '买方地址'
|
|
|
+ break;
|
|
|
+ case "PurchaserBank":
|
|
|
+ name = '买方银行信息'
|
|
|
+ break;
|
|
|
+ case "PurchaserName":
|
|
|
+ name = '买方名称'
|
|
|
+ break;
|
|
|
+ case "PurchaserRegisterNum":
|
|
|
+ name = '买方识别号'
|
|
|
+ break;
|
|
|
+ case "SellerAddress":
|
|
|
+ name = '卖方地址'
|
|
|
+ break;
|
|
|
+ case "SellerBank":
|
|
|
+ name = '卖方银行信息'
|
|
|
+ break;
|
|
|
+ case "SellerName":
|
|
|
+ name = '卖方名称'
|
|
|
+ break;
|
|
|
+ case "SellerRegisterNum":
|
|
|
+ name = '卖方识别号'
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return name
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
@@ -144,7 +236,7 @@ export default {
|
|
|
}
|
|
|
.content {
|
|
|
padding: 0.1rem 0;
|
|
|
- max-height: 2.5rem;
|
|
|
+ max-height: 6rem;
|
|
|
overflow-y: auto;
|
|
|
overflow-x: hidden;
|
|
|
}
|