mg-ocr-invoice 0.4.8 → 0.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +10618 -11509
- package/dist/index.umd.js +41 -41
- package/dist/style.css +9 -1
- package/dist/types/components/InoviceConfirmDialog/InoviceConfirmDialog.vue.d.ts +114 -0
- package/dist/types/components/Invoice/index.vue.d.ts +1 -0
- package/dist/types/components/InvoiceList/Skeleton.vue.d.ts +14 -0
- package/dist/types/components/InvoiceList/const.d.ts +1 -1
- package/dist/types/components/InvoiceList/index.vue.d.ts +1 -0
- package/dist/types/components/InvoicePopup/InvoicePopup.vue.d.ts +61 -0
- package/dist/types/components/Loading/index.vue.d.ts +11 -0
- package/dist/types/components/Message/index.vue.d.ts +32 -0
- package/dist/types/components/OCRInvoice/const.d.ts +0 -2
- package/dist/types/index.d.ts +0 -1
- package/dist/types/main.d.ts +0 -1
- package/dist/types/utils/common.d.ts +3 -0
- package/dist/types/utils/components.d.ts +35 -0
- package/dist/types/utils/upload.d.ts +0 -1
- package/package.json +3 -4
- package/src/components/InoviceConfirmDialog/InoviceConfirmDialog.vue +273 -0
- package/src/components/Invoice/index.vue +327 -271
- package/src/components/InvoiceList/Skeleton.vue +121 -0
- package/src/components/InvoiceList/index.vue +451 -402
- package/src/components/InvoicePopup/InvoicePopup.vue +217 -0
- package/src/components/Loading/index.vue +60 -0
- package/src/components/Message/index.vue +108 -0
- package/src/components/OCRInvoice/const.ts +0 -4
- package/src/components/OCRInvoice/index.vue +5 -7
- package/src/components/PaymentMode/index.vue +25 -38
- package/dist/types/styles/vantimpCss.d.ts +0 -15
- package/dist/types/utils/getUrlParams.d.ts +0 -1
|
@@ -6,279 +6,258 @@
|
|
|
6
6
|
@click.stop="openPreViewImg"
|
|
7
7
|
alt="" />
|
|
8
8
|
</div>
|
|
9
|
-
<div>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
<div class="inovice-content">
|
|
10
|
+
<div class="Field-title">
|
|
11
|
+
<span class="titleLeft">公司信息</span>
|
|
12
|
+
<!-- <span class="titleright">重新查验</span> -->
|
|
13
|
+
</div>
|
|
14
|
+
<div class="marPX">
|
|
15
|
+
<div class="inv-cell">
|
|
16
|
+
<label>销售方</label>
|
|
17
|
+
<input
|
|
18
|
+
v-model="formData.sellerReq.sellerName"
|
|
19
|
+
placeholder="请输入销售方"
|
|
20
|
+
type="text" />
|
|
21
|
+
<div class="cell-icon">
|
|
22
|
+
<div @click="expandObj.showSeller = !expandObj.showSeller">
|
|
23
|
+
<i class="gg-chevron-down" v-if="!expandObj.showSeller" />
|
|
24
|
+
<i v-else class="gg-chevron-up" />
|
|
16
25
|
</div>
|
|
17
|
-
</
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<div @click="expandObj.showSeller = !expandObj.showSeller">
|
|
26
|
-
<Icon
|
|
27
|
-
name="arrow-down"
|
|
28
|
-
v-if="!expandObj.showSeller"
|
|
29
|
-
color="#969799" />
|
|
30
|
-
<Icon v-else name="arrow-up" color="#969799" />
|
|
31
|
-
</div>
|
|
32
|
-
</template>
|
|
33
|
-
</Field>
|
|
34
|
-
<div v-show="expandObj.showSeller">
|
|
35
|
-
<Field
|
|
36
|
-
autocomplete="off"
|
|
37
|
-
label="纳税人识别号"
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
<transition name="flod-fade" appear>
|
|
29
|
+
<div v-if="expandObj.showSeller">
|
|
30
|
+
<div class="inv-cell">
|
|
31
|
+
<label>纳税人识别号</label>
|
|
32
|
+
<input
|
|
33
|
+
v-model="formData.sellerReq.sellerId"
|
|
38
34
|
placeholder="请输入纳税人识别号"
|
|
39
|
-
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
v-model="formData.sellerReq.sellerContact"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
type="textarea"
|
|
56
|
-
label="开户银行/银行账号"
|
|
35
|
+
type="text" />
|
|
36
|
+
<div class="cell-icon"></div>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="inv-cell">
|
|
39
|
+
<label>地址/电话</label>
|
|
40
|
+
<textarea
|
|
41
|
+
autocapitalize="off"
|
|
42
|
+
v-model="formData.sellerReq.sellerContact"
|
|
43
|
+
placeholder="请输入地址/电话"
|
|
44
|
+
type="textarea" />
|
|
45
|
+
</div>
|
|
46
|
+
<div class="inv-cell">
|
|
47
|
+
<label>开户银行/银行账号</label>
|
|
48
|
+
<textarea
|
|
49
|
+
autocapitalize="off"
|
|
50
|
+
v-model="formData.sellerReq.sellerAccount"
|
|
57
51
|
placeholder="请输入开户银行+银行账户"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
type="textarea" />
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</transition>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div class="marPX">
|
|
59
|
+
<div class="inv-cell">
|
|
60
|
+
<label>购买方</label>
|
|
61
|
+
<input
|
|
62
|
+
v-model="formData.payerReq.payerName"
|
|
63
|
+
placeholder="请输入购买方名称"
|
|
64
|
+
type="text" />
|
|
65
|
+
<div class="cell-icon">
|
|
66
|
+
<div @click="expandObj.showPurchaser = !expandObj.showPurchaser">
|
|
67
|
+
<i class="gg-chevron-down" v-if="!expandObj.showPurchaser" />
|
|
68
|
+
<i v-else class="gg-chevron-up" />
|
|
64
69
|
</div>
|
|
65
70
|
</div>
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<div
|
|
74
|
-
@click="expandObj.showPurchaser = !expandObj.showPurchaser">
|
|
75
|
-
<Icon
|
|
76
|
-
name="arrow-down"
|
|
77
|
-
v-if="!expandObj.showPurchaser"
|
|
78
|
-
color="#969799" />
|
|
79
|
-
<Icon v-else name="arrow-up" color="#969799" />
|
|
80
|
-
</div>
|
|
81
|
-
</template>
|
|
82
|
-
</Field>
|
|
83
|
-
<div v-show="expandObj.showPurchaser">
|
|
84
|
-
<Field
|
|
85
|
-
autocomplete="off"
|
|
86
|
-
label="纳税人识别号"
|
|
71
|
+
</div>
|
|
72
|
+
<transition name="flod-fade" appear>
|
|
73
|
+
<div v-if="expandObj.showPurchaser">
|
|
74
|
+
<div class="inv-cell">
|
|
75
|
+
<label>纳税人识别号</label>
|
|
76
|
+
<input
|
|
77
|
+
v-model="formData.payerReq.payerId"
|
|
87
78
|
placeholder="请输入纳税人识别号"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
79
|
+
type="text" />
|
|
80
|
+
</div>
|
|
81
|
+
<div class="inv-cell">
|
|
82
|
+
<label>地址/电话</label>
|
|
83
|
+
<input
|
|
84
|
+
v-model="formData.payerReq.payerContact"
|
|
85
|
+
placeholder="请输入地址/电话"
|
|
86
|
+
type="textarea" />
|
|
87
|
+
</div>
|
|
88
|
+
<div class="inv-cell">
|
|
89
|
+
<label>开户银行/银行账号</label>
|
|
90
|
+
<input
|
|
91
|
+
v-model="formData.payerReq.payerAccount"
|
|
92
|
+
placeholder="请输入开户银行/银行账号"
|
|
93
|
+
type="textarea" />
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
</transition>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="marPX">
|
|
99
|
+
<div class="inv-cell">
|
|
100
|
+
<label>发票类型</label>
|
|
101
|
+
<input
|
|
102
|
+
readonly
|
|
103
|
+
:value="props.invoiceData.description"
|
|
104
|
+
placeholder="请输入开户银行/银行账号"
|
|
105
|
+
type="text" />
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
<div class="marPX">
|
|
109
|
+
<div class="inv-cell">
|
|
110
|
+
<label>价税合计</label>
|
|
111
|
+
<input readonly :value="computed_amount" placeholder="" type="text" />
|
|
112
|
+
<div class="cell-icon">
|
|
113
|
+
<div @click="expandObj.showPrice = !expandObj.showPrice">
|
|
114
|
+
<i class="gg-chevron-down" v-if="!expandObj.showPrice" />
|
|
115
|
+
<i v-else class="gg-chevron-up" />
|
|
112
116
|
</div>
|
|
113
117
|
</div>
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
</div>
|
|
119
|
+
<transition name="flod-fade">
|
|
120
|
+
<div v-if="!expandObj.showPrice">
|
|
121
|
+
<div class="inv-cell">
|
|
122
|
+
<table>
|
|
123
|
+
<thead>
|
|
124
|
+
<tr>
|
|
125
|
+
<th>商品金额(不含税)</th>
|
|
126
|
+
<th>税率</th>
|
|
127
|
+
<th>税额</th>
|
|
128
|
+
</tr>
|
|
129
|
+
</thead>
|
|
130
|
+
<tbody>
|
|
131
|
+
<tr
|
|
132
|
+
v-for="(item, index) in formData.itemAmountReqs"
|
|
133
|
+
@click="openEditpopUp(item, index)">
|
|
134
|
+
<td>{{ item.itemExTaxAmount }}</td>
|
|
135
|
+
<td>{{ item.itemTaxRate }}</td>
|
|
136
|
+
<td>{{ item.itemTaxAmount }}</td>
|
|
137
|
+
</tr>
|
|
138
|
+
</tbody>
|
|
139
|
+
</table>
|
|
140
|
+
</div>
|
|
120
141
|
</div>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
<template #right-icon>
|
|
135
|
-
<div @click="expandObj.showPrice = !expandObj.showPrice">
|
|
136
|
-
<Icon
|
|
137
|
-
name="arrow-down"
|
|
138
|
-
v-if="!expandObj.showPrice"
|
|
139
|
-
color="#969799" />
|
|
140
|
-
<Icon v-else name="arrow-up" color="#969799" />
|
|
141
|
-
</div>
|
|
142
|
-
</template>
|
|
143
|
-
</Cell>
|
|
144
|
-
<div v-show="!expandObj.showPrice">
|
|
145
|
-
<Field>
|
|
146
|
-
<template #input>
|
|
147
|
-
<table>
|
|
148
|
-
<thead>
|
|
149
|
-
<tr>
|
|
150
|
-
<th>商品金额(不含税)</th>
|
|
151
|
-
<th>税率</th>
|
|
152
|
-
<th>税额</th>
|
|
153
|
-
</tr>
|
|
154
|
-
</thead>
|
|
155
|
-
<tbody>
|
|
156
|
-
<tr
|
|
157
|
-
v-for="(item, index) in formData.itemAmountReqs"
|
|
158
|
-
@click="openEditpopUp(item, index)">
|
|
159
|
-
<td>{{ item.itemExTaxAmount }}</td>
|
|
160
|
-
<td>{{ item.itemTaxRate }}</td>
|
|
161
|
-
<td>{{ item.itemTaxAmount }}</td>
|
|
162
|
-
</tr>
|
|
163
|
-
</tbody>
|
|
164
|
-
</table>
|
|
165
|
-
</template>
|
|
166
|
-
</Field>
|
|
142
|
+
</transition>
|
|
143
|
+
</div>
|
|
144
|
+
<div class="marPX">
|
|
145
|
+
<div class="inv-cell">
|
|
146
|
+
<label>发票代码</label>
|
|
147
|
+
<input
|
|
148
|
+
v-model="formData.codeReq.invoiceCode"
|
|
149
|
+
placeholder="请输入发票代码"
|
|
150
|
+
type="text" />
|
|
151
|
+
<div class="cell-icon">
|
|
152
|
+
<div @click="expandObj.invoiceCode = !expandObj.invoiceCode">
|
|
153
|
+
<i class="gg-chevron-down" v-if="!expandObj.invoiceCode" />
|
|
154
|
+
<i v-else class="gg-chevron-up" />
|
|
167
155
|
</div>
|
|
168
156
|
</div>
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
<div @click="expandObj.invoiceCode = !expandObj.invoiceCode">
|
|
177
|
-
<Icon
|
|
178
|
-
name="arrow-down"
|
|
179
|
-
v-if="!expandObj.invoiceCode"
|
|
180
|
-
color="#969799" />
|
|
181
|
-
<Icon v-else name="arrow-up" color="#969799" />
|
|
182
|
-
</div>
|
|
183
|
-
</template>
|
|
184
|
-
</Field>
|
|
185
|
-
<div v-show="expandObj.invoiceCode">
|
|
186
|
-
<Field
|
|
187
|
-
autocomplete="off"
|
|
188
|
-
label="发票号码"
|
|
157
|
+
</div>
|
|
158
|
+
<transition name="flod-fade" appear>
|
|
159
|
+
<div v-if="expandObj.invoiceCode">
|
|
160
|
+
<div class="inv-cell">
|
|
161
|
+
<label>发票号码</label>
|
|
162
|
+
<input
|
|
163
|
+
v-model="formData.codeReq.invoiceNum"
|
|
189
164
|
placeholder="请输入发票号码"
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
165
|
+
type="text" />
|
|
166
|
+
</div>
|
|
167
|
+
<div class="inv-cell">
|
|
168
|
+
<label>校验码</label>
|
|
169
|
+
<input
|
|
170
|
+
v-model="formData.codeReq.checkCode"
|
|
194
171
|
placeholder="请输入校验码"
|
|
195
|
-
|
|
172
|
+
type="text" />
|
|
196
173
|
</div>
|
|
197
174
|
</div>
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
label="查验状态"
|
|
209
|
-
readonly
|
|
210
|
-
:model-value="const_realStatus[props.invoiceData.realStatus]" />
|
|
211
|
-
</div>
|
|
212
|
-
</CellGroup>
|
|
213
|
-
<div class="submit">
|
|
214
|
-
<span
|
|
215
|
-
style="flex: 1; background-color: #07c160; color: #fff"
|
|
216
|
-
@click="close">
|
|
217
|
-
返回
|
|
218
|
-
</span>
|
|
219
|
-
<span v-if="isEdit" @click="submit">保存</span>
|
|
175
|
+
</transition>
|
|
176
|
+
</div>
|
|
177
|
+
<div class="marPX">
|
|
178
|
+
<div class="inv-cell">
|
|
179
|
+
<label>开票日期</label>
|
|
180
|
+
<input
|
|
181
|
+
readonly
|
|
182
|
+
:value="props.invoiceData.invoiceDate"
|
|
183
|
+
placeholder="请输入校验码"
|
|
184
|
+
type="text" />
|
|
220
185
|
</div>
|
|
221
|
-
</
|
|
186
|
+
</div>
|
|
187
|
+
<div class="marPX">
|
|
188
|
+
<div class="inv-cell">
|
|
189
|
+
<label>查验状态</label>
|
|
190
|
+
<input
|
|
191
|
+
:value="const_realStatus[props.invoiceData.realStatus]"
|
|
192
|
+
placeholder=""
|
|
193
|
+
type="text" />
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="submit">
|
|
197
|
+
<span
|
|
198
|
+
class="back-btn"
|
|
199
|
+
style="flex: 1; background-color: #07c160; color: #fff"
|
|
200
|
+
@click="close">
|
|
201
|
+
返回
|
|
202
|
+
</span>
|
|
203
|
+
<span class="save-btn" v-if="isEdit" @click="submit">保存</span>
|
|
204
|
+
</div>
|
|
222
205
|
</div>
|
|
223
206
|
</div>
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
207
|
+
|
|
208
|
+
<InvoicePopup v-model="showEdit" :title="editTitle(titleIndex)">
|
|
209
|
+
<template #content>
|
|
210
|
+
<div class="content">
|
|
211
|
+
<div class="inv-cell">
|
|
212
|
+
<label>不含税金额</label>
|
|
213
|
+
<input
|
|
214
|
+
class="input-color"
|
|
215
|
+
v-model="activeRow.itemExTaxAmount"
|
|
216
|
+
@blur="blurInput($event, 'itemExTaxAmount')"
|
|
217
|
+
placeholder="请输入金额"
|
|
218
|
+
type="text" />
|
|
219
|
+
<div class="cell-icon"></div>
|
|
220
|
+
</div>
|
|
221
|
+
<div class="inv-cell">
|
|
222
|
+
<label>税率</label>
|
|
223
|
+
<input
|
|
224
|
+
class="input-color"
|
|
225
|
+
v-model="activeRow.itemTaxRate"
|
|
226
|
+
@blur="blurInput($event, 'itemTaxRate')"
|
|
227
|
+
placeholder="请输入税率"
|
|
228
|
+
type="text" />
|
|
229
|
+
<div class="cell-icon">%</div>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="inv-cell">
|
|
232
|
+
<label>税额</label>
|
|
233
|
+
<input :value="rateAmount" readonly placeholder="" type="text" />
|
|
234
|
+
</div>
|
|
243
235
|
</div>
|
|
244
|
-
</
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
z-index: 999;
|
|
253
|
-
"
|
|
254
|
-
:show="showLoading">
|
|
255
|
-
<Loading class="loading" color="#0094ff">保存中...</Loading>
|
|
256
|
-
</Overlay>
|
|
236
|
+
</template>
|
|
237
|
+
|
|
238
|
+
<template #footer>
|
|
239
|
+
<div class="footer-confirm-btn">
|
|
240
|
+
<button class="confirm-btn" @click="confirmEdit">确定</button>
|
|
241
|
+
</div>
|
|
242
|
+
</template>
|
|
243
|
+
</InvoicePopup>
|
|
257
244
|
</template>
|
|
258
245
|
<script setup lang="ts">
|
|
259
246
|
import { ref } from 'vue'
|
|
247
|
+
import InvoicePopup from '../InvoicePopup/InvoicePopup.vue'
|
|
260
248
|
import '@/utils/disableZoom'
|
|
261
249
|
import { __updateInvoiceData } from '@/api/invoice'
|
|
262
|
-
import {
|
|
263
|
-
showToast,
|
|
264
|
-
Overlay,
|
|
265
|
-
Loading,
|
|
266
|
-
showImagePreview,
|
|
267
|
-
CellGroup,
|
|
268
|
-
Field,
|
|
269
|
-
Form,
|
|
270
|
-
Icon,
|
|
271
|
-
Button,
|
|
272
|
-
ActionSheet,
|
|
273
|
-
Cell,
|
|
274
|
-
} from 'vant'
|
|
275
250
|
import { onMounted } from 'vue'
|
|
276
251
|
import { const_realStatus } from '../InvoiceList/const'
|
|
277
252
|
import { RowAttribute } from './const'
|
|
278
253
|
import { filterNumber } from '@/utils/number'
|
|
279
254
|
import { computed } from 'vue'
|
|
280
255
|
import Decimal from 'decimal.js'
|
|
281
|
-
import
|
|
256
|
+
import { api as viewerApi } from 'v-viewer'
|
|
257
|
+
import 'viewerjs/dist/viewer.css'
|
|
258
|
+
import { OCR_getMaxZIndex } from '@/utils/common'
|
|
259
|
+
import { CreateLoading, showMessage } from '@/utils/components'
|
|
260
|
+
|
|
282
261
|
const props = defineProps(['ids', 'invoiceData'])
|
|
283
262
|
const formData = ref({
|
|
284
263
|
codeReq: {
|
|
@@ -311,14 +290,16 @@ const formData = ref({
|
|
|
311
290
|
const emit = defineEmits(['saveSuccess'])
|
|
312
291
|
document.title = '发票信息'
|
|
313
292
|
const expandObj: any = ref({})
|
|
314
|
-
const showRequiredMsg = ref(false)
|
|
315
|
-
// const modules = ref([Pagination])
|
|
316
|
-
const showLoading = ref(false)
|
|
317
293
|
const close = () => {
|
|
318
294
|
emit('saveSuccess')
|
|
319
295
|
}
|
|
320
296
|
const openPreViewImg = () => {
|
|
321
|
-
|
|
297
|
+
viewerApi({
|
|
298
|
+
images: [props.invoiceData.attachmentLink],
|
|
299
|
+
options: {
|
|
300
|
+
zIndex: OCR_getMaxZIndex() + 1,
|
|
301
|
+
},
|
|
302
|
+
})
|
|
322
303
|
}
|
|
323
304
|
const isEdit = computed(() => {
|
|
324
305
|
// true 允许
|
|
@@ -331,31 +312,27 @@ const isEdit = computed(() => {
|
|
|
331
312
|
)
|
|
332
313
|
})
|
|
333
314
|
const submit = async () => {
|
|
334
|
-
|
|
315
|
+
const ld = new CreateLoading()
|
|
316
|
+
ld.show()
|
|
335
317
|
try {
|
|
336
318
|
const res: any = await __updateInvoiceData(formData.value)
|
|
337
319
|
if (res.code === 200) {
|
|
338
|
-
|
|
320
|
+
showMessage({
|
|
339
321
|
type: 'success',
|
|
340
322
|
message: '保存成功',
|
|
341
|
-
teleport: Cookies.get('teleport') || null,
|
|
342
|
-
zIndex: 9527,
|
|
343
323
|
})
|
|
344
324
|
emit('saveSuccess')
|
|
345
325
|
}
|
|
346
326
|
} catch (err: any) {
|
|
347
|
-
|
|
348
|
-
type: '
|
|
327
|
+
showMessage({
|
|
328
|
+
type: 'error',
|
|
349
329
|
message: err.msg,
|
|
350
|
-
teleport: Cookies.get('teleport') || null,
|
|
351
|
-
zIndex: 9527,
|
|
352
330
|
})
|
|
353
331
|
emit('saveSuccess')
|
|
354
332
|
}
|
|
355
|
-
|
|
333
|
+
ld.hide()
|
|
356
334
|
}
|
|
357
335
|
const initData = () => {
|
|
358
|
-
console.log(props.invoiceData)
|
|
359
336
|
// 销售方数据回显
|
|
360
337
|
formData.value.sellerReq.sellerName = props.invoiceData.sellerName
|
|
361
338
|
formData.value.sellerReq.sellerAccount = props.invoiceData.sellerAccount
|
|
@@ -403,7 +380,7 @@ const confirmEdit = () => {
|
|
|
403
380
|
formData.value.itemAmountReqs[titleIndex.value].itemTaxRate =
|
|
404
381
|
activeRow.value.itemTaxRate
|
|
405
382
|
formData.value.itemAmountReqs[titleIndex.value].itemTaxAmount = Number(
|
|
406
|
-
new Decimal(filterNumber(activeRow.value.itemExTaxAmount))
|
|
383
|
+
new Decimal(filterNumber(activeRow.value.itemExTaxAmount) || 0)
|
|
407
384
|
.times(new Decimal(filterNumber(activeRow.value.itemTaxRate / 100)))
|
|
408
385
|
.toFixed(2)
|
|
409
386
|
)
|
|
@@ -411,21 +388,15 @@ const confirmEdit = () => {
|
|
|
411
388
|
}
|
|
412
389
|
const blurInput = (e: any, key: any) => {
|
|
413
390
|
let value = activeRow.value[key]
|
|
414
|
-
activeRow.value[key] = filterNumber(value)
|
|
391
|
+
activeRow.value[key] = filterNumber(value) || 0
|
|
415
392
|
}
|
|
416
393
|
|
|
417
394
|
const computed_amount = computed(() => {
|
|
418
395
|
let count = new Decimal(0)
|
|
419
396
|
formData.value.itemAmountReqs.forEach((item) => {
|
|
420
|
-
// let tax_amount = new Decimal(filterNumber(item.itemExTaxAmount)).times(
|
|
421
|
-
// new Decimal(filterNumber(item.itemTaxRate / 100))
|
|
422
|
-
// )
|
|
423
|
-
// count = count.plus(
|
|
424
|
-
// new Decimal(filterNumber(item.itemExTaxAmount)).plus(tax_amount)
|
|
425
|
-
// )
|
|
426
397
|
count = count.plus(
|
|
427
|
-
new Decimal(filterNumber(item.itemExTaxAmount)).plus(
|
|
428
|
-
new Decimal(item.itemTaxAmount)
|
|
398
|
+
new Decimal(filterNumber(item.itemExTaxAmount) || 0).plus(
|
|
399
|
+
new Decimal(item.itemTaxAmount || 0)
|
|
429
400
|
)
|
|
430
401
|
)
|
|
431
402
|
})
|
|
@@ -450,7 +421,6 @@ onMounted(() => {
|
|
|
450
421
|
<style lang="scss" scoped>
|
|
451
422
|
.content {
|
|
452
423
|
background-color: #f7f8fa;
|
|
453
|
-
height: 200px;
|
|
454
424
|
:deep(.van-field__value) {
|
|
455
425
|
border: 1px solid #2196f3;
|
|
456
426
|
border-radius: 4px;
|
|
@@ -480,12 +450,80 @@ onMounted(() => {
|
|
|
480
450
|
font-size: 16px;
|
|
481
451
|
}
|
|
482
452
|
}
|
|
483
|
-
|
|
453
|
+
.footer-confirm-btn {
|
|
454
|
+
margin-top: 12px;
|
|
455
|
+
margin-bottom: 6px;
|
|
456
|
+
width: 100%;
|
|
457
|
+
padding: 0 12px;
|
|
458
|
+
display: flex;
|
|
459
|
+
align-items: center;
|
|
460
|
+
justify-content: center;
|
|
461
|
+
.confirm-btn {
|
|
462
|
+
width: calc(100% - 24px);
|
|
463
|
+
padding: 12px 0;
|
|
464
|
+
color: #fff;
|
|
465
|
+
background-color: #1989fa;
|
|
466
|
+
border: none;
|
|
467
|
+
border-radius: 25px;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
.inv-cell {
|
|
471
|
+
display: flex;
|
|
472
|
+
align-items: center;
|
|
473
|
+
width: 100%;
|
|
474
|
+
background-color: #fff;
|
|
475
|
+
padding: 12px;
|
|
476
|
+
label {
|
|
477
|
+
margin-right: 4px;
|
|
478
|
+
font-size: 14px;
|
|
479
|
+
font-weight: 700;
|
|
480
|
+
width: 100px;
|
|
481
|
+
color: #333;
|
|
482
|
+
}
|
|
483
|
+
.cell-icon {
|
|
484
|
+
margin-left: 4px;
|
|
485
|
+
min-width: 16px;
|
|
486
|
+
text-align: right;
|
|
487
|
+
i {
|
|
488
|
+
color: #8c8d8fe3;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
input {
|
|
492
|
+
flex: 1;
|
|
493
|
+
color: #333;
|
|
494
|
+
border: none;
|
|
495
|
+
height: 24px;
|
|
496
|
+
outline: none;
|
|
497
|
+
font-size: 14px;
|
|
498
|
+
font-weight: 500;
|
|
499
|
+
&::placeholder {
|
|
500
|
+
color: #d1d2d5;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
textarea {
|
|
504
|
+
flex: 1;
|
|
505
|
+
height: 60px;
|
|
506
|
+
padding: 4px;
|
|
507
|
+
border: none;
|
|
508
|
+
outline: none;
|
|
509
|
+
resize: none;
|
|
510
|
+
&::placeholder {
|
|
511
|
+
color: #d1d2d5;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
.input-color {
|
|
515
|
+
border: 1px solid #1989fa;
|
|
516
|
+
border-radius: 5px;
|
|
517
|
+
padding: 0 1em;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
484
520
|
.Invoice {
|
|
485
521
|
padding-bottom: 100px;
|
|
486
522
|
width: 100%;
|
|
487
|
-
|
|
523
|
+
height: 100%;
|
|
488
524
|
background-color: #f2f4f7;
|
|
525
|
+
overflow: auto;
|
|
526
|
+
padding-bottom: 100px;
|
|
489
527
|
.top {
|
|
490
528
|
width: 100%;
|
|
491
529
|
padding: 12px 4px;
|
|
@@ -493,13 +531,17 @@ onMounted(() => {
|
|
|
493
531
|
width: 100%;
|
|
494
532
|
height: 179px;
|
|
495
533
|
display: block;
|
|
534
|
+
object-fit: contain;
|
|
496
535
|
}
|
|
497
536
|
}
|
|
498
|
-
|
|
537
|
+
.inovice-content {
|
|
538
|
+
padding: 0 16px;
|
|
539
|
+
}
|
|
499
540
|
.Field-title {
|
|
500
541
|
display: flex;
|
|
501
542
|
justify-content: space-between;
|
|
502
543
|
align-items: center;
|
|
544
|
+
margin-bottom: 12px;
|
|
503
545
|
.titleLeft {
|
|
504
546
|
font-size: 16px;
|
|
505
547
|
color: #333333;
|
|
@@ -538,6 +580,7 @@ onMounted(() => {
|
|
|
538
580
|
th {
|
|
539
581
|
padding: 12px 0;
|
|
540
582
|
text-align: center;
|
|
583
|
+
font-size: 14px;
|
|
541
584
|
}
|
|
542
585
|
}
|
|
543
586
|
tbody {
|
|
@@ -575,4 +618,17 @@ onMounted(() => {
|
|
|
575
618
|
}
|
|
576
619
|
}
|
|
577
620
|
}
|
|
621
|
+
.flod-fade-enter-active {
|
|
622
|
+
transition: all 0.3s ease-out;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.flod-fade-leave-active {
|
|
626
|
+
transition: all 0.1s cubic-bezier(1, 0.5, 0.8, 1);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.flod-fade-enter-from,
|
|
630
|
+
.flod-fade-leave-to {
|
|
631
|
+
transform: translateY(-20px);
|
|
632
|
+
opacity: 0;
|
|
633
|
+
}
|
|
578
634
|
</style>
|