af-mobile-client-vue3 1.4.63 → 1.4.64
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/certs/127.0.0.1+2-key.pem +28 -0
- package/certs/127.0.0.1+2.pem +27 -0
- package/mock/modules/prose.mock.ts.timestamp-1758877157774.mjs +53 -0
- package/mock/modules/user.mock.ts.timestamp-1758877157774.mjs +97 -0
- package/package.json +120 -120
- package/src/api/user/index.ts +45 -45
- package/src/components/common/otherCharge/ChargePrintSelectorAndRemarks.vue +137 -137
- package/src/components/common/otherCharge/CodePayment.vue +357 -357
- package/src/components/common/otherCharge/FileUploader.vue +602 -602
- package/src/components/common/otherCharge/GridFileUploader.vue +846 -846
- package/src/components/common/otherCharge/PaymentMethodSelector.vue +202 -202
- package/src/components/common/otherCharge/PaymentMethodSelectorCard.vue +45 -45
- package/src/components/common/otherCharge/ReceiptModal.vue +273 -273
- package/src/components/common/otherCharge/index.ts +43 -43
- package/src/components/core/ImageUploader/index.vue +510 -510
- package/src/components/data/OtherCharge/OtherChargeItemModal.vue +547 -547
- package/src/router/guards.ts +131 -131
- package/src/services/api/Login.ts +6 -6
- package/src/services/v3Api.ts +170 -170
- package/src/types/platform.ts +194 -194
- package/src/utils/platform-auth.ts +150 -150
- package/src/utils/queryFormDefaultRangePicker.ts +57 -57
- package/src/views/component/XCellListView/index.vue +107 -138
- package/src/views/component/XFormGroupView/index.vue +78 -82
- package/src/views/component/XFormView/index.vue +41 -46
- package/src/views/external/index.vue +158 -158
- package/src/views/loading/AuthLoading.vue +395 -395
- package/src/views/user/register/index.vue +958 -958
- package/vite.config.ts +122 -122
|
@@ -1,273 +1,273 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { runLogic } from '@af-mobile-client-vue3/services/api/common'
|
|
3
|
-
import { mobileUtil } from '@af-mobile-client-vue3/utils/mobileUtil'
|
|
4
|
-
import {
|
|
5
|
-
Button as VanButton,
|
|
6
|
-
Popup as VanPopup,
|
|
7
|
-
} from 'vant'
|
|
8
|
-
import { defineEmits, onUnmounted, ref, watch } from 'vue'
|
|
9
|
-
|
|
10
|
-
interface PrintItem {
|
|
11
|
-
type?: string
|
|
12
|
-
text?: string
|
|
13
|
-
align?: 'left' | 'center' | 'right'
|
|
14
|
-
isbold?: boolean
|
|
15
|
-
fontsize?: number
|
|
16
|
-
value?: number
|
|
17
|
-
unit?: string
|
|
18
|
-
[key: string]: any
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const props = defineProps({
|
|
22
|
-
title: {
|
|
23
|
-
type: String,
|
|
24
|
-
default: '电子凭证',
|
|
25
|
-
},
|
|
26
|
-
subTitle: {
|
|
27
|
-
type: String,
|
|
28
|
-
default: '',
|
|
29
|
-
},
|
|
30
|
-
showSaveButton: {
|
|
31
|
-
type: Boolean,
|
|
32
|
-
default: true,
|
|
33
|
-
},
|
|
34
|
-
saveButtonText: {
|
|
35
|
-
type: String,
|
|
36
|
-
default: '打印',
|
|
37
|
-
},
|
|
38
|
-
closeButtonText: {
|
|
39
|
-
type: String,
|
|
40
|
-
default: '完成',
|
|
41
|
-
},
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
const emit = defineEmits(['update:show', 'ok', 'close'])
|
|
45
|
-
|
|
46
|
-
// 保存原始滚动位置和样式
|
|
47
|
-
const scrollPosition = ref(0)
|
|
48
|
-
const documentWidth = ref(0)
|
|
49
|
-
// 是否显示弹窗
|
|
50
|
-
const show = ref(false)
|
|
51
|
-
// 打印列表
|
|
52
|
-
const printList = ref<PrintItem[]>([])
|
|
53
|
-
// 获取祖父组件的方法
|
|
54
|
-
// const success = inject('success')
|
|
55
|
-
|
|
56
|
-
// 锁定滚动
|
|
57
|
-
function lockScroll() {
|
|
58
|
-
// 保存当前滚动位置
|
|
59
|
-
scrollPosition.value = window.pageYOffset
|
|
60
|
-
// 保存文档原始宽度以防止滚动条消失导致的页面抖动
|
|
61
|
-
documentWidth.value = document.documentElement.clientWidth
|
|
62
|
-
// 弹窗打开时,给body添加类以禁止滚动
|
|
63
|
-
document.body.classList.add('receipt-modal-open')
|
|
64
|
-
// 设置body的top位置,保持视觉位置不变
|
|
65
|
-
document.body.style.top = `-${scrollPosition.value}px`
|
|
66
|
-
// 保持页面宽度不变,防止滚动条消失导致的布局偏移
|
|
67
|
-
document.body.style.width = `${documentWidth.value}px`
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// 解除滚动锁定
|
|
71
|
-
function unlockScroll() {
|
|
72
|
-
// 弹窗关闭时,移除禁止滚动的类
|
|
73
|
-
document.body.classList.remove('receipt-modal-open')
|
|
74
|
-
// 恢复body样式
|
|
75
|
-
document.body.style.top = ''
|
|
76
|
-
document.body.style.width = ''
|
|
77
|
-
// 恢复滚动位置
|
|
78
|
-
window.scrollTo(0, scrollPosition.value)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// 调用Logic组织打印参数
|
|
82
|
-
async function printParams(printLogic: string, printId: string, otherParams?: any) {
|
|
83
|
-
try {
|
|
84
|
-
printList.value = await runLogic(printLogic, { id: printId, otherParams })
|
|
85
|
-
console.log('打印参数==', printList.value)
|
|
86
|
-
if (printList.value.length > 0) {
|
|
87
|
-
show.value = true
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
// 没查到数据默认不打印
|
|
91
|
-
close()
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
console.error('Error calling logic:', error)
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// 打印
|
|
100
|
-
function ok() {
|
|
101
|
-
// 实际项目中应添加收据截图保存逻辑
|
|
102
|
-
mobileUtil.execute({
|
|
103
|
-
funcName: 'print',
|
|
104
|
-
param: { data: printList.value },
|
|
105
|
-
callbackFunc: (result) => {
|
|
106
|
-
// emit('ok', { status: true })
|
|
107
|
-
emit('close', { status: true })
|
|
108
|
-
},
|
|
109
|
-
})
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// 关闭弹窗
|
|
113
|
-
function close() {
|
|
114
|
-
show.value = false
|
|
115
|
-
emit('close', { status: true })
|
|
116
|
-
// if (typeof success === 'function') {
|
|
117
|
-
// success()
|
|
118
|
-
// }
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// 监听show变化,控制body滚动
|
|
122
|
-
watch(() => show.value, (newVal, oldVal) => {
|
|
123
|
-
if (newVal && !oldVal) {
|
|
124
|
-
lockScroll()
|
|
125
|
-
}
|
|
126
|
-
else if (!newVal && oldVal) {
|
|
127
|
-
unlockScroll()
|
|
128
|
-
}
|
|
129
|
-
}, { immediate: true })
|
|
130
|
-
|
|
131
|
-
// 组件卸载时确保移除类和恢复滚动
|
|
132
|
-
onUnmounted(() => {
|
|
133
|
-
if (document.body.classList.contains('receipt-modal-open')) {
|
|
134
|
-
unlockScroll()
|
|
135
|
-
}
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
// 暴露组织参数的给父组件调用
|
|
139
|
-
defineExpose({ printParams, close })
|
|
140
|
-
</script>
|
|
141
|
-
|
|
142
|
-
<template>
|
|
143
|
-
<VanPopup
|
|
144
|
-
:show="show"
|
|
145
|
-
|
|
146
|
-
:close-on-click-overlay="false"
|
|
147
|
-
position="center"
|
|
148
|
-
round lock-scroll
|
|
149
|
-
class="receipt-modal"
|
|
150
|
-
:style="{ width: '90%', maxWidth: '375px' }"
|
|
151
|
-
>
|
|
152
|
-
<div class="receipt-modal-container">
|
|
153
|
-
<div class="receipt-modal-header">
|
|
154
|
-
<div class="receipt-modal-title-container">
|
|
155
|
-
<div class="receipt-modal-title">
|
|
156
|
-
{{ props.title }}
|
|
157
|
-
</div>
|
|
158
|
-
<div v-if="subTitle" class="receipt-modal-subtitle">
|
|
159
|
-
{{ props.subTitle }}
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
<div class="receipt-modal-content">
|
|
164
|
-
<template v-for="(item, index) in printList" :key="index">
|
|
165
|
-
<div
|
|
166
|
-
v-if="item?.text !== undefined"
|
|
167
|
-
class="print-list-item"
|
|
168
|
-
:style="{
|
|
169
|
-
'text-align': item.align || undefined,
|
|
170
|
-
'font-weight': item.isbold ? 'bold' : undefined,
|
|
171
|
-
'font-size': item.fontsize ? `${item.fontsize * 7}px` : undefined,
|
|
172
|
-
'color': '#6b7280',
|
|
173
|
-
}"
|
|
174
|
-
>
|
|
175
|
-
{{ item.text }}
|
|
176
|
-
</div>
|
|
177
|
-
</template>
|
|
178
|
-
</div>
|
|
179
|
-
<div class="receipt-modal-footer">
|
|
180
|
-
<VanButton
|
|
181
|
-
v-if="showSaveButton"
|
|
182
|
-
class="save-button"
|
|
183
|
-
type="primary"
|
|
184
|
-
@click="ok"
|
|
185
|
-
>
|
|
186
|
-
{{ saveButtonText }}
|
|
187
|
-
</VanButton>
|
|
188
|
-
<VanButton class="close-button" @click="close">
|
|
189
|
-
{{ closeButtonText }}
|
|
190
|
-
</VanButton>
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
</VanPopup>
|
|
194
|
-
</template>
|
|
195
|
-
|
|
196
|
-
<style lang="less">
|
|
197
|
-
/* 全局样式,不使用scoped */
|
|
198
|
-
body.receipt-modal-open {
|
|
199
|
-
overflow: hidden !important;
|
|
200
|
-
position: fixed !important;
|
|
201
|
-
width: 100% !important;
|
|
202
|
-
height: 100% !important;
|
|
203
|
-
left: 0 !important;
|
|
204
|
-
/* top设置由JS动态控制 */
|
|
205
|
-
}
|
|
206
|
-
</style>
|
|
207
|
-
|
|
208
|
-
<style lang="less" scoped>
|
|
209
|
-
.receipt-modal {
|
|
210
|
-
z-index: 1000;
|
|
211
|
-
border-radius: 8px;
|
|
212
|
-
overflow: hidden;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.receipt-modal-container {
|
|
216
|
-
display: flex;
|
|
217
|
-
flex-direction: column;
|
|
218
|
-
max-height: 80vh;
|
|
219
|
-
padding: 16px;
|
|
220
|
-
box-sizing: border-box;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.receipt-modal-header {
|
|
224
|
-
display: flex;
|
|
225
|
-
justify-content: center;
|
|
226
|
-
align-items: center;
|
|
227
|
-
margin-bottom: 16px;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
.receipt-modal-title-container {
|
|
231
|
-
text-align: center;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.receipt-modal-title {
|
|
235
|
-
font-size: 18px;
|
|
236
|
-
font-weight: bold;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
.receipt-modal-subtitle {
|
|
240
|
-
font-size: 14px;
|
|
241
|
-
color: #666;
|
|
242
|
-
margin-top: 4px;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.receipt-modal-content {
|
|
246
|
-
flex: 1;
|
|
247
|
-
overflow-y: auto;
|
|
248
|
-
max-height: 50vh;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
.receipt-modal-footer {
|
|
252
|
-
display: flex;
|
|
253
|
-
justify-content: space-between;
|
|
254
|
-
gap: 12px;
|
|
255
|
-
margin-top: 16px;
|
|
256
|
-
padding-bottom: 8px;
|
|
257
|
-
padding-left: 16px;
|
|
258
|
-
padding-right: 16px;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
.save-button,
|
|
262
|
-
.close-button {
|
|
263
|
-
flex: 1;
|
|
264
|
-
height: 36px;
|
|
265
|
-
font-size: 14px;
|
|
266
|
-
max-width: 120px;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.print-list-item {
|
|
270
|
-
padding: 8px 0;
|
|
271
|
-
// border-bottom: 1px solid #eee;
|
|
272
|
-
}
|
|
273
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { runLogic } from '@af-mobile-client-vue3/services/api/common'
|
|
3
|
+
import { mobileUtil } from '@af-mobile-client-vue3/utils/mobileUtil'
|
|
4
|
+
import {
|
|
5
|
+
Button as VanButton,
|
|
6
|
+
Popup as VanPopup,
|
|
7
|
+
} from 'vant'
|
|
8
|
+
import { defineEmits, onUnmounted, ref, watch } from 'vue'
|
|
9
|
+
|
|
10
|
+
interface PrintItem {
|
|
11
|
+
type?: string
|
|
12
|
+
text?: string
|
|
13
|
+
align?: 'left' | 'center' | 'right'
|
|
14
|
+
isbold?: boolean
|
|
15
|
+
fontsize?: number
|
|
16
|
+
value?: number
|
|
17
|
+
unit?: string
|
|
18
|
+
[key: string]: any
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const props = defineProps({
|
|
22
|
+
title: {
|
|
23
|
+
type: String,
|
|
24
|
+
default: '电子凭证',
|
|
25
|
+
},
|
|
26
|
+
subTitle: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: '',
|
|
29
|
+
},
|
|
30
|
+
showSaveButton: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: true,
|
|
33
|
+
},
|
|
34
|
+
saveButtonText: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: '打印',
|
|
37
|
+
},
|
|
38
|
+
closeButtonText: {
|
|
39
|
+
type: String,
|
|
40
|
+
default: '完成',
|
|
41
|
+
},
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
const emit = defineEmits(['update:show', 'ok', 'close'])
|
|
45
|
+
|
|
46
|
+
// 保存原始滚动位置和样式
|
|
47
|
+
const scrollPosition = ref(0)
|
|
48
|
+
const documentWidth = ref(0)
|
|
49
|
+
// 是否显示弹窗
|
|
50
|
+
const show = ref(false)
|
|
51
|
+
// 打印列表
|
|
52
|
+
const printList = ref<PrintItem[]>([])
|
|
53
|
+
// 获取祖父组件的方法
|
|
54
|
+
// const success = inject('success')
|
|
55
|
+
|
|
56
|
+
// 锁定滚动
|
|
57
|
+
function lockScroll() {
|
|
58
|
+
// 保存当前滚动位置
|
|
59
|
+
scrollPosition.value = window.pageYOffset
|
|
60
|
+
// 保存文档原始宽度以防止滚动条消失导致的页面抖动
|
|
61
|
+
documentWidth.value = document.documentElement.clientWidth
|
|
62
|
+
// 弹窗打开时,给body添加类以禁止滚动
|
|
63
|
+
document.body.classList.add('receipt-modal-open')
|
|
64
|
+
// 设置body的top位置,保持视觉位置不变
|
|
65
|
+
document.body.style.top = `-${scrollPosition.value}px`
|
|
66
|
+
// 保持页面宽度不变,防止滚动条消失导致的布局偏移
|
|
67
|
+
document.body.style.width = `${documentWidth.value}px`
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 解除滚动锁定
|
|
71
|
+
function unlockScroll() {
|
|
72
|
+
// 弹窗关闭时,移除禁止滚动的类
|
|
73
|
+
document.body.classList.remove('receipt-modal-open')
|
|
74
|
+
// 恢复body样式
|
|
75
|
+
document.body.style.top = ''
|
|
76
|
+
document.body.style.width = ''
|
|
77
|
+
// 恢复滚动位置
|
|
78
|
+
window.scrollTo(0, scrollPosition.value)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 调用Logic组织打印参数
|
|
82
|
+
async function printParams(printLogic: string, printId: string, otherParams?: any) {
|
|
83
|
+
try {
|
|
84
|
+
printList.value = await runLogic(printLogic, { id: printId, otherParams })
|
|
85
|
+
console.log('打印参数==', printList.value)
|
|
86
|
+
if (printList.value.length > 0) {
|
|
87
|
+
show.value = true
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// 没查到数据默认不打印
|
|
91
|
+
close()
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('Error calling logic:', error)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// 打印
|
|
100
|
+
function ok() {
|
|
101
|
+
// 实际项目中应添加收据截图保存逻辑
|
|
102
|
+
mobileUtil.execute({
|
|
103
|
+
funcName: 'print',
|
|
104
|
+
param: { data: printList.value },
|
|
105
|
+
callbackFunc: (result) => {
|
|
106
|
+
// emit('ok', { status: true })
|
|
107
|
+
emit('close', { status: true })
|
|
108
|
+
},
|
|
109
|
+
})
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 关闭弹窗
|
|
113
|
+
function close() {
|
|
114
|
+
show.value = false
|
|
115
|
+
emit('close', { status: true })
|
|
116
|
+
// if (typeof success === 'function') {
|
|
117
|
+
// success()
|
|
118
|
+
// }
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// 监听show变化,控制body滚动
|
|
122
|
+
watch(() => show.value, (newVal, oldVal) => {
|
|
123
|
+
if (newVal && !oldVal) {
|
|
124
|
+
lockScroll()
|
|
125
|
+
}
|
|
126
|
+
else if (!newVal && oldVal) {
|
|
127
|
+
unlockScroll()
|
|
128
|
+
}
|
|
129
|
+
}, { immediate: true })
|
|
130
|
+
|
|
131
|
+
// 组件卸载时确保移除类和恢复滚动
|
|
132
|
+
onUnmounted(() => {
|
|
133
|
+
if (document.body.classList.contains('receipt-modal-open')) {
|
|
134
|
+
unlockScroll()
|
|
135
|
+
}
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
// 暴露组织参数的给父组件调用
|
|
139
|
+
defineExpose({ printParams, close })
|
|
140
|
+
</script>
|
|
141
|
+
|
|
142
|
+
<template>
|
|
143
|
+
<VanPopup
|
|
144
|
+
:show="show"
|
|
145
|
+
|
|
146
|
+
:close-on-click-overlay="false"
|
|
147
|
+
position="center"
|
|
148
|
+
round lock-scroll
|
|
149
|
+
class="receipt-modal"
|
|
150
|
+
:style="{ width: '90%', maxWidth: '375px' }"
|
|
151
|
+
>
|
|
152
|
+
<div class="receipt-modal-container">
|
|
153
|
+
<div class="receipt-modal-header">
|
|
154
|
+
<div class="receipt-modal-title-container">
|
|
155
|
+
<div class="receipt-modal-title">
|
|
156
|
+
{{ props.title }}
|
|
157
|
+
</div>
|
|
158
|
+
<div v-if="subTitle" class="receipt-modal-subtitle">
|
|
159
|
+
{{ props.subTitle }}
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="receipt-modal-content">
|
|
164
|
+
<template v-for="(item, index) in printList" :key="index">
|
|
165
|
+
<div
|
|
166
|
+
v-if="item?.text !== undefined"
|
|
167
|
+
class="print-list-item"
|
|
168
|
+
:style="{
|
|
169
|
+
'text-align': item.align || undefined,
|
|
170
|
+
'font-weight': item.isbold ? 'bold' : undefined,
|
|
171
|
+
'font-size': item.fontsize ? `${item.fontsize * 7}px` : undefined,
|
|
172
|
+
'color': '#6b7280',
|
|
173
|
+
}"
|
|
174
|
+
>
|
|
175
|
+
{{ item.text }}
|
|
176
|
+
</div>
|
|
177
|
+
</template>
|
|
178
|
+
</div>
|
|
179
|
+
<div class="receipt-modal-footer">
|
|
180
|
+
<VanButton
|
|
181
|
+
v-if="showSaveButton"
|
|
182
|
+
class="save-button"
|
|
183
|
+
type="primary"
|
|
184
|
+
@click="ok"
|
|
185
|
+
>
|
|
186
|
+
{{ saveButtonText }}
|
|
187
|
+
</VanButton>
|
|
188
|
+
<VanButton class="close-button" @click="close">
|
|
189
|
+
{{ closeButtonText }}
|
|
190
|
+
</VanButton>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</VanPopup>
|
|
194
|
+
</template>
|
|
195
|
+
|
|
196
|
+
<style lang="less">
|
|
197
|
+
/* 全局样式,不使用scoped */
|
|
198
|
+
body.receipt-modal-open {
|
|
199
|
+
overflow: hidden !important;
|
|
200
|
+
position: fixed !important;
|
|
201
|
+
width: 100% !important;
|
|
202
|
+
height: 100% !important;
|
|
203
|
+
left: 0 !important;
|
|
204
|
+
/* top设置由JS动态控制 */
|
|
205
|
+
}
|
|
206
|
+
</style>
|
|
207
|
+
|
|
208
|
+
<style lang="less" scoped>
|
|
209
|
+
.receipt-modal {
|
|
210
|
+
z-index: 1000;
|
|
211
|
+
border-radius: 8px;
|
|
212
|
+
overflow: hidden;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.receipt-modal-container {
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
max-height: 80vh;
|
|
219
|
+
padding: 16px;
|
|
220
|
+
box-sizing: border-box;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.receipt-modal-header {
|
|
224
|
+
display: flex;
|
|
225
|
+
justify-content: center;
|
|
226
|
+
align-items: center;
|
|
227
|
+
margin-bottom: 16px;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.receipt-modal-title-container {
|
|
231
|
+
text-align: center;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.receipt-modal-title {
|
|
235
|
+
font-size: 18px;
|
|
236
|
+
font-weight: bold;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.receipt-modal-subtitle {
|
|
240
|
+
font-size: 14px;
|
|
241
|
+
color: #666;
|
|
242
|
+
margin-top: 4px;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.receipt-modal-content {
|
|
246
|
+
flex: 1;
|
|
247
|
+
overflow-y: auto;
|
|
248
|
+
max-height: 50vh;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.receipt-modal-footer {
|
|
252
|
+
display: flex;
|
|
253
|
+
justify-content: space-between;
|
|
254
|
+
gap: 12px;
|
|
255
|
+
margin-top: 16px;
|
|
256
|
+
padding-bottom: 8px;
|
|
257
|
+
padding-left: 16px;
|
|
258
|
+
padding-right: 16px;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.save-button,
|
|
262
|
+
.close-button {
|
|
263
|
+
flex: 1;
|
|
264
|
+
height: 36px;
|
|
265
|
+
font-size: 14px;
|
|
266
|
+
max-width: 120px;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.print-list-item {
|
|
270
|
+
padding: 8px 0;
|
|
271
|
+
// border-bottom: 1px solid #eee;
|
|
272
|
+
}
|
|
273
|
+
</style>
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import CardContainer from '@af-mobile-client-vue3/components/data/CardContainer/CardContainer.vue'
|
|
2
|
-
import CardHeader from '@af-mobile-client-vue3/components/data/CardContainer/CardHeader.vue'
|
|
3
|
-
import ChargePrintSelectorAndRemarks from './ChargePrintSelectorAndRemarks.vue'
|
|
4
|
-
import CodePayment from './CodePayment.vue'
|
|
5
|
-
import FileUploader from './FileUploader.vue'
|
|
6
|
-
// import FormField from './FormField.vue'
|
|
7
|
-
import GridFileUploader from './GridFileUploader.vue'
|
|
8
|
-
// import InfoCard from './InfoCard.vue'
|
|
9
|
-
import PaymentMethodSelector from './PaymentMethodSelector.vue'
|
|
10
|
-
import PaymentMethodSelectorCard from './PaymentMethodSelectorCard.vue'
|
|
11
|
-
import ReceiptModal from './ReceiptModal.vue'
|
|
12
|
-
// import SafetyGuideModal from './SafetyGuideModal.vue'
|
|
13
|
-
|
|
14
|
-
export {
|
|
15
|
-
CardContainer,
|
|
16
|
-
CardHeader,
|
|
17
|
-
ChargePrintSelectorAndRemarks,
|
|
18
|
-
CodePayment,
|
|
19
|
-
FileUploader,
|
|
20
|
-
// FormField,
|
|
21
|
-
GridFileUploader,
|
|
22
|
-
// InfoCard,
|
|
23
|
-
PaymentMethodSelector,
|
|
24
|
-
PaymentMethodSelectorCard,
|
|
25
|
-
ReceiptModal,
|
|
26
|
-
// SafetyGuideModal,
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default {
|
|
30
|
-
install(app: any) {
|
|
31
|
-
app.component('CardContainer', CardContainer)
|
|
32
|
-
app.component('CardHeader', CardHeader)
|
|
33
|
-
// app.component('FormField', FormField)
|
|
34
|
-
// app.component('InfoCard', InfoCard)
|
|
35
|
-
app.component('PaymentMethodSelector', PaymentMethodSelector)
|
|
36
|
-
app.component('PaymentMethodSelectorCard', PaymentMethodSelectorCard)
|
|
37
|
-
app.component('ChargePrintSelectorAndRemarks', ChargePrintSelectorAndRemarks)
|
|
38
|
-
app.component('FileUploader', FileUploader)
|
|
39
|
-
app.component('GridFileUploader', GridFileUploader)
|
|
40
|
-
app.component('ReceiptModal', ReceiptModal)
|
|
41
|
-
// app.component('SafetyGuideModal', SafetyGuideModal)
|
|
42
|
-
},
|
|
43
|
-
}
|
|
1
|
+
import CardContainer from '@af-mobile-client-vue3/components/data/CardContainer/CardContainer.vue'
|
|
2
|
+
import CardHeader from '@af-mobile-client-vue3/components/data/CardContainer/CardHeader.vue'
|
|
3
|
+
import ChargePrintSelectorAndRemarks from './ChargePrintSelectorAndRemarks.vue'
|
|
4
|
+
import CodePayment from './CodePayment.vue'
|
|
5
|
+
import FileUploader from './FileUploader.vue'
|
|
6
|
+
// import FormField from './FormField.vue'
|
|
7
|
+
import GridFileUploader from './GridFileUploader.vue'
|
|
8
|
+
// import InfoCard from './InfoCard.vue'
|
|
9
|
+
import PaymentMethodSelector from './PaymentMethodSelector.vue'
|
|
10
|
+
import PaymentMethodSelectorCard from './PaymentMethodSelectorCard.vue'
|
|
11
|
+
import ReceiptModal from './ReceiptModal.vue'
|
|
12
|
+
// import SafetyGuideModal from './SafetyGuideModal.vue'
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
CardContainer,
|
|
16
|
+
CardHeader,
|
|
17
|
+
ChargePrintSelectorAndRemarks,
|
|
18
|
+
CodePayment,
|
|
19
|
+
FileUploader,
|
|
20
|
+
// FormField,
|
|
21
|
+
GridFileUploader,
|
|
22
|
+
// InfoCard,
|
|
23
|
+
PaymentMethodSelector,
|
|
24
|
+
PaymentMethodSelectorCard,
|
|
25
|
+
ReceiptModal,
|
|
26
|
+
// SafetyGuideModal,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default {
|
|
30
|
+
install(app: any) {
|
|
31
|
+
app.component('CardContainer', CardContainer)
|
|
32
|
+
app.component('CardHeader', CardHeader)
|
|
33
|
+
// app.component('FormField', FormField)
|
|
34
|
+
// app.component('InfoCard', InfoCard)
|
|
35
|
+
app.component('PaymentMethodSelector', PaymentMethodSelector)
|
|
36
|
+
app.component('PaymentMethodSelectorCard', PaymentMethodSelectorCard)
|
|
37
|
+
app.component('ChargePrintSelectorAndRemarks', ChargePrintSelectorAndRemarks)
|
|
38
|
+
app.component('FileUploader', FileUploader)
|
|
39
|
+
app.component('GridFileUploader', GridFileUploader)
|
|
40
|
+
app.component('ReceiptModal', ReceiptModal)
|
|
41
|
+
// app.component('SafetyGuideModal', SafetyGuideModal)
|
|
42
|
+
},
|
|
43
|
+
}
|