@shwfed/config 3.0.12 → 3.0.13
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/module.json +1 -1
- package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/config.d.vue.ts +18 -18
- package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/config.vue.d.ts +18 -18
- package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/runtime.d.vue.ts +18 -18
- package/dist/runtime/components/config/blocks/2026-06-17/com.shwfed.block.tree.single/runtime.vue.d.ts +18 -18
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/config.d.vue.ts +8 -8
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/config.vue +264 -286
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/config.vue.d.ts +8 -8
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/runtime.d.vue.ts +8 -8
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/runtime.vue +91 -291
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/runtime.vue.d.ts +8 -8
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/schema.d.ts +3 -28
- package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/schema.js +9 -33
- package/dist/runtime/components/config/index.d.vue.ts +2 -2
- package/dist/runtime/components/config/index.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +26 -26
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +26 -26
- package/dist/runtime/components/form/utils/validation.js +9 -7
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +8 -8
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +8 -8
- package/dist/runtime/components/table/columns/2026-07-16/com.shwfed.table.column.upload/config.vue +57 -247
- package/dist/runtime/components/table/columns/2026-07-16/com.shwfed.table.column.upload/prompt.md +2 -2
- package/dist/runtime/components/table/columns/2026-07-16/com.shwfed.table.column.upload/runtime.vue +21 -124
- package/dist/runtime/components/table/columns/2026-07-16/com.shwfed.table.column.upload/schema.d.ts +5 -27
- package/dist/runtime/components/table/columns/2026-07-16/com.shwfed.table.column.upload/schema.js +10 -37
- package/dist/runtime/components/ui/invoice/InvoiceSheet.d.vue.ts +66 -0
- package/dist/runtime/components/ui/invoice/InvoiceSheet.vue +182 -0
- package/dist/runtime/components/ui/invoice/InvoiceSheet.vue.d.ts +66 -0
- package/dist/runtime/components/ui/invoice/index.d.ts +1 -0
- package/dist/runtime/components/ui/invoice/index.js +1 -0
- package/dist/runtime/components/ui/invoice-config/InvoiceConfigShell.d.vue.ts +36 -0
- package/dist/runtime/components/ui/invoice-config/InvoiceConfigShell.vue +41 -0
- package/dist/runtime/components/ui/invoice-config/InvoiceConfigShell.vue.d.ts +36 -0
- package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/expr-field.vue → ui/invoice-config/InvoiceExprField.vue} +4 -4
- package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/json-scope-provider.vue → ui/invoice-config/InvoiceJsonScope.vue} +3 -3
- package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/row-scope-provider.vue → ui/invoice-config/InvoiceRowScope.vue} +2 -2
- package/dist/runtime/components/ui/invoice-config/index.d.ts +4 -0
- package/dist/runtime/components/ui/invoice-config/index.js +4 -0
- package/dist/runtime/share/invoice-eval.d.ts +13 -0
- package/dist/runtime/share/invoice-eval.js +88 -0
- package/dist/runtime/share/invoice.d.ts +68 -0
- package/dist/runtime/share/invoice.js +35 -0
- package/package.json +1 -1
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/expr-field.d.vue.ts → ui/invoice-config/InvoiceExprField.d.vue.ts} +0 -0
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/expr-field.vue.d.ts → ui/invoice-config/InvoiceExprField.vue.d.ts} +0 -0
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/json-scope-provider.d.vue.ts → ui/invoice-config/InvoiceJsonScope.d.vue.ts} +0 -0
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/json-scope-provider.vue.d.ts → ui/invoice-config/InvoiceJsonScope.vue.d.ts} +0 -0
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/row-scope-provider.d.vue.ts → ui/invoice-config/InvoiceRowScope.d.vue.ts} +0 -0
- /package/dist/runtime/components/{config/blocks/2026-07-17/com.shwfed.block.invoice.digital/row-scope-provider.vue.d.ts → ui/invoice-config/InvoiceRowScope.vue.d.ts} +0 -0
- /package/dist/runtime/{components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital → share}/rmb.d.ts +0 -0
- /package/dist/runtime/{components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital → share}/rmb.js +0 -0
|
@@ -26,7 +26,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
26
26
|
readonly compatibilityDate: "2026-07-17";
|
|
27
27
|
readonly items: string;
|
|
28
28
|
readonly request?: string | undefined;
|
|
29
|
-
readonly itemsMaxHeight?: string | undefined;
|
|
30
29
|
readonly invoiceNumber: string;
|
|
31
30
|
readonly issueDate: string;
|
|
32
31
|
readonly buyer: {
|
|
@@ -37,12 +36,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
37
36
|
readonly name: string;
|
|
38
37
|
readonly taxId: string;
|
|
39
38
|
};
|
|
40
|
-
readonly totalAmount: string;
|
|
41
|
-
readonly totalTax: string;
|
|
42
39
|
readonly grandTotal: string;
|
|
43
|
-
readonly remark?: string | undefined;
|
|
44
40
|
readonly issuer?: string | undefined;
|
|
45
41
|
readonly redLetter?: string | undefined;
|
|
42
|
+
readonly itemsMaxHeight?: string | undefined;
|
|
43
|
+
readonly remark?: string | undefined;
|
|
44
|
+
readonly totalAmount: string;
|
|
45
|
+
readonly totalTax: string;
|
|
46
46
|
}) => any;
|
|
47
47
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
48
48
|
"onUpdate:block"?: ((value: {
|
|
@@ -63,7 +63,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
63
63
|
readonly compatibilityDate: "2026-07-17";
|
|
64
64
|
readonly items: string;
|
|
65
65
|
readonly request?: string | undefined;
|
|
66
|
-
readonly itemsMaxHeight?: string | undefined;
|
|
67
66
|
readonly invoiceNumber: string;
|
|
68
67
|
readonly issueDate: string;
|
|
69
68
|
readonly buyer: {
|
|
@@ -74,12 +73,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
74
73
|
readonly name: string;
|
|
75
74
|
readonly taxId: string;
|
|
76
75
|
};
|
|
77
|
-
readonly totalAmount: string;
|
|
78
|
-
readonly totalTax: string;
|
|
79
76
|
readonly grandTotal: string;
|
|
80
|
-
readonly remark?: string | undefined;
|
|
81
77
|
readonly issuer?: string | undefined;
|
|
82
78
|
readonly redLetter?: string | undefined;
|
|
79
|
+
readonly itemsMaxHeight?: string | undefined;
|
|
80
|
+
readonly remark?: string | undefined;
|
|
81
|
+
readonly totalAmount: string;
|
|
82
|
+
readonly totalTax: string;
|
|
83
83
|
}) => any) | undefined;
|
|
84
84
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
85
85
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,90 +1,15 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { computed
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { cel } from "../../../../../utils/cel";
|
|
6
|
-
import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
|
|
7
|
-
import { fetchJsonOption } from "../../../../../share/request";
|
|
8
|
-
import { ScrollArea } from "../../../../ui/scroll-area";
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
import { useInvoiceEval } from "../../../../../share/invoice-eval";
|
|
4
|
+
import { InvoiceSheet } from "../../../../ui/invoice";
|
|
9
5
|
import ItemsColgroup from "./items-colgroup.vue";
|
|
10
|
-
import { toCapital } from "./rmb";
|
|
11
6
|
import { INVOICE_KIND_LABELS } from "./schema";
|
|
12
7
|
defineOptions({ name: "ShwfedBlockInvoiceDigitalRuntime" });
|
|
13
8
|
const block = defineModel("block", { type: null, ...{ required: true } });
|
|
14
9
|
defineProps({
|
|
15
10
|
configure: { type: Function, required: false }
|
|
16
11
|
});
|
|
17
|
-
const
|
|
18
|
-
const json = ref(void 0);
|
|
19
|
-
const jsonOption = computed(
|
|
20
|
-
() => json.value === void 0 ? Option.none() : Option.some(json.value)
|
|
21
|
-
);
|
|
22
|
-
const hasRequest = computed(() => {
|
|
23
|
-
const expr = block.value.request;
|
|
24
|
-
return !!expr && expr.trim().length > 0;
|
|
25
|
-
});
|
|
26
|
-
function baseContext() {
|
|
27
|
-
const inherited = celBindings(inheritedContext);
|
|
28
|
-
if (!hasRequest.value && "json" in inherited) return inherited;
|
|
29
|
-
return { ...inherited, json: jsonOption.value };
|
|
30
|
-
}
|
|
31
|
-
async function refresh() {
|
|
32
|
-
const expr = block.value.request;
|
|
33
|
-
if (!expr || expr.trim().length === 0) {
|
|
34
|
-
json.value = void 0;
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const program = Effect.gen(function* () {
|
|
38
|
-
const body = yield* fetchJsonOption(
|
|
39
|
-
yield* cel(expr, celBindings(inheritedContext))
|
|
40
|
-
);
|
|
41
|
-
return Option.getOrUndefined(body);
|
|
42
|
-
});
|
|
43
|
-
try {
|
|
44
|
-
json.value = await Effect.runPromise(Effect.provide(program, Fetch.layer));
|
|
45
|
-
} catch (err) {
|
|
46
|
-
console.warn("[shwfed-invoice-digital] request failed", err);
|
|
47
|
-
json.value = void 0;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
onMounted(() => void refresh());
|
|
51
|
-
watch(() => block.value.request ?? "", () => void refresh());
|
|
52
|
-
function evaluate(expression, scope) {
|
|
53
|
-
if (!expression || expression.trim().length === 0) return void 0;
|
|
54
|
-
try {
|
|
55
|
-
return Effect.runSync(cel(expression, { ...baseContext(), ...scope }));
|
|
56
|
-
} catch (err) {
|
|
57
|
-
console.warn("[shwfed-invoice-digital] expression evaluation failed", expression, err);
|
|
58
|
-
return void 0;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function text(expression, scope) {
|
|
62
|
-
const v = evaluate(expression, scope);
|
|
63
|
-
return v === null || v === void 0 ? "" : String(v);
|
|
64
|
-
}
|
|
65
|
-
function toFiniteNumber(v) {
|
|
66
|
-
if (typeof v === "number") return Number.isFinite(v) ? v : null;
|
|
67
|
-
if (typeof v === "string" && v.trim() !== "") {
|
|
68
|
-
const n = Number(v);
|
|
69
|
-
return Number.isFinite(n) ? n : null;
|
|
70
|
-
}
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const MONEY_FORMAT = new Intl.NumberFormat("zh-CN", {
|
|
74
|
-
minimumFractionDigits: 2,
|
|
75
|
-
maximumFractionDigits: 2
|
|
76
|
-
});
|
|
77
|
-
function money(expression, scope) {
|
|
78
|
-
const v = evaluate(expression, scope);
|
|
79
|
-
if (v === null || v === void 0) return "";
|
|
80
|
-
if (typeof v === "number") return Number.isFinite(v) ? MONEY_FORMAT.format(v) : "";
|
|
81
|
-
return String(v);
|
|
82
|
-
}
|
|
83
|
-
function plain(expression, scope) {
|
|
84
|
-
const v = evaluate(expression, scope);
|
|
85
|
-
if (v === null || v === void 0) return "";
|
|
86
|
-
return String(v);
|
|
87
|
-
}
|
|
12
|
+
const { evaluate, text, money, plain, bool, capital } = useInvoiceEval(() => block.value.request);
|
|
88
13
|
const title = computed(
|
|
89
14
|
() => `\u7535\u5B50\u53D1\u7968\uFF08${INVOICE_KIND_LABELS[block.value.kind ?? "special"]}\uFF09`
|
|
90
15
|
);
|
|
@@ -121,226 +46,101 @@ const rows = computed(
|
|
|
121
46
|
const totalAmount = computed(() => money(block.value.totalAmount));
|
|
122
47
|
const totalTax = computed(() => money(block.value.totalTax));
|
|
123
48
|
const grandTotal = computed(() => money(block.value.grandTotal));
|
|
124
|
-
const grandTotalCapital = computed(() =>
|
|
125
|
-
const n = toFiniteNumber(evaluate(block.value.grandTotal));
|
|
126
|
-
return n === null ? "" : toCapital(n) ?? "";
|
|
127
|
-
});
|
|
49
|
+
const grandTotalCapital = computed(() => capital(block.value.grandTotal));
|
|
128
50
|
const remark = computed(() => text(block.value.remark));
|
|
129
51
|
const issuer = computed(() => text(block.value.issuer));
|
|
130
|
-
const redLetter = computed(() =>
|
|
131
|
-
const MIN_ROWS = 6;
|
|
132
|
-
const fillerRows = computed(() => Math.max(0, MIN_ROWS - rows.value.length));
|
|
133
|
-
const itemsStyle = computed(
|
|
134
|
-
() => block.value.itemsMaxHeight ? { maxHeight: block.value.itemsMaxHeight } : void 0
|
|
135
|
-
);
|
|
52
|
+
const redLetter = computed(() => bool(block.value.redLetter));
|
|
136
53
|
</script>
|
|
137
54
|
|
|
138
55
|
<template>
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
<div>
|
|
157
|
-
<dt>开票日期:</dt>
|
|
158
|
-
<dd>{{ issueDate }}</dd>
|
|
159
|
-
</div>
|
|
160
|
-
</dl>
|
|
161
|
-
</header>
|
|
162
|
-
|
|
163
|
-
<div class="frame">
|
|
164
|
-
<!-- 购销双方 -->
|
|
165
|
-
<div class="parties">
|
|
166
|
-
<div class="party">
|
|
167
|
-
<div class="side-label">
|
|
168
|
-
购买方信息
|
|
169
|
-
</div>
|
|
170
|
-
<div class="party-body">
|
|
171
|
-
<div class="party-row">
|
|
172
|
-
<span class="party-key">名称:</span>
|
|
173
|
-
<span class="party-value">{{ buyer.name }}</span>
|
|
174
|
-
</div>
|
|
175
|
-
<div class="party-row">
|
|
176
|
-
<span class="party-key">统一社会信用代码/纳税人识别号:</span>
|
|
177
|
-
<span class="party-value tax-id">{{ buyer.taxId }}</span>
|
|
178
|
-
</div>
|
|
179
|
-
</div>
|
|
180
|
-
</div>
|
|
181
|
-
<div class="party">
|
|
182
|
-
<div class="side-label">
|
|
183
|
-
销售方信息
|
|
184
|
-
</div>
|
|
185
|
-
<div class="party-body">
|
|
186
|
-
<div class="party-row">
|
|
187
|
-
<span class="party-key">名称:</span>
|
|
188
|
-
<span class="party-value">{{ seller.name }}</span>
|
|
189
|
-
</div>
|
|
190
|
-
<div class="party-row">
|
|
191
|
-
<span class="party-key">统一社会信用代码/纳税人识别号:</span>
|
|
192
|
-
<span class="party-value tax-id">{{ seller.taxId }}</span>
|
|
193
|
-
</div>
|
|
194
|
-
</div>
|
|
195
|
-
</div>
|
|
196
|
-
</div>
|
|
56
|
+
<InvoiceSheet
|
|
57
|
+
:title="title"
|
|
58
|
+
:invoice-number="invoiceNumber"
|
|
59
|
+
:issue-date="issueDate"
|
|
60
|
+
:buyer="buyer"
|
|
61
|
+
:seller="seller"
|
|
62
|
+
:grand-total="grandTotal"
|
|
63
|
+
:grand-total-capital="grandTotalCapital"
|
|
64
|
+
:issuer="issuer"
|
|
65
|
+
:red-letter="redLetter"
|
|
66
|
+
:column-count="8"
|
|
67
|
+
:row-count="rows.length"
|
|
68
|
+
:items-max-height="block.itemsMaxHeight"
|
|
69
|
+
>
|
|
70
|
+
<template #colgroup>
|
|
71
|
+
<ItemsColgroup />
|
|
72
|
+
</template>
|
|
197
73
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
<
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
</div>
|
|
74
|
+
<template #items-head>
|
|
75
|
+
<tr>
|
|
76
|
+
<th>项目名称</th>
|
|
77
|
+
<th>规格型号</th>
|
|
78
|
+
<th>单 位</th>
|
|
79
|
+
<th>数 量</th>
|
|
80
|
+
<th>单 价</th>
|
|
81
|
+
<th>金 额</th>
|
|
82
|
+
<th>税率/征收率</th>
|
|
83
|
+
<th>税 额</th>
|
|
84
|
+
</tr>
|
|
85
|
+
</template>
|
|
211
86
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
</
|
|
87
|
+
<template #items-body>
|
|
88
|
+
<tr
|
|
89
|
+
v-for="(row, index) in rows"
|
|
90
|
+
:key="index"
|
|
91
|
+
>
|
|
92
|
+
<td class="cell-text">
|
|
93
|
+
{{ row.name }}
|
|
94
|
+
</td>
|
|
95
|
+
<!-- 规格型号内容居中(项目名称是唯一左对齐的文本栏) -->
|
|
96
|
+
<td class="cell-text cell-center">
|
|
97
|
+
{{ row.spec }}
|
|
98
|
+
</td>
|
|
99
|
+
<td class="cell-center">
|
|
100
|
+
{{ row.unit }}
|
|
101
|
+
</td>
|
|
102
|
+
<td class="cell-num">
|
|
103
|
+
{{ row.quantity }}
|
|
104
|
+
</td>
|
|
105
|
+
<td class="cell-num">
|
|
106
|
+
{{ row.unitPrice }}
|
|
107
|
+
</td>
|
|
108
|
+
<td class="cell-num">
|
|
109
|
+
{{ row.amount }}
|
|
110
|
+
</td>
|
|
111
|
+
<td class="cell-center">
|
|
112
|
+
{{ row.taxRate }}
|
|
113
|
+
</td>
|
|
114
|
+
<td class="cell-num">
|
|
115
|
+
{{ row.taxAmount }}
|
|
116
|
+
</td>
|
|
117
|
+
</tr>
|
|
118
|
+
</template>
|
|
227
119
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
>
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
v-for="(row, index) in rows"
|
|
240
|
-
:key="index"
|
|
241
|
-
>
|
|
242
|
-
<td class="cell-text">
|
|
243
|
-
{{ row.name }}
|
|
244
|
-
</td>
|
|
245
|
-
<!-- 规格型号内容居中(项目名称是唯一左对齐的文本栏) -->
|
|
246
|
-
<td class="cell-text cell-center">
|
|
247
|
-
{{ row.spec }}
|
|
248
|
-
</td>
|
|
249
|
-
<td class="cell-center">
|
|
250
|
-
{{ row.unit }}
|
|
251
|
-
</td>
|
|
252
|
-
<td class="cell-num">
|
|
253
|
-
{{ row.quantity }}
|
|
254
|
-
</td>
|
|
255
|
-
<td class="cell-num">
|
|
256
|
-
{{ row.unitPrice }}
|
|
257
|
-
</td>
|
|
258
|
-
<td class="cell-num">
|
|
259
|
-
{{ row.amount }}
|
|
260
|
-
</td>
|
|
261
|
-
<td class="cell-center">
|
|
262
|
-
{{ row.taxRate }}
|
|
263
|
-
</td>
|
|
264
|
-
<td class="cell-num">
|
|
265
|
-
{{ row.taxAmount }}
|
|
266
|
-
</td>
|
|
267
|
-
</tr>
|
|
268
|
-
<!-- 撑满票面的空行,纸质票同款 -->
|
|
269
|
-
<tr
|
|
270
|
-
v-for="n in fillerRows"
|
|
271
|
-
:key="`filler-${n}`"
|
|
272
|
-
class="filler"
|
|
273
|
-
>
|
|
274
|
-
<td colspan="8">
|
|
275
|
-
|
|
276
|
-
</td>
|
|
277
|
-
</tr>
|
|
278
|
-
</tbody>
|
|
279
|
-
</table>
|
|
280
|
-
</ScrollArea>
|
|
281
|
-
|
|
282
|
-
<table class="items-foot">
|
|
283
|
-
<ItemsColgroup />
|
|
284
|
-
<tfoot>
|
|
285
|
-
<tr>
|
|
286
|
-
<!-- 「合计」只占项目名称列,好让它正对下方的「价税合计(大写)」;
|
|
287
|
-
跨 5 列居中会把它推到票面中间 -->
|
|
288
|
-
<td class="total-label">
|
|
289
|
-
合  计
|
|
290
|
-
</td>
|
|
291
|
-
<td colspan="4" />
|
|
292
|
-
<td class="cell-num">
|
|
293
|
-
<template v-if="totalAmount">
|
|
294
|
-
¥{{ totalAmount }}
|
|
295
|
-
</template>
|
|
296
|
-
</td>
|
|
297
|
-
<td />
|
|
298
|
-
<td class="cell-num">
|
|
299
|
-
<template v-if="totalTax">
|
|
300
|
-
¥{{ totalTax }}
|
|
301
|
-
</template>
|
|
302
|
-
</td>
|
|
303
|
-
</tr>
|
|
304
|
-
</tfoot>
|
|
305
|
-
</table>
|
|
306
|
-
</div>
|
|
307
|
-
|
|
308
|
-
<!-- 价税合计 -->
|
|
309
|
-
<div class="grand">
|
|
310
|
-
<div class="grand-label">
|
|
311
|
-
价税合计(大写)
|
|
312
|
-
</div>
|
|
313
|
-
<div class="grand-capital">
|
|
314
|
-
<span class="cross">⊗</span>{{ grandTotalCapital }}
|
|
315
|
-
</div>
|
|
316
|
-
<div class="grand-lower">
|
|
317
|
-
<span class="grand-lower-key">(小写)</span>
|
|
318
|
-
<template v-if="grandTotal">
|
|
319
|
-
¥{{ grandTotal }}
|
|
120
|
+
<template #items-foot>
|
|
121
|
+
<tr>
|
|
122
|
+
<!-- 「合计」只占项目名称列,好让它正对下方的「价税合计(大写)」;
|
|
123
|
+
跨 5 列居中会把它推到票面中间 -->
|
|
124
|
+
<td class="total-label">
|
|
125
|
+
合  计
|
|
126
|
+
</td>
|
|
127
|
+
<td colspan="4" />
|
|
128
|
+
<td class="cell-num">
|
|
129
|
+
<template v-if="totalAmount">
|
|
130
|
+
¥{{ totalAmount }}
|
|
320
131
|
</template>
|
|
321
|
-
</
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
{{ remark }}
|
|
331
|
-
</div>
|
|
332
|
-
</div>
|
|
333
|
-
</div>
|
|
132
|
+
</td>
|
|
133
|
+
<td />
|
|
134
|
+
<td class="cell-num">
|
|
135
|
+
<template v-if="totalTax">
|
|
136
|
+
¥{{ totalTax }}
|
|
137
|
+
</template>
|
|
138
|
+
</td>
|
|
139
|
+
</tr>
|
|
140
|
+
</template>
|
|
334
141
|
|
|
335
|
-
<
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
<span class="foot-label">开票人:</span>{{ issuer }}
|
|
340
|
-
</footer>
|
|
341
|
-
</div>
|
|
142
|
+
<template #remark>
|
|
143
|
+
{{ remark }}
|
|
144
|
+
</template>
|
|
145
|
+
</InvoiceSheet>
|
|
342
146
|
</template>
|
|
343
|
-
|
|
344
|
-
<style scoped>
|
|
345
|
-
.invoice{--invoice-ink:maroon;--invoice-data:#000;--invoice-font-song:"Songti SC",SimSun,STSong,"Source Han Serif SC","Noto Serif CJK SC","Noto Serif SC",serif;--invoice-font-kai:KaiTi,"Kaiti SC",STKaiti,"AR PL UKai CN","LXGW WenKai",var(--invoice-font-song);background:#fff;color:var(--invoice-data);container-type:inline-size;font-family:var(--invoice-font-song);font-size:clamp(9px,1.15cqw,14px);line-height:1.5;padding:1rem}.foot-label,.grand-label,.grand-lower-key,.items th,.meta dt,.party-key,.side-label,.title,.total-label{color:var(--invoice-ink);font-family:var(--invoice-font-kai)}.head{display:flex;justify-content:center;padding:1.8em 0 2em;position:relative}.title-block{display:flex;flex-direction:column}.title{font-size:2.6em;font-weight:400;letter-spacing:.1em;white-space:nowrap}.title-rule{border-bottom:1.5px solid var(--invoice-ink);border-top:1.5px solid var(--invoice-ink);height:.32em;margin-top:.45em}.meta{flex-direction:column;gap:.35em;position:absolute;right:0;top:50%;transform:translateY(-50%);white-space:nowrap}.meta,.meta div{display:flex}.meta dt{font-weight:400}.meta dd{letter-spacing:.02em;margin:0}.frame{border:1px solid var(--invoice-ink)}.parties{border-bottom:1px solid var(--invoice-ink);display:grid;grid-template-columns:1fr 1fr}.party{display:grid;grid-template-columns:auto 1fr}.party+.party{border-left:1px solid var(--invoice-ink)}.side-label{align-items:center;border-right:1px solid var(--invoice-ink);display:flex;justify-content:center;letter-spacing:.25em;padding:.5em .4em;text-orientation:upright;white-space:nowrap;writing-mode:vertical-rl}.party-body{flex-direction:column;justify-content:space-around;padding:.6em .8em}.party-body,.party-row{display:flex;min-width:0}.party-row{align-items:baseline}.party-key{white-space:nowrap}.party-value{min-width:0;word-break:break-all}.tax-id{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Courier New,monospace}.items{position:relative}.items table{border-collapse:collapse;table-layout:fixed;width:100%}.items-body,.items-foot,.items-head{position:relative;z-index:1}.items th{font-weight:400;letter-spacing:.05em;padding:.4em .5em;text-align:center}.items td{padding:.25em .5em;vertical-align:top}.cell-text{white-space:pre-wrap;word-break:break-all}.cell-center{text-align:center}.cell-num{font-variant-numeric:tabular-nums;text-align:right}.total-label{letter-spacing:.05em;text-align:center}.items tfoot td{padding-bottom:.35em;padding-top:.35em}.watermark{color:transparent;display:flex;font-size:3.4em;inset:0;justify-content:center;letter-spacing:.5em;pointer-events:none;position:absolute;z-index:0;-webkit-text-stroke:1px color-mix(in srgb,var(--invoice-ink) 40%,#fff);font-family:var(--invoice-font-kai);opacity:.85}.grand,.watermark{align-items:center}.grand{border-bottom:1px solid var(--invoice-ink);border-top:1px solid var(--invoice-ink);display:grid;grid-template-columns:22% 1fr auto}.grand-label{border-right:1px solid var(--invoice-ink);letter-spacing:.1em;padding:.5em 1.2em;text-align:center;white-space:nowrap}.grand-capital{min-width:0;padding:.5em .8em;word-break:break-all}.cross{margin-right:.3em}.grand-lower{font-variant-numeric:tabular-nums;padding:.5em 1.2em;white-space:nowrap}.grand-lower-key{margin-right:.4em}.remark{display:grid;grid-template-columns:auto 1fr;min-height:5em}.remark-body{padding:.5em .8em;white-space:pre-wrap;word-break:break-all}.foot{padding-left:3em;padding-top:.75em}
|
|
346
|
-
</style>
|
|
@@ -26,7 +26,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
26
26
|
readonly compatibilityDate: "2026-07-17";
|
|
27
27
|
readonly items: string;
|
|
28
28
|
readonly request?: string | undefined;
|
|
29
|
-
readonly itemsMaxHeight?: string | undefined;
|
|
30
29
|
readonly invoiceNumber: string;
|
|
31
30
|
readonly issueDate: string;
|
|
32
31
|
readonly buyer: {
|
|
@@ -37,12 +36,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
37
36
|
readonly name: string;
|
|
38
37
|
readonly taxId: string;
|
|
39
38
|
};
|
|
40
|
-
readonly totalAmount: string;
|
|
41
|
-
readonly totalTax: string;
|
|
42
39
|
readonly grandTotal: string;
|
|
43
|
-
readonly remark?: string | undefined;
|
|
44
40
|
readonly issuer?: string | undefined;
|
|
45
41
|
readonly redLetter?: string | undefined;
|
|
42
|
+
readonly itemsMaxHeight?: string | undefined;
|
|
43
|
+
readonly remark?: string | undefined;
|
|
44
|
+
readonly totalAmount: string;
|
|
45
|
+
readonly totalTax: string;
|
|
46
46
|
}) => any;
|
|
47
47
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
48
48
|
"onUpdate:block"?: ((value: {
|
|
@@ -63,7 +63,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
63
63
|
readonly compatibilityDate: "2026-07-17";
|
|
64
64
|
readonly items: string;
|
|
65
65
|
readonly request?: string | undefined;
|
|
66
|
-
readonly itemsMaxHeight?: string | undefined;
|
|
67
66
|
readonly invoiceNumber: string;
|
|
68
67
|
readonly issueDate: string;
|
|
69
68
|
readonly buyer: {
|
|
@@ -74,12 +73,13 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
74
73
|
readonly name: string;
|
|
75
74
|
readonly taxId: string;
|
|
76
75
|
};
|
|
77
|
-
readonly totalAmount: string;
|
|
78
|
-
readonly totalTax: string;
|
|
79
76
|
readonly grandTotal: string;
|
|
80
|
-
readonly remark?: string | undefined;
|
|
81
77
|
readonly issuer?: string | undefined;
|
|
82
78
|
readonly redLetter?: string | undefined;
|
|
79
|
+
readonly itemsMaxHeight?: string | undefined;
|
|
80
|
+
readonly remark?: string | undefined;
|
|
81
|
+
readonly totalAmount: string;
|
|
82
|
+
readonly totalTax: string;
|
|
83
83
|
}) => any) | undefined;
|
|
84
84
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
85
85
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Schema } from 'effect';
|
|
2
|
-
import type
|
|
2
|
+
import { type Configure } from '../../../../../share/invoice.js';
|
|
3
3
|
export { getStructFieldDescription, getStructFieldTitle } from '../../../../table/utils/schema-meta.js';
|
|
4
|
+
export { JSON_VAR, partySchema } from '../../../../../share/invoice.js';
|
|
5
|
+
export type { PartyValue } from '../../../../../share/invoice.js';
|
|
4
6
|
type AnySchema = Schema.Schema<any, any, never>;
|
|
5
|
-
type Configure = (env: Environment) => void;
|
|
6
7
|
export declare const type: "com.shwfed.block.invoice.digital";
|
|
7
8
|
export declare const compatibilityDate: "2026-07-17";
|
|
8
9
|
export declare const metadata: {
|
|
@@ -21,34 +22,9 @@ export declare const metadata: {
|
|
|
21
22
|
readonly grow: true;
|
|
22
23
|
};
|
|
23
24
|
};
|
|
24
|
-
/**
|
|
25
|
-
* 票面自己的(可选)取数:`request` 求值出的 HTTP 响应体,票面**每一栏**都能读。
|
|
26
|
-
*
|
|
27
|
-
* 与「不内建 DataSource」的边界不冲突 —— 这里只有 `request`,没有 `data`:票面各栏
|
|
28
|
-
* 本来就是逐栏 CEL 映射,`json` 只是多了一个可读的上下文变量,而不是又一层「列表 →
|
|
29
|
-
* 行」的取数抽象。不配置时 `json` 为 `none`,票面照旧从外层上下文(`item` / 详情页
|
|
30
|
-
* 变量)取值,行为与加这个字段之前完全一致。
|
|
31
|
-
*
|
|
32
|
-
* 导出给 `config.vue` —— 它直接渲染 `ExpressionEditor`(不经过本 schema),不共享
|
|
33
|
-
* 这份声明的话,编辑器会把 `json` 误报成 `Unknown variable`。镜像 card 块的 `JSON_VAR`。
|
|
34
|
-
*/
|
|
35
|
-
export declare const JSON_VAR: {
|
|
36
|
-
readonly type: "optional<dyn>";
|
|
37
|
-
readonly label: "HTTP 响应体";
|
|
38
|
-
readonly description: "HTTP 响应体(配置了「请求」时为已解析 JSON,否则为 none)";
|
|
39
|
-
};
|
|
40
25
|
/** 票种:决定票面标题(「电子发票(增值税专用发票)」/「…(普通发票)」)。 */
|
|
41
26
|
export declare const INVOICE_KINDS: readonly ["special", "normal"];
|
|
42
27
|
export declare const INVOICE_KIND_LABELS: Record<(typeof INVOICE_KINDS)[number], string>;
|
|
43
|
-
/**
|
|
44
|
-
* 购买方 / 销售方信息栏。票面只有「名称」与「统一社会信用代码/纳税人识别号」两栏 ——
|
|
45
|
-
* 开户行与账号在真实发票上属于「备注」栏的自由文本(不是独立栏位),因此不建模,
|
|
46
|
-
* 由 `remark` 承载。
|
|
47
|
-
*/
|
|
48
|
-
export declare function partySchema(configure: Configure, role: '购买方' | '销售方'): Schema.Struct<{
|
|
49
|
-
name: Schema.Schema<string, string, never>;
|
|
50
|
-
taxId: Schema.Schema<string, string, never>;
|
|
51
|
-
}>;
|
|
52
28
|
/**
|
|
53
29
|
* 明细行的列映射。每个表达式对一行求值,可访问 `item`(当前明细项)与 `index`
|
|
54
30
|
* (序号,从 0 开始)—— 与 `loop` 块同一套行作用域(`registerLoopVariablesIfAbsent`)。
|
|
@@ -104,6 +80,5 @@ export declare function schema(configure: Configure, _blockRef?: AnySchema): Sch
|
|
|
104
80
|
}>;
|
|
105
81
|
export declare function defaultBody(): Record<string, unknown>;
|
|
106
82
|
export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
|
|
107
|
-
export type PartyValue = Value['buyer'];
|
|
108
83
|
export type LineValue = Value['line'];
|
|
109
84
|
export type InvoiceKind = (typeof INVOICE_KINDS)[number];
|
package/dist/runtime/components/config/blocks/2026-07-17/com.shwfed.block.invoice.digital/schema.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
import { Expression, HttpRequestResult } from "../../../../../share/expression.js";
|
|
3
|
+
import {
|
|
4
|
+
boolResult,
|
|
5
|
+
listResult,
|
|
6
|
+
moneyResult,
|
|
7
|
+
partySchema,
|
|
8
|
+
registerJsonIfAbsent,
|
|
9
|
+
textResult
|
|
10
|
+
} from "../../../../../share/invoice.js";
|
|
3
11
|
import { registerLoopVariablesIfAbsent } from "../../../../../share/loop-item-var.js";
|
|
4
12
|
export { getStructFieldDescription, getStructFieldTitle } from "../../../../table/utils/schema-meta.js";
|
|
13
|
+
export { JSON_VAR, partySchema } from "../../../../../share/invoice.js";
|
|
5
14
|
export const type = "com.shwfed.block.invoice.digital";
|
|
6
15
|
export const compatibilityDate = "2026-07-17";
|
|
7
16
|
export const metadata = {
|
|
@@ -14,44 +23,11 @@ export const metadata = {
|
|
|
14
23
|
// 与 `loop` / `tree.single` 同理,见 `config/utils/resolve.ts` 的 `BlockSizeRange.grow`。
|
|
15
24
|
h: { initial: 12, min: 8, max: Infinity, grow: true }
|
|
16
25
|
};
|
|
17
|
-
export const JSON_VAR = {
|
|
18
|
-
type: "optional<dyn>",
|
|
19
|
-
label: "HTTP \u54CD\u5E94\u4F53",
|
|
20
|
-
description: "HTTP \u54CD\u5E94\u4F53\uFF08\u914D\u7F6E\u4E86\u300C\u8BF7\u6C42\u300D\u65F6\u4E3A\u5DF2\u89E3\u6790 JSON\uFF0C\u5426\u5219\u4E3A none\uFF09"
|
|
21
|
-
};
|
|
22
|
-
function registerJsonIfAbsent(env) {
|
|
23
|
-
const declared = env.getDefinitions().variables.some((v) => v.name === "json");
|
|
24
|
-
if (declared) return;
|
|
25
|
-
env.registerVariable("json", JSON_VAR.type, {
|
|
26
|
-
label: JSON_VAR.label,
|
|
27
|
-
description: JSON_VAR.description
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
26
|
export const INVOICE_KINDS = ["special", "normal"];
|
|
31
27
|
export const INVOICE_KIND_LABELS = {
|
|
32
28
|
special: "\u589E\u503C\u7A0E\u4E13\u7528\u53D1\u7968",
|
|
33
29
|
normal: "\u589E\u503C\u7A0E\u666E\u901A\u53D1\u7968"
|
|
34
30
|
};
|
|
35
|
-
const textResult = (t) => t === "string" || t === "dyn" || t.startsWith("optional");
|
|
36
|
-
const moneyResult = (t) => t === "number" || t === "string" || t === "dyn" || t.startsWith("optional");
|
|
37
|
-
const listResult = (t) => t === "dyn" || t.startsWith("list") || t.startsWith("optional");
|
|
38
|
-
const boolResult = (t) => t === "bool" || t === "dyn" || t.startsWith("optional");
|
|
39
|
-
export function partySchema(configure, role) {
|
|
40
|
-
const CelText = Expression({ configure, resultType: textResult });
|
|
41
|
-
return Schema.Struct({
|
|
42
|
-
name: CelText.annotations({
|
|
43
|
-
title: "\u540D\u79F0",
|
|
44
|
-
description: `\u8FD4\u56DE${role}\u540D\u79F0\uFF08\`string\`\uFF09\u7684 CEL \u8868\u8FBE\u5F0F`
|
|
45
|
-
}),
|
|
46
|
-
taxId: CelText.annotations({
|
|
47
|
-
title: "\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801/\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",
|
|
48
|
-
description: `\u8FD4\u56DE${role}\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801\u6216\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7\uFF08\`string\`\uFF09\u7684 CEL \u8868\u8FBE\u5F0F`
|
|
49
|
-
})
|
|
50
|
-
}).annotations({
|
|
51
|
-
title: `${role}\u4FE1\u606F`,
|
|
52
|
-
description: `${role}\u7684\u540D\u79F0\u4E0E\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7\uFF1B\u5F00\u6237\u884C / \u8D26\u53F7\u8BF7\u5199\u5165\u300C\u5907\u6CE8\u300D`
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
31
|
export function lineSchema(configure) {
|
|
56
32
|
const rowConfigure = (env) => {
|
|
57
33
|
configure(env);
|
|
@@ -12,6 +12,7 @@ type __VLS_ModelProps = {
|
|
|
12
12
|
};
|
|
13
13
|
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
14
14
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
"select-version": (version: string) => any;
|
|
15
16
|
"update:config": (value: Readonly<{
|
|
16
17
|
kind: "shwfed.component.page";
|
|
17
18
|
title?: import("../../share/locale.js").LocaleValue;
|
|
@@ -25,8 +26,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
25
26
|
}>[];
|
|
26
27
|
}>;
|
|
27
28
|
}> | null | undefined) => any;
|
|
28
|
-
"select-version": (version: string) => any;
|
|
29
29
|
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
30
|
+
"onSelect-version"?: ((version: string) => any) | undefined;
|
|
30
31
|
"onUpdate:config"?: ((value: Readonly<{
|
|
31
32
|
kind: "shwfed.component.page";
|
|
32
33
|
title?: import("../../share/locale.js").LocaleValue;
|
|
@@ -40,7 +41,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
40
41
|
}>[];
|
|
41
42
|
}>;
|
|
42
43
|
}> | null | undefined) => any) | undefined;
|
|
43
|
-
"onSelect-version"?: ((version: string) => any) | undefined;
|
|
44
44
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
45
45
|
declare const _default: typeof __VLS_export;
|
|
46
46
|
export default _default;
|