easybill-ui 1.1.6 → 1.1.8
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/components/ConstantStatus/index.ts +1 -1
- package/components/CurdForm/index.ts +3 -3
- package/components/CurdForm/src/CurdForm.vue +3 -3
- package/components/CurdForm/src/components/schema-form-checkbox.vue +5 -2
- package/components/CurdForm/src/components/schema-form-date-picker.vue +4 -1
- package/components/CurdForm/src/components/schema-form-input.vue +13 -21
- package/components/CurdForm/src/components/schema-form-radio.vue +5 -2
- package/components/CurdForm/src/components/schema-form-select.vue +6 -3
- package/components/CurdForm/src/components/schema-form-time-picker.vue +4 -1
- package/components/CurdForm/src/components/schema-form-tree-select.vue +5 -2
- package/components/CurdTable/index.ts +2 -2
- package/components/CurdTable/src/CurdTable.vue +13 -13
- package/components/CurdTable/src/STableColumnControl.vue +11 -9
- package/components/CurdTable/src/STableDetail.vue +4 -2
- package/components/CurdTable/src/STableMenu.vue +10 -8
- package/components/DetailInfo/index.ts +1 -1
- package/components/FormDialog/src/FormDialog.vue +15 -7
- package/components/TableFilter/index.ts +1 -1
- package/locale/index.ts +11 -0
- package/locale/lang/en.ts +46 -0
- package/locale/lang/zh-cn.ts +46 -0
- package/package.json +2 -2
- package/theme-chalk/curd-form.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/utils/hooks/useGlobalConfig.ts +2 -0
- package/utils/hooks/useLocal.ts +59 -0
- package/utils/vue/install.ts +2 -2
- package/components/CurdForm/src/index.ts +0 -3
- package/components/CurdTable/src/index.ts +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { withInstall, type SFCWithInstall } from "../../utils"
|
|
2
|
+
import Instance from "./src/CurdForm.vue"
|
|
2
3
|
import FormItem from "./src/CurdFormItem.vue"
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
export const CurdFormItem: SFCWithInstall<typeof FormItem> = withInstall(FormItem)
|
|
4
|
+
export const CurdForm: SFCWithInstall<typeof Instance> = withInstall("CurdForm", Instance)
|
|
5
|
+
export const CurdFormItem: SFCWithInstall<typeof FormItem> = withInstall("CurdFormItem", FormItem)
|
|
6
6
|
export default CurdForm as SFCWithInstall<typeof Instance>
|
|
7
7
|
export * from "./src/directive"
|
|
8
8
|
export * from "./src/hooks"
|
|
@@ -50,7 +50,7 @@ const props = defineProps({
|
|
|
50
50
|
},
|
|
51
51
|
})
|
|
52
52
|
|
|
53
|
-
const emit = defineEmits([
|
|
53
|
+
const emit = defineEmits(["update:modelValue", "change"])
|
|
54
54
|
|
|
55
55
|
const schemaFormRef = ref<InstanceType<typeof ElForm> | undefined>()
|
|
56
56
|
const sFormSchema = ref(props.formSchema)
|
|
@@ -156,7 +156,7 @@ const onChange = (formModel: Fields, formItem: FormItemType) => {
|
|
|
156
156
|
emit("change", formModel, formItem)
|
|
157
157
|
}
|
|
158
158
|
const getFormItemStyle = (formItem: FormItemType) => {
|
|
159
|
-
if (!formItem.span) return ""
|
|
159
|
+
if (!formItem.span) return "el-form-item-full"
|
|
160
160
|
return "el-form-item-" + formItem.span
|
|
161
161
|
}
|
|
162
162
|
const getFormItemProps = (formItem: FormItemType) => {
|
|
@@ -173,7 +173,7 @@ const getFormStyle = () => {
|
|
|
173
173
|
const gutter = props.formSchema.gutter
|
|
174
174
|
if (gutter) {
|
|
175
175
|
const guPx = +parseFloat(String(gutter))
|
|
176
|
-
return {
|
|
176
|
+
return { "--curd-form-gutter": guPx + "px" }
|
|
177
177
|
}
|
|
178
178
|
return {}
|
|
179
179
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="schema-form-radio">
|
|
3
3
|
<div v-if="formItem.loading" class="loading" style="color: #999; font-size: 12px">
|
|
4
|
-
<el-icon class="is-loading"><Loading /></el-icon>
|
|
4
|
+
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
5
5
|
</div>
|
|
6
6
|
<el-checkbox-group v-if="!formItem.loading && formItem.options && formItem.options.length" v-model="model" :class="[props?.showType]" style="width: 100%" v-bind="props" v-on="eventObject">
|
|
7
7
|
<template v-for="option in formItem.options" :key="option.value">
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<div v-if="!formItem.loading && !formItem.options?.length" class="empty">
|
|
13
13
|
<component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
14
14
|
<template v-else>
|
|
15
|
-
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || "
|
|
15
|
+
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || t("el.form.nodata") }}</span>
|
|
16
16
|
</template>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
22
22
|
import { ElCheckbox, ElCheckboxButton, ElCheckboxGroup, ElIcon } from "element-plus"
|
|
23
23
|
import { computed, defineComponent, type PropType, toRaw } from "vue"
|
|
24
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
24
25
|
import { FormItemProps } from "../types"
|
|
25
26
|
export default defineComponent({
|
|
26
27
|
name: "SchemaFormCheckbox",
|
|
@@ -41,10 +42,12 @@ export default defineComponent({
|
|
|
41
42
|
if (!(model.value instanceof Array)) {
|
|
42
43
|
model.value = []
|
|
43
44
|
}
|
|
45
|
+
const { t } = useLocale()
|
|
44
46
|
|
|
45
47
|
return {
|
|
46
48
|
model,
|
|
47
49
|
empty: toRaw(props.props.empty) || "",
|
|
50
|
+
t,
|
|
48
51
|
}
|
|
49
52
|
},
|
|
50
53
|
})
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-date-picker v-model="model" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
|
2
|
+
<el-date-picker v-model="model" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="t('el.form.pleaseSelect', [formItem.label || ''])" v-bind="props" v-on="eventObject"> </el-date-picker>
|
|
3
3
|
</template>
|
|
4
4
|
<script lang="ts">
|
|
5
5
|
import { ElDatePicker, type ModelValueType } from "element-plus"
|
|
6
6
|
import { computed, defineComponent, type PropType } from "vue"
|
|
7
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
7
8
|
import { FormItemProps } from "../types"
|
|
8
9
|
export default defineComponent({
|
|
9
10
|
name: "SchemaFormDatePicker",
|
|
@@ -21,9 +22,11 @@ export default defineComponent({
|
|
|
21
22
|
get: () => props.modelValue,
|
|
22
23
|
set: (val) => emit("update:modelValue", val),
|
|
23
24
|
})
|
|
25
|
+
const { t } = useLocale()
|
|
24
26
|
|
|
25
27
|
return {
|
|
26
28
|
model,
|
|
29
|
+
t,
|
|
27
30
|
}
|
|
28
31
|
},
|
|
29
32
|
})
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-input v-model="model" v-trim :disabled="formItem.disabled || false"
|
|
2
|
+
<el-input v-model="model" v-trim :disabled="formItem.disabled || false" :placeholder="t('el.form.pleaseInput', [formItem.label || ''])" v-bind="props.props" autocomplete="new-password" v-on="eventObject" />
|
|
3
3
|
</template>
|
|
4
|
-
<script lang="ts">
|
|
4
|
+
<script lang="ts" setup>
|
|
5
5
|
import { ElInput } from "element-plus"
|
|
6
|
-
import { computed
|
|
6
|
+
import { computed } from "vue"
|
|
7
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
7
8
|
import { directives } from "../directive"
|
|
8
9
|
import { FormItemProps } from "../types"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
directives: {
|
|
13
|
-
...directives,
|
|
14
|
-
},
|
|
15
|
-
props: FormItemProps,
|
|
16
|
-
emits: ["update:modelValue"],
|
|
17
|
-
setup(props, { emit }) {
|
|
18
|
-
const model = computed({
|
|
19
|
-
get: () => props.modelValue,
|
|
20
|
-
set: (val) => emit("update:modelValue", val),
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
return {
|
|
24
|
-
model,
|
|
25
|
-
}
|
|
26
|
-
},
|
|
10
|
+
const vTrim = directives.trim
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
...FormItemProps,
|
|
27
13
|
})
|
|
14
|
+
const emit = defineEmits(["update:modelValue"])
|
|
15
|
+
const model = computed({
|
|
16
|
+
get: () => props.modelValue,
|
|
17
|
+
set: (val) => emit("update:modelValue", val),
|
|
18
|
+
})
|
|
19
|
+
const { t } = useLocale()
|
|
28
20
|
</script>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="schema-form-radio">
|
|
3
3
|
<div v-if="formItem.loading" class="loading" style="color: #999; font-size: 12px">
|
|
4
|
-
<el-icon class="is-loading"><Loading /></el-icon>
|
|
4
|
+
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
5
5
|
</div>
|
|
6
6
|
<el-radio-group v-if="!formItem.loading && formItem.options && formItem.options.length" v-model="model" :class="[props?.showType]" v-bind="props" v-on="eventObject">
|
|
7
7
|
<template v-for="option in formItem.options" :key="option.value">
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<div v-if="!formItem.loading && !formItem.options?.length" class="empty">
|
|
21
21
|
<component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
22
22
|
<template v-else>
|
|
23
|
-
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || "
|
|
23
|
+
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || t("el.form.nodata") }}</span>
|
|
24
24
|
</template>
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
30
30
|
import { ElIcon, ElRadio, ElRadioButton, ElRadioGroup } from "element-plus"
|
|
31
31
|
import { computed, defineComponent, toRaw } from "vue"
|
|
32
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
32
33
|
import FormTooltip from "../FormTooltip.vue"
|
|
33
34
|
import { FormItemProps } from "../types"
|
|
34
35
|
export default defineComponent({
|
|
@@ -47,9 +48,11 @@ export default defineComponent({
|
|
|
47
48
|
get: () => props.modelValue,
|
|
48
49
|
set: (val) => emit("update:modelValue", val),
|
|
49
50
|
})
|
|
51
|
+
const { t } = useLocale()
|
|
50
52
|
return {
|
|
51
53
|
model,
|
|
52
54
|
empty: toRaw(props.props.empty) || "",
|
|
55
|
+
t,
|
|
53
56
|
}
|
|
54
57
|
},
|
|
55
58
|
})
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-select v-model="model" style="width: 100%" :loading="formItem.loading || loading" :placeholder="'
|
|
3
|
-
<el-option v-if="props.all && !props.multiple" value="" label="
|
|
4
|
-
<el-checkbox v-if="props.all && props.multiple" v-model="checked" label="
|
|
2
|
+
<el-select v-model="model" style="width: 100%" :loading="formItem.loading || loading" :placeholder="t('el.form.pleaseSelect', [formItem.label || ''])" v-bind="props" v-on="eventObject">
|
|
3
|
+
<el-option v-if="props.all && !props.multiple" value="" :label="t('el.form.all')"></el-option>
|
|
4
|
+
<el-checkbox v-if="props.all && props.multiple" v-model="checked" :label="t('el.form.allSelect')" class="schema-form-select-check" />
|
|
5
5
|
<template v-for="option in list" :key="option.value">
|
|
6
6
|
<el-option :value="option.value" :label="option.label" :disabled="option.disabled">
|
|
7
7
|
<div v-if="option.html" v-html="option.html"></div>
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
<script lang="ts">
|
|
14
14
|
import { ElCheckbox, ElOption, ElSelect } from "element-plus"
|
|
15
15
|
import { computed, defineComponent, onMounted, ref, watch } from "vue"
|
|
16
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
16
17
|
import type { CurdFormOptionItem } from "../types"
|
|
17
18
|
import { FormItemProps } from "../types"
|
|
18
19
|
export default defineComponent({
|
|
@@ -31,6 +32,7 @@ export default defineComponent({
|
|
|
31
32
|
get: () => props.modelValue,
|
|
32
33
|
set: (val) => emit("update:modelValue", val),
|
|
33
34
|
})
|
|
35
|
+
const { t } = useLocale()
|
|
34
36
|
const checked = computed({
|
|
35
37
|
get() {
|
|
36
38
|
return Array.isArray(model.value) && model.value.length && props.formItem?.options?.every((item) => Array.isArray(model.value) && model.value?.includes(item.value))
|
|
@@ -82,6 +84,7 @@ export default defineComponent({
|
|
|
82
84
|
selectProps,
|
|
83
85
|
list,
|
|
84
86
|
loading,
|
|
87
|
+
t,
|
|
85
88
|
}
|
|
86
89
|
},
|
|
87
90
|
})
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-time-picker v-model="model"
|
|
2
|
+
<el-time-picker v-model="model" :placeholder="t('el.form.pleaseSelect', [formItem.label || ''])" v-bind="props" v-on="eventObject"> </el-time-picker>
|
|
3
3
|
</template>
|
|
4
4
|
<script lang="ts">
|
|
5
5
|
import { ElTimePicker, type ModelValueType } from "element-plus"
|
|
6
6
|
import { computed, defineComponent, type PropType } from "vue"
|
|
7
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
7
8
|
import { FormItemProps } from "../types"
|
|
8
9
|
export default defineComponent({
|
|
9
10
|
name: "SchemaFormTimePicker",
|
|
@@ -21,9 +22,11 @@ export default defineComponent({
|
|
|
21
22
|
get: () => props.modelValue,
|
|
22
23
|
set: (val) => emit("update:modelValue", val),
|
|
23
24
|
})
|
|
25
|
+
const { t } = useLocale()
|
|
24
26
|
|
|
25
27
|
return {
|
|
26
28
|
model,
|
|
29
|
+
t,
|
|
27
30
|
}
|
|
28
31
|
},
|
|
29
32
|
})
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="schema-form-radio">
|
|
3
3
|
<div v-if="formItem.loading" class="loading" style="color: #999; font-size: 12px">
|
|
4
|
-
<el-icon class="is-loading"><Loading /></el-icon>
|
|
4
|
+
<el-icon class="is-loading"><Loading /></el-icon> {{ t("el.form.loading") }}
|
|
5
5
|
</div>
|
|
6
6
|
<el-tree-select v-if="!formItem.loading && formItem.options && formItem.options.length" v-model="model" :class="[props?.showType]" style="width: 100%" :data="formItem.options" v-bind="props" v-on="eventObject"> </el-tree-select>
|
|
7
7
|
<div v-if="!formItem.loading && !formItem.options?.length" class="empty">
|
|
8
8
|
<component :is="empty" v-if="empty" :form-model="formModel" :form-item="formItem" :props="props" />
|
|
9
9
|
<template v-else>
|
|
10
|
-
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || "
|
|
10
|
+
<el-icon><Warning /></el-icon> <span>{{ props.noDataText || t("el.form.nodata") }}</span>
|
|
11
11
|
</template>
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { Loading, Warning } from "@element-plus/icons-vue"
|
|
17
17
|
import { ElIcon, ElTreeSelect } from "element-plus"
|
|
18
18
|
import { computed, defineComponent, toRaw } from "vue"
|
|
19
|
+
import { useLocale } from "../../../../utils/hooks/useLocal"
|
|
19
20
|
import { FormItemProps } from "../types"
|
|
20
21
|
export default defineComponent({
|
|
21
22
|
name: "SchemaFormTreeSelect",
|
|
@@ -33,10 +34,12 @@ export default defineComponent({
|
|
|
33
34
|
get: () => props.modelValue,
|
|
34
35
|
set: (val) => emit("update:modelValue", val),
|
|
35
36
|
})
|
|
37
|
+
const { t } = useLocale()
|
|
36
38
|
|
|
37
39
|
return {
|
|
38
40
|
model,
|
|
39
41
|
empty: toRaw(props.props.empty) || "",
|
|
42
|
+
t,
|
|
40
43
|
}
|
|
41
44
|
},
|
|
42
45
|
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { withInstall, type SFCWithInstall } from "../../utils"
|
|
2
|
-
import Instance from "./src/
|
|
3
|
-
export const CurdTable: SFCWithInstall<typeof Instance> = withInstall(Instance)
|
|
2
|
+
import Instance from "./src/CurdTable.vue"
|
|
3
|
+
export const CurdTable: SFCWithInstall<typeof Instance> = withInstall("CurdTable", Instance)
|
|
4
4
|
export default CurdTable as SFCWithInstall<typeof Instance>
|
|
5
5
|
export * from "./src/types"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<STableFilter v-if="selectParams.length && filterVisible" ref="sTableFilter" :list-query="search" @search="onSearch" />
|
|
4
4
|
<div v-if="!option.hideMenu" class="table-control">
|
|
5
5
|
<div class="btn-control">
|
|
6
|
-
<el-button v-if="!option.hideMenuAdd && props.fetchCreate" type="primary" :icon="Plus" @click="create()">
|
|
6
|
+
<el-button v-if="!option.hideMenuAdd && props.fetchCreate" type="primary" :icon="Plus" @click="create()">{{ t("el.table.create") }}</el-button>
|
|
7
7
|
<slot name="menuLeft"></slot>
|
|
8
8
|
</div>
|
|
9
9
|
<div class="min-control">
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
</template>
|
|
29
29
|
</STableItem>
|
|
30
30
|
</template>
|
|
31
|
-
<el-table-column v-if="!option.hideOperation" label="
|
|
31
|
+
<el-table-column v-if="!option.hideOperation" :label="t('el.table.operation')" fixed="right" :width="option.operationWidth || '200'" align="left">
|
|
32
32
|
<template #default="scope">
|
|
33
33
|
<slot name="operation" v-bind="scope"></slot>
|
|
34
34
|
<template v-if="!$slots.operationBtn">
|
|
35
|
-
<el-button v-if="!option.hideOperationEdit && props.fetchEdit" type="primary" link :icon="Edit" @click.stop="create(scope.row)"
|
|
36
|
-
<el-button v-if="!option.hideOperationDetail" type="primary" link :icon="Document" @click.stop="detail(scope.row)"
|
|
37
|
-
<el-button v-if="!option.hideOperationDelete && props.fetchRemove" type="danger" link :icon="Delete" @click.stop="startremove(scope)"
|
|
35
|
+
<el-button v-if="!option.hideOperationEdit && props.fetchEdit" type="primary" link :icon="Edit" @click.stop="create(scope.row)">{{ t("el.table.edit") }}</el-button>
|
|
36
|
+
<el-button v-if="!option.hideOperationDetail" type="primary" link :icon="Document" @click.stop="detail(scope.row)">{{ t("el.table.detail") }}</el-button>
|
|
37
|
+
<el-button v-if="!option.hideOperationDelete && props.fetchRemove" type="danger" link :icon="Delete" @click.stop="startremove(scope)">{{ t("el.table.delete") }}</el-button>
|
|
38
38
|
</template>
|
|
39
39
|
<template v-else>
|
|
40
40
|
<el-dropdown trigger="click" popper-class="curd-table-dropdown-menu">
|
|
@@ -93,6 +93,7 @@ import { ArrowDown, Delete, Document, Edit, Plus } from "@element-plus/icons-vue
|
|
|
93
93
|
import { ElLoading, ElMessage, ElMessageBox, ElTable } from "element-plus"
|
|
94
94
|
import { computed, getCurrentInstance, onActivated, onMounted, type PropType, provide, reactive, ref, type Ref, watch } from "vue"
|
|
95
95
|
import { useGlobalConfig } from "../../../utils/hooks/useGlobalConfig"
|
|
96
|
+
import { useLocale } from "../../../utils/hooks/useLocal"
|
|
96
97
|
import type { Fields, FormItem, FormSchema } from "../../CurdForm"
|
|
97
98
|
import FormDialog from "../../FormDialog"
|
|
98
99
|
import type { FilterItem, ListQuery } from "../../TableFilter"
|
|
@@ -157,9 +158,10 @@ const props = defineProps({
|
|
|
157
158
|
},
|
|
158
159
|
},
|
|
159
160
|
})
|
|
161
|
+
const { t } = useLocale()
|
|
160
162
|
const defaultOption = {
|
|
161
163
|
operationWidth: 200,
|
|
162
|
-
operationBtnTitle: "
|
|
164
|
+
operationBtnTitle: t("el.table.more"),
|
|
163
165
|
hideMenu: false, // 是否隐藏右侧工具菜单
|
|
164
166
|
hideMenuAdd: false, // 是否隐藏菜单中添加按钮
|
|
165
167
|
hideMenuRight: false, // 是否隐藏菜单右侧
|
|
@@ -346,9 +348,9 @@ const onMenuOption = (optionKey: MenuEventKey, val: string) => {
|
|
|
346
348
|
const data = list.value.map((a) => tableColumns.value.filter((b) => !b.hidden && !b.neverShow).map((b, i) => getTableValue(a[b.prop], b, a, i)))
|
|
347
349
|
const header = tableColumns.value.filter((b) => !b.hidden && !b.neverShow).map((a) => a.label)
|
|
348
350
|
const tabledata = [header, ...data]
|
|
349
|
-
const filename = "
|
|
351
|
+
const filename = "data"
|
|
350
352
|
exportExcel(tabledata, "data", (option.excelTitle || filename) + ".xls")
|
|
351
|
-
ElMessage.success("
|
|
353
|
+
ElMessage.success(t("el.table.exportSuccess"))
|
|
352
354
|
break
|
|
353
355
|
}
|
|
354
356
|
}
|
|
@@ -401,7 +403,7 @@ const create = (row?: Record<string, unknown>) => {
|
|
|
401
403
|
formSchema.formItem.sort((a, b) => (b.sortIndex || 0) - (a.sortIndex || 0))
|
|
402
404
|
const eoptions = row ? option.editOptions : option.createOptions
|
|
403
405
|
FormDialog.show({
|
|
404
|
-
title: row ? "
|
|
406
|
+
title: row ? t("el.table.edit") : t("el.table.create"),
|
|
405
407
|
formSchema: formSchema,
|
|
406
408
|
fields: row as Fields,
|
|
407
409
|
width: formAttrs?.width || 600,
|
|
@@ -414,16 +416,14 @@ const create = (row?: Record<string, unknown>) => {
|
|
|
414
416
|
}
|
|
415
417
|
const instance = getCurrentInstance()
|
|
416
418
|
const startremove = (scope: { row: unknown; $index: number }) => {
|
|
417
|
-
ElMessageBox.confirm("
|
|
419
|
+
ElMessageBox.confirm(t("el.table.deleteConfirm"), t("el.table.tip"), {
|
|
418
420
|
type: "warning",
|
|
419
|
-
cancelButtonText: "取消",
|
|
420
|
-
confirmButtonText: "确定",
|
|
421
421
|
}).then(async () => {
|
|
422
422
|
const loading = ElLoading.service({ fullscreen: true })
|
|
423
423
|
await (props.fetchRemove && props.fetchRemove(scope.row, scope.$index)).finally(() => {
|
|
424
424
|
loading.close()
|
|
425
425
|
})
|
|
426
|
-
ElMessage({ type: "success", message: "
|
|
426
|
+
ElMessage({ type: "success", message: t("el.table.deleteSuccess") })
|
|
427
427
|
})
|
|
428
428
|
}
|
|
429
429
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-drawer v-model="visible" title="
|
|
2
|
+
<el-drawer v-model="visible" :title="t('el.table.columnSet')" size="40%" append-to-body>
|
|
3
3
|
<el-table :data="columnDatas">
|
|
4
|
-
<el-table-column property="label" label="
|
|
5
|
-
<el-table-column property="hidden" label="
|
|
4
|
+
<el-table-column property="label" :label="t('el.table.columnName')"></el-table-column>
|
|
5
|
+
<el-table-column property="hidden" :label="t('el.table.show')" width="60">
|
|
6
6
|
<template #default="scope">
|
|
7
7
|
<el-switch v-model="scope.row.hidden" :active-value="false" :inactive-value="true" size="small" @change="onChangeHidden()"></el-switch>
|
|
8
8
|
</template>
|
|
9
9
|
</el-table-column>
|
|
10
|
-
<el-table-column property="fixed" label="
|
|
10
|
+
<el-table-column property="fixed" :label="t('el.table.fixShow')" width="160" align="center">
|
|
11
11
|
<template #default="scope">
|
|
12
12
|
<el-button-group>
|
|
13
13
|
<el-tooltip v-for="item in fixedMap" :key="item.value" :content="item.label">
|
|
@@ -23,15 +23,17 @@
|
|
|
23
23
|
</template>
|
|
24
24
|
<script lang="ts" setup>
|
|
25
25
|
import { CaretLeft, CaretRight, VideoPause } from "@element-plus/icons-vue"
|
|
26
|
-
import { computed, inject,
|
|
26
|
+
import { computed, inject, ref, shallowRef, triggerRef, watch, type PropType, type Ref } from "vue"
|
|
27
|
+
import { useLocale } from "../../../utils/hooks/useLocal"
|
|
27
28
|
import type { ColumnItem } from "./types"
|
|
28
29
|
const props = defineProps({
|
|
29
30
|
visible: {
|
|
30
|
-
type: Boolean
|
|
31
|
+
type: Boolean as PropType<boolean>,
|
|
31
32
|
default: false,
|
|
32
33
|
},
|
|
33
34
|
})
|
|
34
35
|
const emits = defineEmits(["update:visible", "change"])
|
|
36
|
+
const { t } = useLocale()
|
|
35
37
|
const columns = inject<Ref<Array<ColumnItem>>>("columns") || ref([])
|
|
36
38
|
const visible = computed({
|
|
37
39
|
get() {
|
|
@@ -66,9 +68,9 @@ const columnDatas = computed(() => {
|
|
|
66
68
|
return result
|
|
67
69
|
})
|
|
68
70
|
const fixedMap = shallowRef([
|
|
69
|
-
{ value: "left", label: "
|
|
70
|
-
{ value: "", label: "
|
|
71
|
-
{ value: "right", label: "
|
|
71
|
+
{ value: "left", label: t("el.table.fixLeft"), icon: CaretLeft },
|
|
72
|
+
{ value: "", label: t("el.table.fixNone"), icon: VideoPause },
|
|
73
|
+
{ value: "right", label: t("el.table.fixRight"), icon: CaretRight },
|
|
72
74
|
])
|
|
73
75
|
const selectFixed = (row: Record<string, unknown>, val: string) => {
|
|
74
76
|
if (val) {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<el-drawer v-model="visible" title="
|
|
3
|
-
<DetailInfo :data="list" title="
|
|
2
|
+
<el-drawer v-model="visible" :title="t('el.table.detail')" size="40%">
|
|
3
|
+
<DetailInfo :data="list" :title="t('el.table.detail')" label-width="110px" show-type="table" />
|
|
4
4
|
</el-drawer>
|
|
5
5
|
</template>
|
|
6
6
|
<script lang="ts" setup>
|
|
7
7
|
import { ref, type Ref } from "vue"
|
|
8
|
+
import { useLocale } from "../../../utils/hooks/useLocal"
|
|
8
9
|
import DetailInfo, { type DetailDataItem } from "../../DetailInfo"
|
|
9
10
|
import type { ColumnItem } from "./types"
|
|
10
11
|
interface OpenOption {
|
|
@@ -12,6 +13,7 @@ interface OpenOption {
|
|
|
12
13
|
data: Record<string, unknown>
|
|
13
14
|
}
|
|
14
15
|
|
|
16
|
+
const { t } = useLocale()
|
|
15
17
|
const visible = ref(false)
|
|
16
18
|
const list: Ref<Array<DetailDataItem>> = ref([])
|
|
17
19
|
const getValue = (data: DetailDataItem, column: ColumnItem, index: number) => {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
import { Download, Operation, Refresh, ScaleToOriginal, Search } from "@element-plus/icons-vue"
|
|
25
25
|
import { computed, ref } from "vue"
|
|
26
26
|
import { useGlobalConfig } from "../../../utils/hooks/useGlobalConfig"
|
|
27
|
+
import { useLocale } from "../../../utils/hooks/useLocal"
|
|
27
28
|
import STableColumnControl from "./STableColumnControl.vue"
|
|
28
29
|
const emits = defineEmits(["operation"])
|
|
29
30
|
const props = defineProps({
|
|
@@ -32,24 +33,25 @@ const props = defineProps({
|
|
|
32
33
|
default: true,
|
|
33
34
|
},
|
|
34
35
|
})
|
|
36
|
+
const { t } = useLocale()
|
|
35
37
|
const globalConfig = useGlobalConfig()
|
|
36
38
|
// 控制按钮逻辑
|
|
37
39
|
const controlButtons = computed(() => [
|
|
38
|
-
{ label: "
|
|
39
|
-
{ label: props.filterVisible ? "
|
|
40
|
+
{ label: t("el.table.refresh"), value: "refresh", icon: Refresh },
|
|
41
|
+
{ label: props.filterVisible ? t("el.table.collapseQuery") : t("el.table.expandQuery"), value: "searchToggle", icon: Search },
|
|
40
42
|
{
|
|
41
|
-
label: "
|
|
43
|
+
label: t("el.table.density"),
|
|
42
44
|
icon: ScaleToOriginal,
|
|
43
45
|
value: "size",
|
|
44
46
|
options: [
|
|
45
|
-
{ label: "
|
|
46
|
-
{ label: "
|
|
47
|
-
{ label: "
|
|
47
|
+
{ label: t("el.table.default"), value: "default" },
|
|
48
|
+
{ label: t("el.table.medium"), value: "medium" },
|
|
49
|
+
{ label: t("el.table.small"), value: "small" },
|
|
48
50
|
],
|
|
49
51
|
},
|
|
50
|
-
{ label: "
|
|
52
|
+
{ label: t("el.table.exportData"), value: "export", icon: Download },
|
|
51
53
|
// { label: "打印", value: "print", icon: "Printer" },
|
|
52
|
-
{ label: "
|
|
54
|
+
{ label: t("el.table.columnSet"), value: "operation", icon: Operation },
|
|
53
55
|
])
|
|
54
56
|
const visible = ref(false)
|
|
55
57
|
const onClick = (item: ButtonItem) => {
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
<template #footer>
|
|
12
12
|
<span v-if="handleOk" class="dialog-footer">
|
|
13
|
-
<el-button v-if="
|
|
14
|
-
<el-button v-if="stepSchemaList.length > 1 && step > 0" :disabled="confirmLoading" type="primary" plain @click="prev"
|
|
15
|
-
<el-button v-if="stepSchemaList.length > 1 && step < stepSchemaList.length - 1" :disabled="confirmLoading" type="primary" plain @click="next"
|
|
16
|
-
<el-button v-if="step >= stepSchemaList.length - 1" :disabled="confirmLoading" type="primary" :loading="confirmLoading" @click="onOk">{{
|
|
13
|
+
<el-button v-if="cancelBtnTextLabel" :disabled="confirmLoading" type="default" @click="onCancel()">{{ cancelBtnTextLabel }}</el-button>
|
|
14
|
+
<el-button v-if="stepSchemaList.length > 1 && step > 0" :disabled="confirmLoading" type="primary" plain @click="prev">{{ t("el.formDialog.preStep") }}</el-button>
|
|
15
|
+
<el-button v-if="stepSchemaList.length > 1 && step < stepSchemaList.length - 1" :disabled="confirmLoading" type="primary" plain @click="next">{{ t("el.formDialog.nextStep") }}</el-button>
|
|
16
|
+
<el-button v-if="step >= stepSchemaList.length - 1" :disabled="confirmLoading" type="primary" :loading="confirmLoading" @click="onOk">{{ confirmBtnTextLabel }}</el-button>
|
|
17
17
|
</span>
|
|
18
18
|
</template>
|
|
19
19
|
</el-dialog>
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
<script lang="ts">
|
|
23
23
|
import { ElButton, ElDialog, ElStep, ElSteps } from "element-plus"
|
|
24
|
-
import { defineComponent, type PropType, reactive, ref, type Ref, shallowRef, toRefs } from "vue"
|
|
24
|
+
import { computed, defineComponent, type PropType, reactive, ref, type Ref, shallowRef, toRefs } from "vue"
|
|
25
|
+
import { useLocale } from "../../../utils/hooks/useLocal"
|
|
25
26
|
import { CurdForm, type Fields, type FormSchema } from "../../CurdForm"
|
|
26
27
|
export default defineComponent({
|
|
27
28
|
name: "FormDialog",
|
|
@@ -74,11 +75,11 @@ export default defineComponent({
|
|
|
74
75
|
},
|
|
75
76
|
confirmBtnText: {
|
|
76
77
|
type: String,
|
|
77
|
-
default: "
|
|
78
|
+
default: "",
|
|
78
79
|
},
|
|
79
80
|
cancelBtnText: {
|
|
80
81
|
type: String,
|
|
81
|
-
default: "
|
|
82
|
+
default: "",
|
|
82
83
|
},
|
|
83
84
|
},
|
|
84
85
|
setup(props) {
|
|
@@ -89,6 +90,8 @@ export default defineComponent({
|
|
|
89
90
|
visible: true,
|
|
90
91
|
confirmLoading: false,
|
|
91
92
|
})
|
|
93
|
+
const { t, locale } = useLocale()
|
|
94
|
+
console.log("locale", locale)
|
|
92
95
|
const stepSchemaList = props.stepSchema?.length ? shallowRef(props.stepSchema) : shallowRef([{ name: "step1", description: "", formSchema: props.formSchema }])
|
|
93
96
|
const prev = () => {
|
|
94
97
|
if (state.step > 0) {
|
|
@@ -154,6 +157,8 @@ export default defineComponent({
|
|
|
154
157
|
if (props.setForm) {
|
|
155
158
|
props.setForm(form)
|
|
156
159
|
}
|
|
160
|
+
const confirmBtnTextLabel = computed(() => props.confirmBtnText || t("el.formDialog.confirm"))
|
|
161
|
+
const cancelBtnTextLabel = computed(() => props.cancelBtnText || t("el.formDialog.cancel"))
|
|
157
162
|
|
|
158
163
|
return {
|
|
159
164
|
...toRefs(state),
|
|
@@ -165,7 +170,10 @@ export default defineComponent({
|
|
|
165
170
|
form,
|
|
166
171
|
prev,
|
|
167
172
|
next,
|
|
173
|
+
t,
|
|
168
174
|
extendContexts,
|
|
175
|
+
confirmBtnTextLabel,
|
|
176
|
+
cancelBtnTextLabel,
|
|
169
177
|
}
|
|
170
178
|
},
|
|
171
179
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withInstall, type SFCWithInstall } from "../../utils"
|
|
2
2
|
import Instance from "./src/TableFilter.vue"
|
|
3
|
-
export const TableFilter: SFCWithInstall<typeof Instance> = withInstall(Instance)
|
|
3
|
+
export const TableFilter: SFCWithInstall<typeof Instance> = withInstall("TableFilter", Instance)
|
|
4
4
|
export * from "./types"
|
|
5
5
|
|
|
6
6
|
export default TableFilter as SFCWithInstall<typeof Instance>
|
package/locale/index.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
name: "en",
|
|
3
|
+
el: {
|
|
4
|
+
table: {
|
|
5
|
+
operation: "Operation",
|
|
6
|
+
detail: "Details",
|
|
7
|
+
edit: "Edit",
|
|
8
|
+
delete: "Delete",
|
|
9
|
+
create: "Add",
|
|
10
|
+
more: "More",
|
|
11
|
+
columnSet: "Column Settings",
|
|
12
|
+
columnName: "Column Name",
|
|
13
|
+
show: "Show",
|
|
14
|
+
fixShow: "Fixed Show",
|
|
15
|
+
fixLeft: "Fixed Left",
|
|
16
|
+
fixRight: "Fixed Right",
|
|
17
|
+
fixNone: "Not Fixed",
|
|
18
|
+
exportSuccess: "Export Success",
|
|
19
|
+
deleteConfirm: "Confirm to delete current data?",
|
|
20
|
+
tip: "Tip",
|
|
21
|
+
deleteSuccess: "Delete Success",
|
|
22
|
+
refresh: "Refresh",
|
|
23
|
+
collapseQuery: "Collapse Query",
|
|
24
|
+
expandQuery: "Expand Query",
|
|
25
|
+
density: "Density",
|
|
26
|
+
exportData: "Export Data",
|
|
27
|
+
default: "Default",
|
|
28
|
+
medium: "Loose",
|
|
29
|
+
small: "Compact",
|
|
30
|
+
},
|
|
31
|
+
form: {
|
|
32
|
+
pleaseSelect: "Please select {0}",
|
|
33
|
+
pleaseInput: "Please input {0}",
|
|
34
|
+
all: "All",
|
|
35
|
+
allSelect: "Select All",
|
|
36
|
+
nodata: "No Data",
|
|
37
|
+
loading: "Loading...",
|
|
38
|
+
},
|
|
39
|
+
formDialog: {
|
|
40
|
+
preStep: "Previous Step",
|
|
41
|
+
nextStep: "Next Step",
|
|
42
|
+
confirm: "Confirm",
|
|
43
|
+
cancel: "Cancel",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
name: "中文",
|
|
3
|
+
el: {
|
|
4
|
+
table: {
|
|
5
|
+
operation: "操作",
|
|
6
|
+
detail: "详情",
|
|
7
|
+
edit: "编辑",
|
|
8
|
+
delete: "删除",
|
|
9
|
+
create: "添加",
|
|
10
|
+
more: "更多",
|
|
11
|
+
columnSet: "列设置",
|
|
12
|
+
columnName: "列名称",
|
|
13
|
+
show: "显示",
|
|
14
|
+
fixShow: "固定显示",
|
|
15
|
+
fixLeft: "左固定",
|
|
16
|
+
fixRight: "右固定",
|
|
17
|
+
fixNone: "不固定",
|
|
18
|
+
exportSuccess: "导出成功",
|
|
19
|
+
deleteConfirm: "确认删除当前数据吗",
|
|
20
|
+
tip: "提示",
|
|
21
|
+
deleteSuccess: "删除成功",
|
|
22
|
+
refresh: "刷新",
|
|
23
|
+
collapseQuery: "收起查询",
|
|
24
|
+
expandQuery: "展开查询",
|
|
25
|
+
density: "密度",
|
|
26
|
+
exportData: "导出数据",
|
|
27
|
+
default: "默认",
|
|
28
|
+
medium: "宽松",
|
|
29
|
+
small: "紧凑",
|
|
30
|
+
},
|
|
31
|
+
form: {
|
|
32
|
+
pleaseSelect: "请选择{0}",
|
|
33
|
+
pleaseInput: "请输入{0}",
|
|
34
|
+
all: "全部",
|
|
35
|
+
allSelect: "全选",
|
|
36
|
+
nodata: "暂无数据",
|
|
37
|
+
loading: "加载中...",
|
|
38
|
+
},
|
|
39
|
+
formDialog: {
|
|
40
|
+
preStep: "上一步",
|
|
41
|
+
nextStep: "下一步",
|
|
42
|
+
confirm: "确定",
|
|
43
|
+
cancel: "取消",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easybill-ui",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.8",
|
|
4
4
|
"description": "A component library for easybill",
|
|
5
5
|
"author": "tuchongyang <779311998@qq.com>",
|
|
6
6
|
"private": false,
|
|
@@ -14,5 +14,5 @@
|
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
|
-
"gitHead": "
|
|
17
|
+
"gitHead": "d3a1a4c6ef851a9f453be05fb660fd39adf02a07"
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.curd-form{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box;min-width:0;align-items:flex-start
|
|
1
|
+
.curd-form{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box;min-width:0;align-items:flex-start;margin-left:calc(0 - var(--curd-form-gutter)/ 2);margin-right:calc(0 - var(--curd-form-gutter)/ 2)}.curd-form .el-form-item{padding:0 calc(var(--curd-form-gutter)/ 2);box-sizing:border-box}.curd-form .el-form-item .el-form-item__label:before{margin-left:-10px}.curd-form.el-form--inline .el-form-item{flex:0 0 auto}.curd-form .el-form-item-full{flex:0 0 100%}.curd-form .el-form-item-1,.curd-form.el-form--inline .el-form-item-1{flex:0 0 calc(4.1666666667% * 1)}.curd-form .el-form-item-2,.curd-form.el-form--inline .el-form-item-2{flex:0 0 calc(4.1666666667% * 2)}.curd-form .el-form-item-3,.curd-form.el-form--inline .el-form-item-3{flex:0 0 calc(4.1666666667% * 3)}.curd-form .el-form-item-4,.curd-form.el-form--inline .el-form-item-4{flex:0 0 calc(4.1666666667% * 4)}.curd-form .el-form-item-5,.curd-form.el-form--inline .el-form-item-5{flex:0 0 calc(4.1666666667% * 5)}.curd-form .el-form-item-6,.curd-form.el-form--inline .el-form-item-6{flex:0 0 calc(4.1666666667% * 6)}.curd-form .el-form-item-7,.curd-form.el-form--inline .el-form-item-7{flex:0 0 calc(4.1666666667% * 7)}.curd-form .el-form-item-8,.curd-form.el-form--inline .el-form-item-8{flex:0 0 calc(4.1666666667% * 8)}.curd-form .el-form-item-9,.curd-form.el-form--inline .el-form-item-9{flex:0 0 calc(4.1666666667% * 9)}.curd-form .el-form-item-10,.curd-form.el-form--inline .el-form-item-10{flex:0 0 calc(4.1666666667% * 10)}.curd-form .el-form-item-11,.curd-form.el-form--inline .el-form-item-11{flex:0 0 calc(4.1666666667% * 11)}.curd-form .el-form-item-12,.curd-form.el-form--inline .el-form-item-12{flex:0 0 calc(4.1666666667% * 12)}.curd-form .el-form-item-13,.curd-form.el-form--inline .el-form-item-13{flex:0 0 calc(4.1666666667% * 13)}.curd-form .el-form-item-14,.curd-form.el-form--inline .el-form-item-14{flex:0 0 calc(4.1666666667% * 14)}.curd-form .el-form-item-15,.curd-form.el-form--inline .el-form-item-15{flex:0 0 calc(4.1666666667% * 15)}.curd-form .el-form-item-16,.curd-form.el-form--inline .el-form-item-16{flex:0 0 calc(4.1666666667% * 16)}.curd-form .el-form-item-17,.curd-form.el-form--inline .el-form-item-17{flex:0 0 calc(4.1666666667% * 17)}.curd-form .el-form-item-18,.curd-form.el-form--inline .el-form-item-18{flex:0 0 calc(4.1666666667% * 18)}.curd-form .el-form-item-19,.curd-form.el-form--inline .el-form-item-19{flex:0 0 calc(4.1666666667% * 19)}.curd-form .el-form-item-20,.curd-form.el-form--inline .el-form-item-20{flex:0 0 calc(4.1666666667% * 20)}.curd-form .el-form-item-21,.curd-form.el-form--inline .el-form-item-21{flex:0 0 calc(4.1666666667% * 21)}.curd-form .el-form-item-22,.curd-form.el-form--inline .el-form-item-22{flex:0 0 calc(4.1666666667% * 22)}.curd-form .el-form-item-23,.curd-form.el-form--inline .el-form-item-23{flex:0 0 calc(4.1666666667% * 23)}.curd-form .el-form-item-24,.curd-form.el-form--inline .el-form-item-24{flex:0 0 calc(4.1666666667% * 24)}.curd-form .form-item{width:100%;display:flex;min-width:0}.curd-form .form-item .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle;color:var(--el-text-color-secondary)}.curd-form .form-item .tooltip:hover{color:var(--color-primary)}.curd-form .form-item .empty{color:var(--el-text-color-secondary)}.curd-form .schema-form-radio .el-radio-group{vertical-align:top}.curd-form .el-checkbox-group.single .el-checkbox-button+.el-checkbox-button{margin-left:10px}.curd-form .el-checkbox-group.single .el-checkbox-button .el-checkbox-button__inner{border:var(--el-border);border-radius:var(--el-border-radius-base);padding-left:20px;padding-right:20px}.curd-form .el-checkbox-group.single .el-checkbox-button.is-checked .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.curd-form .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle}.schema-form-select-check{height:25px;margin-left:20px;margin-top:10px;display:block}.schema-form-select-check :deep(.el-checkbox__input){vertical-align:middle}
|
package/theme-chalk/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.constant-status{--el-tag-border-opacity:1;--el-tag-bg-opacity:1;--el-tag-font-size:var(--el-font-size-base)}.constant-status .el-tag__content{display:flex;align-items:center;line-height:1}.constant-status .el-icon,.constant-status .name{vertical-align:top;line-height:1}.constant-status .dot{width:5px;height:5px;display:inline-block;vertical-align:middle;border-radius:50%;background:var(--el-tag-text-color);margin-right:5px}.constant-status.no-border{padding:0}.constant-status.dot-status{padding:0}.constant-status.dot-status .name{color:var(--el-text-color-primary)}.constant-status.el-tag--default{padding:0;--el-tag-bg-color:transparent;--el-tag-border-color:transparent;--el-tag-hover-color:var(--el-text-color-primary);--el-tag-text-color:var(--el-text-color-primary)}.constant-status.el-tag--blue{--el-tag-bg-color:rgba(236, 245, 255, var(--el-tag-bg-color));--el-tag-border-color:rgba(217, 236, 255, var(--el-tag-border-color));--el-tag-hover-color:rgba(111, 122, 175, 1);--el-tag-text-color:rgba(111, 122, 175, 1)}.constant-status.el-tag--blue.el-tag--dark{--el-tag-bg-color:rgba(111, 122, 175, 1);--el-tag-border-color:rgba(111, 122, 175, 1);--el-tag-hover-color:rgba(111, 122, 175, 0.8);--el-tag-text-color:#fff}.constant-status.el-tag--blue.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--yellow{--el-tag-bg-color:rgba(255, 251, 230, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(255, 229, 143, var(--el-tag-borer-opacity));--el-tag-hover-color:rgba(212, 136, 6, 1);--el-tag-text-color:rgba(212, 136, 6, 1)}.constant-status.el-tag--yellow.el-tag--dark{--el-tag-bg-color:rgba(212, 136, 6, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(212, 136, 6, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(212, 136, 6, 1);--el-tag-text-color:#fff}.constant-status.el-tag--yellow.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--blue-dark{--el-tag-bg-color:rgba(240, 245, 255, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(173, 198, 255, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(29, 57, 196, 1);--el-tag-text-color:rgba(29, 57, 196, 1)}.constant-status.el-tag--blue-dark.el-tag--dark{--el-tag-bg-color:rgba(29, 57, 196, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(29, 57, 196, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(29, 57, 196, 1);--el-tag-text-color:#fff}.constant-status.el-tag--blue-dark.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--red-purple{--el-tag-bg-color:rgba(251, 243, 248, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(227, 206, 219, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(191, 117, 163, 1);--el-tag-text-color:rgba(191, 117, 163, 1)}.constant-status.el-tag--red-purple.el-tag--dark{--el-tag-bg-color:rgba(191, 117, 163, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(191, 117, 163, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(191, 117, 163, 1);--el-tag-text-color:#fff}.constant-status.el-tag--red-purple.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--blueness{--el-tag-bg-color:rgba(243, 250, 251, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(194, 213, 221, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(99, 150, 177, 1);--el-tag-text-color:rgba(99, 150, 177, 1)}.constant-status.el-tag--blueness.el-tag--dark{--el-tag-bg-color:rgba(99, 150, 177, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(99, 150, 177, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(99, 150, 177, 1);--el-tag-text-color:#fff}.constant-status.el-tag--blueness.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.no-border{border:0!important;background:0 0}.curd-form{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box;min-width:0;align-items:flex-start}.curd-form:not(.el-form--inline) .el-form-item{flex:0 0 100%;box-sizing:border-box}.curd-form:not(.el-form--inline) .el-form-item .el-form-item__label:before{margin-left:-10px}.curd-form .el-form-item-1{flex:0 0 calc(4.1666666667% * 1);box-sizing:border-box}.curd-form .el-form-item-2{flex:0 0 calc(4.1666666667% * 2);box-sizing:border-box}.curd-form .el-form-item-3{flex:0 0 calc(4.1666666667% * 3);box-sizing:border-box}.curd-form .el-form-item-4{flex:0 0 calc(4.1666666667% * 4);box-sizing:border-box}.curd-form .el-form-item-5{flex:0 0 calc(4.1666666667% * 5);box-sizing:border-box}.curd-form .el-form-item-6{flex:0 0 calc(4.1666666667% * 6);box-sizing:border-box}.curd-form .el-form-item-7{flex:0 0 calc(4.1666666667% * 7);box-sizing:border-box}.curd-form .el-form-item-8{flex:0 0 calc(4.1666666667% * 8);box-sizing:border-box}.curd-form .el-form-item-9{flex:0 0 calc(4.1666666667% * 9);box-sizing:border-box}.curd-form .el-form-item-10{flex:0 0 calc(4.1666666667% * 10);box-sizing:border-box}.curd-form .el-form-item-11{flex:0 0 calc(4.1666666667% * 11);box-sizing:border-box}.curd-form .el-form-item-12{flex:0 0 calc(4.1666666667% * 12);box-sizing:border-box}.curd-form .el-form-item-13{flex:0 0 calc(4.1666666667% * 13);box-sizing:border-box}.curd-form .el-form-item-14{flex:0 0 calc(4.1666666667% * 14);box-sizing:border-box}.curd-form .el-form-item-15{flex:0 0 calc(4.1666666667% * 15);box-sizing:border-box}.curd-form .el-form-item-16{flex:0 0 calc(4.1666666667% * 16);box-sizing:border-box}.curd-form .el-form-item-17{flex:0 0 calc(4.1666666667% * 17);box-sizing:border-box}.curd-form .el-form-item-18{flex:0 0 calc(4.1666666667% * 18);box-sizing:border-box}.curd-form .el-form-item-19{flex:0 0 calc(4.1666666667% * 19);box-sizing:border-box}.curd-form .el-form-item-20{flex:0 0 calc(4.1666666667% * 20);box-sizing:border-box}.curd-form .el-form-item-21{flex:0 0 calc(4.1666666667% * 21);box-sizing:border-box}.curd-form .el-form-item-22{flex:0 0 calc(4.1666666667% * 22);box-sizing:border-box}.curd-form .el-form-item-23{flex:0 0 calc(4.1666666667% * 23);box-sizing:border-box}.curd-form .el-form-item-24{flex:0 0 calc(4.1666666667% * 24);box-sizing:border-box}.curd-form .form-item{width:100%;display:flex;min-width:0}.curd-form .form-item .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle;color:var(--el-text-color-secondary)}.curd-form .form-item .tooltip:hover{color:var(--color-primary)}.curd-form .form-item .empty{color:var(--el-text-color-secondary)}.curd-form .schema-form-radio .el-radio-group{vertical-align:top}.curd-form .el-checkbox-group.single .el-checkbox-button+.el-checkbox-button{margin-left:10px}.curd-form .el-checkbox-group.single .el-checkbox-button .el-checkbox-button__inner{border:var(--el-border);border-radius:var(--el-border-radius-base);padding-left:20px;padding-right:20px}.curd-form .el-checkbox-group.single .el-checkbox-button.is-checked .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.curd-form .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle}.schema-form-select-check{height:25px;margin-left:20px;margin-top:10px;display:block}.schema-form-select-check :deep(.el-checkbox__input){vertical-align:middle}.table-container .table-pager{margin:15px 0;display:flex;justify-content:space-between;align-items:center}.table-container .table-pager .pagination{justify-content:end;font-weight:400}.table-container .table-control{display:flex;justify-content:space-between;padding-bottom:10px;align-items:flex-end}.table-container .table-control .min-control>.el-button{margin-right:10px}.table-container .s-table-filter .el-form--inline .el-form-item{margin-right:15px}.table-container .el-button+.dropdown-item{margin-left:10px}.table-container .copy{cursor:pointer;margin-right:3px}.table-container .header-td{display:inline-flex;align-items:center;word-break:break-word}.table-container .header-td.center{justify-content:center}.table-container .header-td.right{justify-content:flex-end}.table-container .filter-dropdown-toggle{display:inline-block;line-height:1;cursor:pointer;position:relative;margin-left:3px}.table-container .filter-dropdown-toggle.active{color:var(--el-color-primary)}.table-container .table-menu{display:inline-block;vertical-align:middle;position:relative}.table-container .table-menu .table-menu-item{color:var(--el-button-text-color);font-size:14px;border-radius:4px;border:1px solid var(--el-button-border-color);padding:0;height:28px;width:28px;vertical-align:top;vertical-align:middle}.table-container .table-menu .table-menu-item:not(.is-disabled):active,.table-container .table-menu .table-menu-item:not(.is-disabled):focus{border-color:var(--el-button-border-color)}.table-container .table-menu .table-menu-item+.table-menu-item{margin-left:3px}.table-container .table-menu .table-menu-item:hover{background-color:var(--el-fill-color-light);border-color:var(--el-button-border-color)}.table-container .table-menu .current-size{color:var(--el-color-primary)}.table-container .simple-page{padding:20px 0;text-align:right}.table-container .simple-page>span{margin:0 10px}.curd-table-dropdown-menu .el-dropdown-menu__item{padding:0}.curd-table-dropdown-menu .el-dropdown-menu__item:hover{background-color:var(--el-fill-color-light)}.curd-table-dropdown-menu .el-dropdown-menu__item .el-button{display:block;padding:5px 16px;flex:1;text-align:left;font-size:12px}.table-main-filter-dropdown{padding:0}.table-main-filter-dropdown .search{position:relative;margin-bottom:5px}.table-main-filter-dropdown .search input{outline:0;border:0;width:100%;padding:5px 10px;background:#f4f4f4}.table-main-filter-dropdown .search .icon-suffix{position:absolute;right:10px;top:50%;transform:translateY(-50%)}.table-main-filter-dropdown .search .icon-close1{position:absolute;right:30px;top:50%;transform:translateY(-50%);cursor:pointer;opacity:.7}.table-main-filter-dropdown .search .icon-close1:hover{opacity:1;color:#444}.table-main-filter-dropdown .select li{line-height:30px;padding:0 20px;list-style:none;cursor:pointer}.table-main-filter-dropdown .select li:hover{background:#f4f4f4}.table-main-filter-dropdown .select li.active{color:var(--el-color-primary)}.filter-type-popper{width:auto!important;min-width:0!important;padding:0!important;box-shadow:none!important}.table-filter{display:flex;flex-direction:column;position:relative}.table-filter .filter-search-box{min-height:32px;border-width:1px;border-style:solid;border-color:var(--el-border-color);display:flex;min-width:460px;align-items:center;justify-items:center;justify-content:space-between;overflow:hidden;border-radius:var(--el-border-radius-base);transition:all .3s}.table-filter .filter-search-box.is-focus{border-color:var(--el-color-primary)}.table-filter .filter-search-box .filter-action{height:32px;line-height:32px;align-self:flex-end;display:flex}.table-filter .filter-search-box .filter-action div{cursor:pointer}.table-filter .filter-search-box .filter-action .empty{color:var(--el-color-info);margin-right:15px;padding-left:10px}.table-filter .filter-search-box .filter-action .empty:hover{color:var(--el-color-primary)}.table-filter .filter-search-box .filter-action .search{padding:0 20px;text-align:center;position:relative;display:flex;align-items:center}.table-filter .filter-search-box .filter-action .search:before{content:"";display:block;width:1px;height:20px;background:var(--el-border-color);position:absolute;left:0;top:50%;transform:translateY(-50%)}.table-filter .filter-search-box .filter-action .search:hover{color:var(--el-color-primary)}.table-filter .filter-external .el-form-item{margin-bottom:10px}.table-filter .filter-tags{height:100%;flex-wrap:wrap;display:flex;flex:1;align-items:flex-start;justify-items:center}.table-filter .filter-tags .tag-title{font-size:12px;color:var(--el-text-color-placeholder);height:24px;line-height:24px;margin:0 15px 5px 0}.table-filter .filter-tags .dropdown-toggle{white-space:nowrap;display:flex;align-items:center;justify-items:center;font-size:12px}.table-filter .filter-tags .tag-list{flex:1;display:flex;flex-wrap:wrap}.table-filter .filter-tags .tag-item{height:24px;line-height:24px;white-space:nowrap;display:flex;align-items:center;justify-items:center;padding:0 10px;color:var(--el-color-info-dark-2);background:var(--el-color-info-light-9);font-size:12px;border-radius:var(--el-border-radius-base);margin-right:5px;margin-bottom:10px;cursor:pointer}.table-filter .filter-tags .tag-item .action{color:var(--el-color-info-light-5);text-align:center;width:14px;height:14px;line-height:14px;border-radius:50%;margin-left:10px;font-size:14px;cursor:pointer}.table-filter .filter-tags .tag-item .action:hover{color:var(--el-color-primary)}.table-filter .tag-clear{margin-bottom:2px;margin-left:10px}.table-filter .filter-item .el-form-item{margin:0}.table-filter .filter-item .el-form-item__label{display:none}.table-filter .filter-item .el-input{--el-input-border:none;--el-input-border-color:transparent;--el-input-focus-border-color:transparent;--el-input-hover-border-color:transparent}.table-filter .filter-item .el-select{--el-select-border-color-hover:transparent;--el-select-input-focus-border-color:transparent}.table-filter .filter-item .el-select__wrapper{box-shadow:none}.table-filter-type{box-shadow:var(--el-box-shadow-light);background:var(--el-bg-color);z-index:3060;min-width:150px;max-height:300px;overflow:hidden;--el-font-size-base:12px}.table-filter-type .base-select{--el-font-size-base:12px;height:100%;max-height:300px;display:flex;flex-direction:column}.table-filter-type .base-select .remote-input{width:100%}.table-filter-type .base-select .remote-input .el-input{--el-input-border-radius:0;--el-input-bg-color:var(--el-bg-color-page);--el-input-border:none;--el-input-hover-border-color:transparent;--el-input-focus-border-color:var(--el-border-color)}.table-filter-type .base-select .el-empty__image svg{height:50px}.table-filter-type .base-select .select-spinner{flex:1;position:relative;overflow-y:auto}.table-filter-type .base-select .select-spinner ul{margin:0;padding:0}.table-filter-type .base-select .select-spinner ul li{list-style:none;padding:6px 10px;cursor:pointer;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;font-size:var(--el-font-size-base)}.table-filter-type .base-select .select-spinner ul li.active{color:var(--el-color-primary)}.table-filter-type .base-select .select-spinner ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.table-filter-toggle{padding:0 10px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;min-width:120px;font-size:12px}.table-filter-toggle .current-filter-label{margin-right:20px}.table-filter-List{box-shadow:0 2px 8px 0 rgba(0,0,0,.2);background:var(--el-bg-color);z-index:3060;border-radius:2px;max-height:300px;overflow-y:auto;font-size:12px}.table-filter-List ul{width:100%;margin:0;padding:0}.table-filter-List ul li{width:100%;list-style:none;padding:6px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;cursor:pointer}.table-filter-List ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.table-filter-List ul li.active{color:var(--el-color-primary);font-weight:600}.table-filter-tag-popper{max-height:400px;overflow:auto;padding:0!important;width:250px!important}.table-filter-tag-popper .base-select{--el-font-size-base:12px;height:100%;max-height:300px;display:flex;flex-direction:column}.table-filter-tag-popper .base-select .remote-input{width:100%}.table-filter-tag-popper .base-select .remote-input :deep(.el-input){--el-input-border-radius:0;--el-input-bg-color:var(--el-bg-color-page);--el-input-border:none;--el-input-hover-border-color:transparent;--el-input-focus-border-color:var(--el-border-color)}.table-filter-tag-popper .base-select :deep(.el-empty__imagesvg){height:50px}.table-filter-tag-popper .base-select .select-spinner{flex:1;position:relative;overflow-y:auto}.table-filter-tag-popper .base-select .select-spinner ul{margin:0;padding:0}.table-filter-tag-popper .base-select .select-spinner ul li{list-style:none;padding:6px 10px;cursor:pointer;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--el-font-size-base);box-sizing:border-box}.table-filter-tag-popper .base-select .select-spinner ul li.active{color:var(--el-color-primary)}.table-filter-tag-popper .base-select .select-spinner ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.detail-info{flex:1}.detail-info .detail-info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.detail-info .title{border-left:3px solid var(--el-color-primary);padding-left:10px;line-height:1.2}.detail-info+.detail-info{margin-top:30px}.detail-info.card{background:var(--el-bg-color);border-radius:0;opacity:1;border:1px solid var(--el-border-color)}.detail-info.card[shadow]{box-shadow:var(--el-box-shadow-lighter)}.detail-info.card .detail-info-header{height:50px;border-bottom:1px solid var(--el-border-color);margin:0;padding:0 20px}.detail-info.card .detail-info-header .title{border-left:0;padding:0}.detail-info.card .detail-info-body{padding:10px 20px 20px 20px;margin:0}.detail-info .detail-info-body{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.detail-info .detail-info-body .table-detail-col{box-sizing:border-box}.detail-info .detail-info-body .item-col{line-height:20px;height:100%;box-sizing:border-box;display:flex}.detail-info .detail-info-body .item-col .label{padding:4px 0;color:var(--el-text-color-secondary);box-sizing:border-box;vertical-align:middle;float:left;display:flex;align-items:center}.detail-info .detail-info-body .item-col .det{flex:1;padding:4px 10px;box-sizing:border-box;min-height:20px;height:100%;word-break:break-all;overflow:hidden}.detail-info .detail-info-body.table{border-top:1px solid var(--el-border-color);border-left:1px solid var(--el-border-color)}.detail-info .detail-info-body.table .table-detail-col{padding:0!important;border-bottom:1px solid var(--el-border-color);border-right:1px solid var(--el-border-color)}.detail-info .detail-info-body.table .item-col{background:var(--el-fill-color-light);border:1px solid var(--el-bg-color)}.detail-info .detail-info-body.table .item-col .label{padding-left:10px;padding-right:10px;width:100px}.detail-info .detail-info-body.table .item-col .det{border-left:1px solid var(--el-border-color);background-color:var(--el-bg-color)}
|
|
1
|
+
.constant-status{--el-tag-border-opacity:1;--el-tag-bg-opacity:1;--el-tag-font-size:var(--el-font-size-base)}.constant-status .el-tag__content{display:flex;align-items:center;line-height:1}.constant-status .el-icon,.constant-status .name{vertical-align:top;line-height:1}.constant-status .dot{width:5px;height:5px;display:inline-block;vertical-align:middle;border-radius:50%;background:var(--el-tag-text-color);margin-right:5px}.constant-status.no-border{padding:0}.constant-status.dot-status{padding:0}.constant-status.dot-status .name{color:var(--el-text-color-primary)}.constant-status.el-tag--default{padding:0;--el-tag-bg-color:transparent;--el-tag-border-color:transparent;--el-tag-hover-color:var(--el-text-color-primary);--el-tag-text-color:var(--el-text-color-primary)}.constant-status.el-tag--blue{--el-tag-bg-color:rgba(236, 245, 255, var(--el-tag-bg-color));--el-tag-border-color:rgba(217, 236, 255, var(--el-tag-border-color));--el-tag-hover-color:rgba(111, 122, 175, 1);--el-tag-text-color:rgba(111, 122, 175, 1)}.constant-status.el-tag--blue.el-tag--dark{--el-tag-bg-color:rgba(111, 122, 175, 1);--el-tag-border-color:rgba(111, 122, 175, 1);--el-tag-hover-color:rgba(111, 122, 175, 0.8);--el-tag-text-color:#fff}.constant-status.el-tag--blue.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--yellow{--el-tag-bg-color:rgba(255, 251, 230, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(255, 229, 143, var(--el-tag-borer-opacity));--el-tag-hover-color:rgba(212, 136, 6, 1);--el-tag-text-color:rgba(212, 136, 6, 1)}.constant-status.el-tag--yellow.el-tag--dark{--el-tag-bg-color:rgba(212, 136, 6, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(212, 136, 6, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(212, 136, 6, 1);--el-tag-text-color:#fff}.constant-status.el-tag--yellow.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--blue-dark{--el-tag-bg-color:rgba(240, 245, 255, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(173, 198, 255, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(29, 57, 196, 1);--el-tag-text-color:rgba(29, 57, 196, 1)}.constant-status.el-tag--blue-dark.el-tag--dark{--el-tag-bg-color:rgba(29, 57, 196, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(29, 57, 196, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(29, 57, 196, 1);--el-tag-text-color:#fff}.constant-status.el-tag--blue-dark.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--red-purple{--el-tag-bg-color:rgba(251, 243, 248, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(227, 206, 219, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(191, 117, 163, 1);--el-tag-text-color:rgba(191, 117, 163, 1)}.constant-status.el-tag--red-purple.el-tag--dark{--el-tag-bg-color:rgba(191, 117, 163, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(191, 117, 163, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(191, 117, 163, 1);--el-tag-text-color:#fff}.constant-status.el-tag--red-purple.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.el-tag--blueness{--el-tag-bg-color:rgba(243, 250, 251, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(194, 213, 221, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(99, 150, 177, 1);--el-tag-text-color:rgba(99, 150, 177, 1)}.constant-status.el-tag--blueness.el-tag--dark{--el-tag-bg-color:rgba(99, 150, 177, var(--el-tag-bg-opacity));--el-tag-border-color:rgba(99, 150, 177, var(--el-tag-border-opacity));--el-tag-hover-color:rgba(99, 150, 177, 1);--el-tag-text-color:#fff}.constant-status.el-tag--blueness.el-tag--plain{--el-tag-bg-color:var(--el-fill-color-blank)}.constant-status.no-border{border:0!important;background:0 0}.curd-form{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box;min-width:0;align-items:flex-start;margin-left:calc(0 - var(--curd-form-gutter)/ 2);margin-right:calc(0 - var(--curd-form-gutter)/ 2)}.curd-form .el-form-item{padding:0 calc(var(--curd-form-gutter)/ 2);box-sizing:border-box}.curd-form .el-form-item .el-form-item__label:before{margin-left:-10px}.curd-form.el-form--inline .el-form-item{flex:0 0 auto}.curd-form .el-form-item-full{flex:0 0 100%}.curd-form .el-form-item-1,.curd-form.el-form--inline .el-form-item-1{flex:0 0 calc(4.1666666667% * 1)}.curd-form .el-form-item-2,.curd-form.el-form--inline .el-form-item-2{flex:0 0 calc(4.1666666667% * 2)}.curd-form .el-form-item-3,.curd-form.el-form--inline .el-form-item-3{flex:0 0 calc(4.1666666667% * 3)}.curd-form .el-form-item-4,.curd-form.el-form--inline .el-form-item-4{flex:0 0 calc(4.1666666667% * 4)}.curd-form .el-form-item-5,.curd-form.el-form--inline .el-form-item-5{flex:0 0 calc(4.1666666667% * 5)}.curd-form .el-form-item-6,.curd-form.el-form--inline .el-form-item-6{flex:0 0 calc(4.1666666667% * 6)}.curd-form .el-form-item-7,.curd-form.el-form--inline .el-form-item-7{flex:0 0 calc(4.1666666667% * 7)}.curd-form .el-form-item-8,.curd-form.el-form--inline .el-form-item-8{flex:0 0 calc(4.1666666667% * 8)}.curd-form .el-form-item-9,.curd-form.el-form--inline .el-form-item-9{flex:0 0 calc(4.1666666667% * 9)}.curd-form .el-form-item-10,.curd-form.el-form--inline .el-form-item-10{flex:0 0 calc(4.1666666667% * 10)}.curd-form .el-form-item-11,.curd-form.el-form--inline .el-form-item-11{flex:0 0 calc(4.1666666667% * 11)}.curd-form .el-form-item-12,.curd-form.el-form--inline .el-form-item-12{flex:0 0 calc(4.1666666667% * 12)}.curd-form .el-form-item-13,.curd-form.el-form--inline .el-form-item-13{flex:0 0 calc(4.1666666667% * 13)}.curd-form .el-form-item-14,.curd-form.el-form--inline .el-form-item-14{flex:0 0 calc(4.1666666667% * 14)}.curd-form .el-form-item-15,.curd-form.el-form--inline .el-form-item-15{flex:0 0 calc(4.1666666667% * 15)}.curd-form .el-form-item-16,.curd-form.el-form--inline .el-form-item-16{flex:0 0 calc(4.1666666667% * 16)}.curd-form .el-form-item-17,.curd-form.el-form--inline .el-form-item-17{flex:0 0 calc(4.1666666667% * 17)}.curd-form .el-form-item-18,.curd-form.el-form--inline .el-form-item-18{flex:0 0 calc(4.1666666667% * 18)}.curd-form .el-form-item-19,.curd-form.el-form--inline .el-form-item-19{flex:0 0 calc(4.1666666667% * 19)}.curd-form .el-form-item-20,.curd-form.el-form--inline .el-form-item-20{flex:0 0 calc(4.1666666667% * 20)}.curd-form .el-form-item-21,.curd-form.el-form--inline .el-form-item-21{flex:0 0 calc(4.1666666667% * 21)}.curd-form .el-form-item-22,.curd-form.el-form--inline .el-form-item-22{flex:0 0 calc(4.1666666667% * 22)}.curd-form .el-form-item-23,.curd-form.el-form--inline .el-form-item-23{flex:0 0 calc(4.1666666667% * 23)}.curd-form .el-form-item-24,.curd-form.el-form--inline .el-form-item-24{flex:0 0 calc(4.1666666667% * 24)}.curd-form .form-item{width:100%;display:flex;min-width:0}.curd-form .form-item .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle;color:var(--el-text-color-secondary)}.curd-form .form-item .tooltip:hover{color:var(--color-primary)}.curd-form .form-item .empty{color:var(--el-text-color-secondary)}.curd-form .schema-form-radio .el-radio-group{vertical-align:top}.curd-form .el-checkbox-group.single .el-checkbox-button+.el-checkbox-button{margin-left:10px}.curd-form .el-checkbox-group.single .el-checkbox-button .el-checkbox-button__inner{border:var(--el-border);border-radius:var(--el-border-radius-base);padding-left:20px;padding-right:20px}.curd-form .el-checkbox-group.single .el-checkbox-button.is-checked .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.curd-form .tooltip{color:var(--el-button-text-color);margin-left:10px;vertical-align:middle}.schema-form-select-check{height:25px;margin-left:20px;margin-top:10px;display:block}.schema-form-select-check :deep(.el-checkbox__input){vertical-align:middle}.table-container .table-pager{margin:15px 0;display:flex;justify-content:space-between;align-items:center}.table-container .table-pager .pagination{justify-content:end;font-weight:400}.table-container .table-control{display:flex;justify-content:space-between;padding-bottom:10px;align-items:flex-end}.table-container .table-control .min-control>.el-button{margin-right:10px}.table-container .s-table-filter .el-form--inline .el-form-item{margin-right:15px}.table-container .el-button+.dropdown-item{margin-left:10px}.table-container .copy{cursor:pointer;margin-right:3px}.table-container .header-td{display:inline-flex;align-items:center;word-break:break-word}.table-container .header-td.center{justify-content:center}.table-container .header-td.right{justify-content:flex-end}.table-container .filter-dropdown-toggle{display:inline-block;line-height:1;cursor:pointer;position:relative;margin-left:3px}.table-container .filter-dropdown-toggle.active{color:var(--el-color-primary)}.table-container .table-menu{display:inline-block;vertical-align:middle;position:relative}.table-container .table-menu .table-menu-item{color:var(--el-button-text-color);font-size:14px;border-radius:4px;border:1px solid var(--el-button-border-color);padding:0;height:28px;width:28px;vertical-align:top;vertical-align:middle}.table-container .table-menu .table-menu-item:not(.is-disabled):active,.table-container .table-menu .table-menu-item:not(.is-disabled):focus{border-color:var(--el-button-border-color)}.table-container .table-menu .table-menu-item+.table-menu-item{margin-left:3px}.table-container .table-menu .table-menu-item:hover{background-color:var(--el-fill-color-light);border-color:var(--el-button-border-color)}.table-container .table-menu .current-size{color:var(--el-color-primary)}.table-container .simple-page{padding:20px 0;text-align:right}.table-container .simple-page>span{margin:0 10px}.curd-table-dropdown-menu .el-dropdown-menu__item{padding:0}.curd-table-dropdown-menu .el-dropdown-menu__item:hover{background-color:var(--el-fill-color-light)}.curd-table-dropdown-menu .el-dropdown-menu__item .el-button{display:block;padding:5px 16px;flex:1;text-align:left;font-size:12px}.table-main-filter-dropdown{padding:0}.table-main-filter-dropdown .search{position:relative;margin-bottom:5px}.table-main-filter-dropdown .search input{outline:0;border:0;width:100%;padding:5px 10px;background:#f4f4f4}.table-main-filter-dropdown .search .icon-suffix{position:absolute;right:10px;top:50%;transform:translateY(-50%)}.table-main-filter-dropdown .search .icon-close1{position:absolute;right:30px;top:50%;transform:translateY(-50%);cursor:pointer;opacity:.7}.table-main-filter-dropdown .search .icon-close1:hover{opacity:1;color:#444}.table-main-filter-dropdown .select li{line-height:30px;padding:0 20px;list-style:none;cursor:pointer}.table-main-filter-dropdown .select li:hover{background:#f4f4f4}.table-main-filter-dropdown .select li.active{color:var(--el-color-primary)}.filter-type-popper{width:auto!important;min-width:0!important;padding:0!important;box-shadow:none!important}.table-filter{display:flex;flex-direction:column;position:relative}.table-filter .filter-search-box{min-height:32px;border-width:1px;border-style:solid;border-color:var(--el-border-color);display:flex;min-width:460px;align-items:center;justify-items:center;justify-content:space-between;overflow:hidden;border-radius:var(--el-border-radius-base);transition:all .3s}.table-filter .filter-search-box.is-focus{border-color:var(--el-color-primary)}.table-filter .filter-search-box .filter-action{height:32px;line-height:32px;align-self:flex-end;display:flex}.table-filter .filter-search-box .filter-action div{cursor:pointer}.table-filter .filter-search-box .filter-action .empty{color:var(--el-color-info);margin-right:15px;padding-left:10px}.table-filter .filter-search-box .filter-action .empty:hover{color:var(--el-color-primary)}.table-filter .filter-search-box .filter-action .search{padding:0 20px;text-align:center;position:relative;display:flex;align-items:center}.table-filter .filter-search-box .filter-action .search:before{content:"";display:block;width:1px;height:20px;background:var(--el-border-color);position:absolute;left:0;top:50%;transform:translateY(-50%)}.table-filter .filter-search-box .filter-action .search:hover{color:var(--el-color-primary)}.table-filter .filter-external .el-form-item{margin-bottom:10px}.table-filter .filter-tags{height:100%;flex-wrap:wrap;display:flex;flex:1;align-items:flex-start;justify-items:center}.table-filter .filter-tags .tag-title{font-size:12px;color:var(--el-text-color-placeholder);height:24px;line-height:24px;margin:0 15px 5px 0}.table-filter .filter-tags .dropdown-toggle{white-space:nowrap;display:flex;align-items:center;justify-items:center;font-size:12px}.table-filter .filter-tags .tag-list{flex:1;display:flex;flex-wrap:wrap}.table-filter .filter-tags .tag-item{height:24px;line-height:24px;white-space:nowrap;display:flex;align-items:center;justify-items:center;padding:0 10px;color:var(--el-color-info-dark-2);background:var(--el-color-info-light-9);font-size:12px;border-radius:var(--el-border-radius-base);margin-right:5px;margin-bottom:10px;cursor:pointer}.table-filter .filter-tags .tag-item .action{color:var(--el-color-info-light-5);text-align:center;width:14px;height:14px;line-height:14px;border-radius:50%;margin-left:10px;font-size:14px;cursor:pointer}.table-filter .filter-tags .tag-item .action:hover{color:var(--el-color-primary)}.table-filter .tag-clear{margin-bottom:2px;margin-left:10px}.table-filter .filter-item .el-form-item{margin:0}.table-filter .filter-item .el-form-item__label{display:none}.table-filter .filter-item .el-input{--el-input-border:none;--el-input-border-color:transparent;--el-input-focus-border-color:transparent;--el-input-hover-border-color:transparent}.table-filter .filter-item .el-select{--el-select-border-color-hover:transparent;--el-select-input-focus-border-color:transparent}.table-filter .filter-item .el-select__wrapper{box-shadow:none}.table-filter-type{box-shadow:var(--el-box-shadow-light);background:var(--el-bg-color);z-index:3060;min-width:150px;max-height:300px;overflow:hidden;--el-font-size-base:12px}.table-filter-type .base-select{--el-font-size-base:12px;height:100%;max-height:300px;display:flex;flex-direction:column}.table-filter-type .base-select .remote-input{width:100%}.table-filter-type .base-select .remote-input .el-input{--el-input-border-radius:0;--el-input-bg-color:var(--el-bg-color-page);--el-input-border:none;--el-input-hover-border-color:transparent;--el-input-focus-border-color:var(--el-border-color)}.table-filter-type .base-select .el-empty__image svg{height:50px}.table-filter-type .base-select .select-spinner{flex:1;position:relative;overflow-y:auto}.table-filter-type .base-select .select-spinner ul{margin:0;padding:0}.table-filter-type .base-select .select-spinner ul li{list-style:none;padding:6px 10px;cursor:pointer;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;font-size:var(--el-font-size-base)}.table-filter-type .base-select .select-spinner ul li.active{color:var(--el-color-primary)}.table-filter-type .base-select .select-spinner ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.table-filter-toggle{padding:0 10px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;min-width:120px;font-size:12px}.table-filter-toggle .current-filter-label{margin-right:20px}.table-filter-List{box-shadow:0 2px 8px 0 rgba(0,0,0,.2);background:var(--el-bg-color);z-index:3060;border-radius:2px;max-height:300px;overflow-y:auto;font-size:12px}.table-filter-List ul{width:100%;margin:0;padding:0}.table-filter-List ul li{width:100%;list-style:none;padding:6px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;cursor:pointer}.table-filter-List ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.table-filter-List ul li.active{color:var(--el-color-primary);font-weight:600}.table-filter-tag-popper{max-height:400px;overflow:auto;padding:0!important;width:250px!important}.table-filter-tag-popper .base-select{--el-font-size-base:12px;height:100%;max-height:300px;display:flex;flex-direction:column}.table-filter-tag-popper .base-select .remote-input{width:100%}.table-filter-tag-popper .base-select .remote-input :deep(.el-input){--el-input-border-radius:0;--el-input-bg-color:var(--el-bg-color-page);--el-input-border:none;--el-input-hover-border-color:transparent;--el-input-focus-border-color:var(--el-border-color)}.table-filter-tag-popper .base-select :deep(.el-empty__imagesvg){height:50px}.table-filter-tag-popper .base-select .select-spinner{flex:1;position:relative;overflow-y:auto}.table-filter-tag-popper .base-select .select-spinner ul{margin:0;padding:0}.table-filter-tag-popper .base-select .select-spinner ul li{list-style:none;padding:6px 10px;cursor:pointer;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--el-font-size-base);box-sizing:border-box}.table-filter-tag-popper .base-select .select-spinner ul li.active{color:var(--el-color-primary)}.table-filter-tag-popper .base-select .select-spinner ul li:hover{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.detail-info{flex:1}.detail-info .detail-info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.detail-info .title{border-left:3px solid var(--el-color-primary);padding-left:10px;line-height:1.2}.detail-info+.detail-info{margin-top:30px}.detail-info.card{background:var(--el-bg-color);border-radius:0;opacity:1;border:1px solid var(--el-border-color)}.detail-info.card[shadow]{box-shadow:var(--el-box-shadow-lighter)}.detail-info.card .detail-info-header{height:50px;border-bottom:1px solid var(--el-border-color);margin:0;padding:0 20px}.detail-info.card .detail-info-header .title{border-left:0;padding:0}.detail-info.card .detail-info-body{padding:10px 20px 20px 20px;margin:0}.detail-info .detail-info-body{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.detail-info .detail-info-body .table-detail-col{box-sizing:border-box}.detail-info .detail-info-body .item-col{line-height:20px;height:100%;box-sizing:border-box;display:flex}.detail-info .detail-info-body .item-col .label{padding:4px 0;color:var(--el-text-color-secondary);box-sizing:border-box;vertical-align:middle;float:left;display:flex;align-items:center}.detail-info .detail-info-body .item-col .det{flex:1;padding:4px 10px;box-sizing:border-box;min-height:20px;height:100%;word-break:break-all;overflow:hidden}.detail-info .detail-info-body.table{border-top:1px solid var(--el-border-color);border-left:1px solid var(--el-border-color)}.detail-info .detail-info-body.table .table-detail-col{padding:0!important;border-bottom:1px solid var(--el-border-color);border-right:1px solid var(--el-border-color)}.detail-info .detail-info-body.table .item-col{background:var(--el-fill-color-light);border:1px solid var(--el-bg-color)}.detail-info .detail-info-body.table .item-col .label{padding-left:10px;padding-right:10px;width:100px}.detail-info .detail-info-body.table .item-col .det{border-left:1px solid var(--el-border-color);background-color:var(--el-bg-color)}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ref, type Ref, unref } from "vue"
|
|
2
|
+
import type { Language } from "../../locale"
|
|
2
3
|
const globalConfig: Ref<GlobalConfig> = ref({} as GlobalConfig)
|
|
3
4
|
export function useGlobalConfig() {
|
|
4
5
|
return globalConfig
|
|
@@ -31,6 +32,7 @@ const mergeConfig = (a: GlobalConfig, b: Partial<GlobalConfig>) => {
|
|
|
31
32
|
export interface GlobalConfig {
|
|
32
33
|
size: "default" | "small" | "large"
|
|
33
34
|
form?: FormConfig
|
|
35
|
+
locale?: Language
|
|
34
36
|
}
|
|
35
37
|
interface FormConfig {
|
|
36
38
|
components?: unknown[]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { computed, isRef, ref, unref, type ComputedRef } from "vue"
|
|
2
|
+
import zhCn from "../../locale/lang/zh-cn"
|
|
3
|
+
|
|
4
|
+
import type { MaybeRef } from "@vueuse/core"
|
|
5
|
+
import type { Ref } from "vue"
|
|
6
|
+
import type { Language } from "../../locale"
|
|
7
|
+
import { useGlobalConfig } from "./useGlobalConfig"
|
|
8
|
+
|
|
9
|
+
export type TranslatorOption = Record<string, string | number> | string[]
|
|
10
|
+
export type Translator = (path: string, option?: TranslatorOption) => string
|
|
11
|
+
export type LocaleContext = {
|
|
12
|
+
locale: Ref<Language>
|
|
13
|
+
lang: Ref<string>
|
|
14
|
+
t: Translator
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const buildTranslator =
|
|
18
|
+
(locale: MaybeRef<Language>): Translator =>
|
|
19
|
+
(path, option) =>
|
|
20
|
+
translate(path, option, unref(locale))
|
|
21
|
+
|
|
22
|
+
export const translate = (path: string, option: undefined | TranslatorOption, locale: Language): string => {
|
|
23
|
+
const value = get(locale, path, path) as string
|
|
24
|
+
if (Array.isArray(option)) {
|
|
25
|
+
return value.replace(/\{(\d+)\}/g, (_, key) => `${option[Number(key)]}`)
|
|
26
|
+
}
|
|
27
|
+
return value.replace(/\{(\w+)\}/g, (_, key) => `${option?.[key] ?? `{${key}}`}`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export const buildLocaleContext = (locale: ComputedRef<Language>): LocaleContext => {
|
|
31
|
+
const lang = computed(() => unref(locale).name)
|
|
32
|
+
const localeRef = isRef(locale) ? locale : ref(locale)
|
|
33
|
+
return {
|
|
34
|
+
lang,
|
|
35
|
+
locale: localeRef,
|
|
36
|
+
t: buildTranslator(locale),
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const useLocale = (localeOverrides?: Language | undefined) => {
|
|
41
|
+
const globalConfig = useGlobalConfig()
|
|
42
|
+
const locale = localeOverrides || globalConfig.value.locale!
|
|
43
|
+
return buildLocaleContext(computed(() => locale || zhCn))
|
|
44
|
+
}
|
|
45
|
+
function get(object: Record<string, unknown>, path: string, defaultValue: unknown) {
|
|
46
|
+
// 将路径转换为数组形式
|
|
47
|
+
const pathArray = Array.isArray(path) ? path : path.split(/[\.\[\]]/).filter(Boolean)
|
|
48
|
+
|
|
49
|
+
let result = object
|
|
50
|
+
|
|
51
|
+
for (const key of pathArray) {
|
|
52
|
+
if (result === null || result === undefined) {
|
|
53
|
+
return defaultValue
|
|
54
|
+
}
|
|
55
|
+
result = result[key] as Record<string, unknown>
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return result === undefined ? defaultValue : result
|
|
59
|
+
}
|
package/utils/vue/install.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { App, Component } from "vue"
|
|
2
2
|
import type { SFCWithInstall } from "./typescript"
|
|
3
3
|
|
|
4
|
-
export const withInstall = <T, E extends Record<string, unknown>>(main: T, extra?: E) => {
|
|
4
|
+
export const withInstall = <T, E extends Record<string, unknown>>(name: string, main: T, extra?: E) => {
|
|
5
5
|
;(main as SFCWithInstall<T>).install = (app: App): void => {
|
|
6
6
|
for (const comp of [main, ...Object.values(extra ?? {})]) {
|
|
7
7
|
const component = comp as Component
|
|
8
|
-
app.component(
|
|
8
|
+
app.component(name || "", component)
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
|