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.
Files changed (30) hide show
  1. package/dist/index.es.js +10618 -11509
  2. package/dist/index.umd.js +41 -41
  3. package/dist/style.css +9 -1
  4. package/dist/types/components/InoviceConfirmDialog/InoviceConfirmDialog.vue.d.ts +114 -0
  5. package/dist/types/components/Invoice/index.vue.d.ts +1 -0
  6. package/dist/types/components/InvoiceList/Skeleton.vue.d.ts +14 -0
  7. package/dist/types/components/InvoiceList/const.d.ts +1 -1
  8. package/dist/types/components/InvoiceList/index.vue.d.ts +1 -0
  9. package/dist/types/components/InvoicePopup/InvoicePopup.vue.d.ts +61 -0
  10. package/dist/types/components/Loading/index.vue.d.ts +11 -0
  11. package/dist/types/components/Message/index.vue.d.ts +32 -0
  12. package/dist/types/components/OCRInvoice/const.d.ts +0 -2
  13. package/dist/types/index.d.ts +0 -1
  14. package/dist/types/main.d.ts +0 -1
  15. package/dist/types/utils/common.d.ts +3 -0
  16. package/dist/types/utils/components.d.ts +35 -0
  17. package/dist/types/utils/upload.d.ts +0 -1
  18. package/package.json +3 -4
  19. package/src/components/InoviceConfirmDialog/InoviceConfirmDialog.vue +273 -0
  20. package/src/components/Invoice/index.vue +327 -271
  21. package/src/components/InvoiceList/Skeleton.vue +121 -0
  22. package/src/components/InvoiceList/index.vue +451 -402
  23. package/src/components/InvoicePopup/InvoicePopup.vue +217 -0
  24. package/src/components/Loading/index.vue +60 -0
  25. package/src/components/Message/index.vue +108 -0
  26. package/src/components/OCRInvoice/const.ts +0 -4
  27. package/src/components/OCRInvoice/index.vue +5 -7
  28. package/src/components/PaymentMode/index.vue +25 -38
  29. package/dist/types/styles/vantimpCss.d.ts +0 -15
  30. 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
- <Form label-width="70px">
11
- <CellGroup inset>
12
- <template #title>
13
- <div class="Field-title">
14
- <span class="titleLeft">公司信息</span>
15
- <!-- <span class="titleright">重新查验</span> -->
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
- </template>
18
- <div class="marPX">
19
- <Field
20
- autocomplete="off"
21
- label="销售方"
22
- placeholder="请输入销售方"
23
- v-model="formData.sellerReq.sellerName">
24
- <template #right-icon>
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
- v-model="formData.sellerReq.sellerId" />
40
- <Field
41
- autocomplete="off"
42
- label="地址/电话"
43
- autosize
44
- type="textarea"
45
- placeholder="请输入地址+电话"
46
- v-model="formData.sellerReq.sellerContact" />
47
- <!-- <Field
48
- autocomplete="off"
49
- label="电话"
50
- placeholder="请输入电话"
51
- v-model="formData.sellerReq.sellerName" /> -->
52
- <Field
53
- autocomplete="off"
54
- autosize
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
- v-model="formData.sellerReq.sellerAccount" />
59
- <!-- <Field
60
- autocomplete="off"
61
- label="银行账号"
62
- placeholder="请输入银行账号"
63
- v-model="formData.sellerReq.sellerName" /> -->
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
- <div class="marPX">
67
- <Field
68
- autocomplete="off"
69
- label="购买方"
70
- placeholder="请输入购买方名称"
71
- v-model="formData.payerReq.payerName">
72
- <template #right-icon>
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
- v-model="formData.payerReq.payerId" />
89
- <Field
90
- autocomplete="off"
91
- label="地址/电话"
92
- type="textarea"
93
- placeholder="请输入地址+电话"
94
- v-model="formData.payerReq.payerContact" />
95
- <!-- <Field
96
- autocomplete="off"
97
- label="电话"
98
- placeholder="请输入电话"
99
- v-model="formData.payerReq.sellerName" /> -->
100
- <Field
101
- autocomplete="off"
102
- autosize
103
- type="textarea"
104
- label="开户银行/银行账号"
105
- placeholder="请输入开户银行+银行账户"
106
- v-model="formData.payerReq.payerAccount" />
107
- <!-- <Field
108
- autocomplete="off"
109
- label="银行账号"
110
- placeholder="请输入银行账号"
111
- v-model="formData.payerReq.sellerName" /> -->
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
- <div class="marPX">
115
- <Field
116
- autocomplete="off"
117
- readonly
118
- label="发票类型"
119
- :model-value="props.invoiceData.description" />
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
- <div class="marPX">
122
- <Cell title="价税合计" :value="computed_amount">
123
- <template #value>
124
- <div
125
- style="
126
- color: #333;
127
- font-weight: 400;
128
- font-size: 16px;
129
- margin-right: 12px;
130
- ">
131
- {{ computed_amount }}
132
- </div>
133
- </template>
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
- <div class="marPX">
170
- <Field
171
- autocomplete="off"
172
- label="发票代码"
173
- placeholder="请输入发票代码"
174
- v-model="formData.codeReq.invoiceCode">
175
- <template #right-icon>
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
- v-model="formData.codeReq.invoiceNum" />
191
- <Field
192
- autocomplete="off"
193
- label="校验码"
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
- v-model="formData.codeReq.checkCode" />
172
+ type="text" />
196
173
  </div>
197
174
  </div>
198
- <div class="marPX">
199
- <Field
200
- autocomplete="off"
201
- label="开票日期"
202
- readonly
203
- v-model="props.invoiceData.invoiceDate" />
204
- </div>
205
- <div class="marPX">
206
- <Field
207
- autocomplete="off"
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
- </Form>
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
- <ActionSheet :z-index="9527" v-model:show="showEdit" :title="editTitle(titleIndex)">
225
- <div class="content">
226
- <Form ref="REF_editForm">
227
- <Field
228
- autocomplete="off"
229
- @blur="blurInput($event, 'itemExTaxAmount')"
230
- label="不含税金额"
231
- v-model="activeRow.itemExTaxAmount" />
232
- <Field
233
- autocomplete="off"
234
- label="税率"
235
- @blur="blurInput($event, 'itemTaxRate')"
236
- v-model="activeRow.itemTaxRate">
237
- <template #right-icon>%</template>
238
- </Field>
239
- <Cell title="税额" :value="rateAmount"> </Cell>
240
- </Form>
241
- <div class="btn">
242
- <Button type="primary" @click="confirmEdit">确定</Button>
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
- </div>
245
- </ActionSheet>
246
- <Overlay
247
- :z-index="9527"
248
- style="
249
- display: flex;
250
- justify-content: center;
251
- align-items: center;
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 Cookies from 'js-cookie'
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
- showImagePreview([props.invoiceData.attachmentLink])
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
- showLoading.value = true
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
- showToast({
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
- showToast({
348
- type: 'fail',
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
- showLoading.value = false
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
- min-height: 100%;
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>