{ "properties" : { }, "id" : "b35e1c055131478d8ebabb7a64eb721d", "script" : null, "groupId" : "eb5dbed949de4f50ba4bf59f483252a5", "name" : "列表", "createTime" : 1649260172031, "updateTime" : null, "lock" : null, "createBy" : null, "updateBy" : null, "path" : "/list", "description" : null } ================================ <template> <mb-list ref="magicList" v-bind="listOptions" /> <mb-dialog ref="formDialog" :title="magicFormTitle" @confirm-click="magicForm.save($event)" width="50%"> <template #content> <mb-form ref="magicForm" @reload="magicList.reload" v-bind="formOptions" /> </template> </mb-dialog> </template> <script setup> import { ref, reactive, getCurrentInstance, nextTick } from 'vue' const { proxy } = getCurrentInstance() const formDialog = ref() const magicList = ref() const magicForm = ref() const magicFormTitle = ref() const listOptions = reactive({ tools: [{ type: 'add', permission: 'data:test:save', click: () => { magicFormTitle.value = '添加' formDialog.value.show() } }], table: { url: '/data/test/list', where: { name: { label: '名字' }, sex: { label: '性别' }, headPortrait: { label: '头像' }, remarks: { label: '备注' } }, cols: [ { field: 'name', label: '名字' }, { field: 'sex', label: '性别', dictType: 'sex' }, { field: 'headPortrait', label: '头像', type: 'image' }, { field: 'remarks', label: '备注' },{ label: '操作', type: 'btns', width: 140, fixed: 'right', btns: [ { permission: 'data:test:save', label: '修改', type: 'primary', link: true, icon: 'ElEdit', click: (row) => { magicFormTitle.value = '修改' formDialog.value.show(() => magicForm.value.getDetail(row.id)) } }, { permission: 'data:test:delete', label: '删除', type: 'primary', link: true, icon: 'ElDelete', click: (row) => { proxy.$common.handleDelete({ url: '/data/test/delete', id: row.id, done: () => magicList.value.reload() }) } } ] } ] } }) const formOptions = reactive({ detail: { request: { url: '/data/test/get' } }, form: { request: { url: "/data/test/save" }, rows: [{ gutter: 24, cols: [{ span: 12, name: 'name', label: '名字', component: 'input', rules: [{ required: true, message: '请输入名字', trigger: 'change' }] },{ span: 12, name: 'sex', label: '性别', component: 'radio-group', props: { type: 'sex' } },{ span: 12, name: 'headPortrait', label: '头像', component: 'upload-image', rules: [{ required: true, message: '请选择头像', trigger: 'change' }] },{ span: 12, name: 'remarks', label: '备注', component: 'input', props: { type: 'textarea' } }] }] } }) </script>