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 @@
@@ -84,7 +101,7 @@ const buttons = ref([{
:columns="columns"
:buttons="buttons"
buttons-slot="buttons"
- :buttons-column-attrs="{width:'300px'}"
+ :buttons-column-attrs="{width:'200px'}"
@page-size-change="loadUsers()"
@current-page-change="loadUsers()"
>
@@ -104,6 +121,21 @@ const buttons = ref([{
+
+
+