diff --git a/src/assets/main.css b/src/assets/main.css index db456b8..6f65237 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -92,10 +92,14 @@ html, body, #app, .index-container { padding-top: 20px; } -.form-edit-width { +.form-edit-width-70 { width:70% } +.form-edit-width-100 { + width:100% +} + /** * slide-fade动画 */ diff --git a/src/components/common-form/index.vue b/src/components/common-form/index.vue index 089a687..377bd94 100644 --- a/src/components/common-form/index.vue +++ b/src/components/common-form/index.vue @@ -38,14 +38,26 @@ const props = defineProps({ type: Boolean, default: true }, + submitLabel: { + type: String, + default: '' + }, showReset: { type: Boolean, default: true }, + resetLabel: { + type: String, + default: '' + }, showBack: { type: Boolean, default: false }, + backLabel: { + type: String, + default: '' + }, backUrl: { type: String, default: '' @@ -110,19 +122,19 @@ defineExpose({ type="primary" @click="$emit('submitForm', form)" > - {{ $t('common.label.submit') }} + {{ submitLabel||$t('common.label.submit') }} - {{ $t('common.label.reset') }} + {{ resetLabel||$t('common.label.reset') }} - {{ $t('common.label.back') }} + {{ backLabel||$t('common.label.back') }} +import { useVModel } from '@vueuse/core' +import { computed, ref } from 'vue' + +const props = defineProps({ + modelValue: { + type: Boolean, + default: false + }, + draggable: { + type: Boolean, + default: true + }, + title: { + type: String, + default: '' + }, + height: { + type: String, + default: '' + }, + width: { + type: String, + default: '800px' + }, + buttons: { + type: Array, + default: () => [] + }, + showClose: { + type: Boolean, + default: true + }, + beforeClose: { + type: Function, + default: null + }, + showOk: { + type: Boolean, + default: true + }, + showCancel: { + type: Boolean, + default: true + }, + okLabel: { + type: String, + default: '' + }, + cancelLabel: { + type: String, + default: '' + }, + okClick: { + type: Function, + default: null + }, + cancelClick: { + type: Function, + default: null + }, + closeClick: { + type: Function, + default: null + } +}) + +const emit = defineEmits(['update:modelValue']) +const showDialog = useVModel(props, 'modelValue', emit) // 自动响应v-model + +const okButtonClick = $event => { + if (!props.okClick || props.okClick($event) !== false) { + showDialog.value = false + } +} +const cancelButtonClick = $event => { + if (!props.cancelClick || props.cancelClick($event) !== false) { + showDialog.value = false + } +} + +const calcBeforeClose = computed(() => { + if (props.beforeClose) { + return props.beforeClose + } else if (props.closeClick) { + return done => { + if (props.closeClick() !== false) { + done() + } + } + } + return null +}) + + + + + + diff --git a/src/components/index.js b/src/components/index.js index d5ea3fe..bad61a0 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -7,6 +7,7 @@ import CommonMenuItem from '@/components/common-menu-item/index.vue' import CommonTabsView from '@/components/common-tabs-view/index.vue' import CommonTable from '@/components/common-table/index.vue' import CommonBreadcrumb from '@/components/common-breadcrumb/index.vue' +import CommonWindow from '@/components/common-window/index.vue' /** * 自定义通用组件自动注册 @@ -25,5 +26,6 @@ export default { Vue.component('CommonTabsView', CommonTabsView) Vue.component('CommonTable', CommonTable) Vue.component('CommonBreadcrumb', CommonBreadcrumb) + Vue.component('CommonWindow', CommonWindow) } } diff --git a/src/messages/common_cn.js b/src/messages/common_cn.js index 2d304bb..9662723 100644 --- a/src/messages/common_cn.js +++ b/src/messages/common_cn.js @@ -5,7 +5,10 @@ common.label.title = '简单Element+模板' common.label.login = '登录' common.label.index = '首页' common.label.settings = '设置' +common.label.confirm = '确认' +common.label.save = '保存' common.label.close = '关闭' +common.label.cancel = '取消' common.label.refresh = '刷新' common.label.closeOther = '关闭其他' common.label.closeRight = '关闭右侧' diff --git a/src/messages/common_en.js b/src/messages/common_en.js index c9ca5fd..c7cc51f 100644 --- a/src/messages/common_en.js +++ b/src/messages/common_en.js @@ -5,7 +5,10 @@ common.label.title = 'Simple Element+' common.label.login = 'Login' common.label.index = 'Home' common.label.settings = 'Settings' +common.label.confirm = 'Confirm' +common.label.save = 'Save' common.label.close = 'Close' +common.label.cancel = 'Cancel' common.label.refresh = 'Refresh' common.label.closeOther = 'Close Others' common.label.closeRight = 'Close Right' diff --git a/src/services/user/UserService.js b/src/services/user/UserService.js index 0a17d7f..3efe1b4 100644 --- a/src/services/user/UserService.js +++ b/src/services/user/UserService.js @@ -27,3 +27,50 @@ export const loadUserResult = async (id, config) => { console.info('==================', usersResult) return usersResult } + +/** + * @return {[CommonFormOption]} + */ +export const useUserFormOptions = () => { + return [{ + label: '中文名', + prop: 'nameCn', + placeholder: '请输入中文名', + required: true + }, { + label: '英文名', + prop: 'nameEn', + placeholder: '请输入英文名', + required: true + }, { + label: '出生日期', + type: 'date-picker', + prop: 'birthday', + value: '', + placeholder: '选择出生日期', + required: true + }, { + label: '性别', + type: 'radio-group', + prop: 'gender', + value: '', + required: true, + children: [ + { + label: '男', + value: 'male' + }, + { + label: '女', + value: 'female' + } + ] + }, { + label: '地址', + prop: 'address', + value: '', + attrs: { + type: 'textarea' + } + }] +} diff --git a/src/views/tools/TableEdit.vue b/src/views/tools/TableEdit.vue index 1668c36..23852db 100644 --- a/src/views/tools/TableEdit.vue +++ b/src/views/tools/TableEdit.vue @@ -1,60 +1,17 @@ + + +