Browse Source

chore: 模板初步设计

master
wangxiang 1 year ago
parent
commit
e338ed1602
  1. 54
      src/views/system/devtools/template/TemplateModal.vue
  2. 11
      src/views/system/devtools/template/index.vue
  3. 17
      src/views/system/devtools/template/template.data.ts

54
src/views/system/devtools/template/TemplateModal.vue

@ -1,53 +1,61 @@
<template> <template>
<BasicModal <BasicModal
v-bind="$attrs" v-bind="$attrs"
width="720px" defaultFullscreen
:canFullscreen="false"
@register="registerModal" @register="registerModal"
@ok="handleSubmit" @ok="handleSubmit"
> >
<BasicForm @register="registerForm"/> <BasicForm @register="registerForm"/>
<AceEditor v-model:value="state.content" @register="registerAceEditor"/>
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, unref } from 'vue'; import { reactive } from 'vue';
import { BasicForm, useForm } from '/@/components/Form/index'; import { BasicForm, useForm } from '/@/components/Form/index';
import { formSchema } from './template.data'; import { formSchema } from './template.data';
import { addGenQueryType, editGenQueryType, getGenQueryType } from '/@/api/platform/system/controller/genQueryType'; import { getGenCodeTemplateGroup, saveAndGencodeTemplateObj } from '/@/api/platform/system/controller/gencodeTemplateGroup';
import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal';
import { AceEditor, useAceEditor } from '/@/components/AceEditor';
/** 通用变量统一声明区域 */ const state = reactive({
const tag = ref<Nullable<string>>(''); tag: '',
content: ''
});
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ /** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, setProps, updateSchema }] = useForm({ const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, setProps, updateSchema }] = useForm({
labelWidth: 100, labelWidth: 120,
schemas: formSchema, schemas: formSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
baseColProps: { span: 24 } baseColProps: { span: 24 }
}); });
const [registerAceEditor, { setProps: setAceEditorProps }] = useAceEditor({
lang: 'javascript',
options: {
useWorker: true,
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: true,
}
});
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data: BoxPayload = { _tag: '' }) => { const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data: BoxPayload = { _tag: '' }) => {
// //
await resetFields(); await resetFields();
await clearValidate(); await clearValidate();
await setProps({ disabled: false }); await setProps({ disabled: false });
// //
tag.value = data._tag; state.tag = data._tag;
const id = data.record?.id; const id = data.record?.id;
const props: Partial<ModalProps> = { confirmLoading: false, showOkBtn: true }; const props: Partial<ModalProps> = { confirmLoading: false };
// tag // tag
switch (unref(tag)) { switch (state.tag) {
case 'add': case 'add':
props.title = '新增查询类型'; props.title = '新增模板';
break;
case 'view':
props.title = '查看查询类型';
props.showOkBtn = false;
await setProps({ disabled: true });
await setFieldsValue(await getGenQueryType(id));
break; break;
case 'edit': case 'edit':
props.title = '编辑查询类型'; props.title = '编辑模板';
await setFieldsValue(await getGenQueryType(id)); await setFieldsValue(await getGenCodeTemplateGroup(id));
break; break;
} }
// : // :
@ -61,15 +69,7 @@
const formData = await validate(); const formData = await validate();
// //
setModalProps({ confirmLoading: true }); setModalProps({ confirmLoading: true });
// tag
switch (unref(tag)) {
case 'add':
await addGenQueryType(formData);
break;
case 'edit':
await editGenQueryType(formData);
break;
}
// //
closeModal(); closeModal();
emit('success'); emit('success');

11
src/views/system/devtools/template/index.vue

@ -32,7 +32,7 @@
{ {
label: '复制', label: '复制',
icon: 'fa-regular:copy', icon: 'fa-regular:copy',
onClick: handleViewEdit.bind(null, record) onClick: handleCopy.bind(null, record)
}, },
{ {
label: '删除', label: '删除',
@ -51,7 +51,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, toRaw } from 'vue'; import { reactive, toRaw } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { listGenQueryType, delGenQueryType } from '/@/api/platform/system/controller/genQueryType'; import { listGenCodeTemplateGroup, delGenCodeTemplateGroup } from '/@/api/platform/system/controller/gencodeTemplateGroup';
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import TemplateModal from './TemplateModal.vue'; import TemplateModal from './TemplateModal.vue';
import { columns, searchFormSchema } from './template.data'; import { columns, searchFormSchema } from './template.data';
@ -72,7 +72,7 @@
const { createConfirm, createMessage } = useMessage(); const { createConfirm, createMessage } = useMessage();
const [registerModal, { openModal }] = useModal(); const [registerModal, { openModal }] = useModal();
const [registerTable, { reload, clearSelectedRowKeys, getSelectRowKeys }] = useTable({ const [registerTable, { reload, clearSelectedRowKeys, getSelectRowKeys }] = useTable({
api: listGenQueryType, api: listGenCodeTemplateGroup,
rowKey: 'id', rowKey: 'id',
columns, columns,
formConfig: { formConfig: {
@ -109,9 +109,8 @@
openModal(true,{ _tag: 'add' }); openModal(true,{ _tag: 'add' });
} }
function handleViewEdit(record?: Recordable) { function handleCopy(record?: Recordable) {
record = record || { id: getSelectRowKeys() }; record = record || { id: getSelectRowKeys() };
openModal(true, { _tag: 'view', record });
} }
function handleEdit(record?: Recordable) { function handleEdit(record?: Recordable) {
@ -126,7 +125,7 @@
title: '警告', title: '警告',
content: `是否确认删除id编号为${ids}的数据吗?`, content: `是否确认删除id编号为${ids}的数据吗?`,
onOk: async () => { onOk: async () => {
await delGenQueryType(ids); await delGenCodeTemplateGroup(ids);
createMessage.success('删除成功!'); createMessage.success('删除成功!');
handleRefreshTable(); handleRefreshTable();
} }

17
src/views/system/devtools/template/template.data.ts

@ -11,7 +11,6 @@ export const columns: BasicColumn[] = [
{ {
title: '模板分类', title: '模板分类',
dataIndex: 'type', dataIndex: 'type',
width: 100,
customRender: ({record}) => { customRender: ({record}) => {
const type = record.type; const type = record.type;
// 采用二进制~~取反,只要为null或者0等等一些其他的空元素都会转为0 // 采用二进制~~取反,只要为null或者0等等一些其他的空元素都会转为0
@ -23,9 +22,8 @@ export const columns: BasicColumn[] = [
} }
}, },
{ {
title: '是否系统模板', title: '系统模板',
dataIndex: 'isSystem', dataIndex: 'isSystem',
width: 80,
customRender: ({ record }) => { customRender: ({ record }) => {
const isSystem = record.isSystem; const isSystem = record.isSystem;
// 采用二进制~~取反,只要为null或者0等等一些其他的空元素都会转为0 // 采用二进制~~取反,只要为null或者0等等一些其他的空元素都会转为0
@ -91,7 +89,7 @@ export const formSchema: FormSchema[] = [
}, },
{ {
field: 'isSystem', field: 'isSystem',
label: '是否系统模板', label: '系统模板',
component: 'Select', component: 'Select',
required: true, required: true,
componentProps: { componentProps: {
@ -102,4 +100,15 @@ export const formSchema: FormSchema[] = [
}, },
colProps: { span: 12 }, colProps: { span: 12 },
}, },
{
label: '备注',
field: 'remarks',
component: 'InputTextArea',
componentProps: {
rows: 2
},
colProps: {
span: 24
}
}
]; ];

Loading…
Cancel
Save