diff --git a/server/internal/library/hggen/views/curd_generate_web_view.go b/server/internal/library/hggen/views/curd_generate_web_view.go
index 1d9166a..fabe1fd 100644
--- a/server/internal/library/hggen/views/curd_generate_web_view.go
+++ b/server/internal/library/hggen/views/curd_generate_web_view.go
@@ -9,6 +9,7 @@ import (
"bytes"
"context"
"fmt"
+
"github.com/gogf/gf/v2/frame/g"
)
@@ -21,18 +22,18 @@ func (l *gCurd) webViewTplData(ctx context.Context, in *CurdPreviewInput) (data
func (l *gCurd) generateWebViewItem(ctx context.Context, in *CurdPreviewInput) string {
buffer := bytes.NewBuffer(nil)
for _, field := range in.masterFields {
- if !field.IsEdit {
- continue
- }
+ // if !field.IsEdit {
+ // continue
+ // }
var (
- defaultComponent = fmt.Sprintf("\n %s\n {{ formValue.%s }}\n ", field.Dc, field.TsName)
+ defaultComponent = fmt.Sprintf("
\n
%s:
\n
{{ params.%s }}
\n
", field.Dc, field.TsName)
component string
)
switch field.FormMode {
case FormModeInputTextarea, FormModeInputEditor:
- component = fmt.Sprintf("\n %s\n ", field.Dc, field.TsName)
+ component = fmt.Sprintf(" ", field.Dc, field.TsName)
case FormModeInputDynamic:
component = defaultComponent
@@ -44,28 +45,28 @@ func (l *gCurd) generateWebViewItem(ctx context.Context, in *CurdPreviewInput) s
component = defaultComponent
case FormModeRadio, FormModeSelect:
- component = fmt.Sprintf("\n {{ getOptionLabel(options.%s, formValue?.%s) }}\n ", field.Dc, in.options.dictMap[field.TsName], field.TsName, in.options.dictMap[field.TsName], field.TsName)
+ component = fmt.Sprintf(" \n
%s:
\n
\n {{ getOptionLabel(options.%s, params?.%s) }}\n
\n
", field.Dc, in.options.dictMap[field.TsName], field.TsName, in.options.dictMap[field.TsName], field.TsName)
case FormModeCheckbox, FormModeSelectMultiple:
- component = fmt.Sprintf("\n \n {{ getOptionLabel(options.%s, item) }}\n \n ", field.Dc, field.TsName, in.options.dictMap[field.TsName], in.options.dictMap[field.TsName])
+ component = fmt.Sprintf(" \n
%s:
\n
\n \n {{ getOptionLabel(options.%s, item) }}\n \n \n
\n
", field.Dc, field.TsName, in.options.dictMap[field.TsName], in.options.dictMap[field.TsName])
case FormModeUploadImage:
- component = fmt.Sprintf("\n %s\n ", field.Dc, field.TsName)
+ component = fmt.Sprintf(" ", field.Dc, field.TsName)
case FormModeUploadImages:
- component = fmt.Sprintf("\n %s\n \n \n \n \n \n \n \n ", field.Dc, field.TsName)
+ component = fmt.Sprintf(" \n
%s:
\n
\n \n \n \n \n \n \n \n
\n
", field.Dc, field.TsName)
case FormModeUploadFile:
- component = fmt.Sprintf("\n %s\n \n
\n
\n
\n {{ getFileExt(formValue.%s) }}\n
\n
\n
\n
\n ", field.Dc, field.TsName, field.TsName, field.TsName)
+ component = fmt.Sprintf(" \n
%s:
\n
\n
\n
\n
\n {{\n getFileExt(params.attachfile)\n }}\n
\n
\n
\n
\n
", field.TsName, field.TsName)
case FormModeUploadFiles:
- component = fmt.Sprintf("\n %s\n \n
\n \n
\n
\n {{\n getFileExt(item)\n }}\n
\n
\n
\n \n
\n ", field.Dc, field.TsName)
+ component = fmt.Sprintf(" \n
%s:
\n
\n
\n
\n \n
\n
\n {{\n getFileExt(item)\n }}\n
\n
\n
\n \n
\n
\n
", field.Dc, field.TsName)
case FormModeSwitch:
- component = fmt.Sprintf("\n ", field.Dc, field.TsName)
+ component = fmt.Sprintf(" ", field.Dc, field.TsName)
case FormModeRate:
- component = fmt.Sprintf("", field.Dc, field.TsName)
+ component = fmt.Sprintf(" ", field.Dc, field.TsName)
default:
component = defaultComponent
diff --git a/server/resource/generate/default/curd/source.sql.template b/server/resource/generate/default/curd/source.sql.template
index c94b001..f37d6a8 100644
--- a/server/resource/generate/default/curd/source.sql.template
+++ b/server/resource/generate/default/curd/source.sql.template
@@ -37,7 +37,7 @@ INSERT INTO `@{.menuTable}` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type
SET @listId = LAST_INSERT_ID();
@{ if or (eq .options.Step.HasView true) (eq .options.Step.HasEdit true) }
-- 详情
-INSERT INTO `@{.menuTable}` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @dirId, '@{.tableComment}详情', '@{.varName | LcFirst}View', 'view/:id?', '', '2', '', '/@{.apiPrefix}/view', '', '/@{.componentPrefix}/view', '0', '@{.varName | LcFirst}Index', '0', '0', '', '0', '1', '0', '2', '', '20', '', '1', @now, @now);
+INSERT INTO `@{.menuTable}` (`id`, `pid`, `title`, `name`, `path`, `icon`, `type`, `redirect`, `permissions`, `permission_name`, `component`, `always_show`, `active_menu`, `is_root`, `is_frame`, `frame_src`, `keep_alive`, `hidden`, `affix`, `level`, `tree`, `sort`, `remark`, `status`, `created_at`, `updated_at`) VALUES (NULL, @listId, '@{.tableComment}详情', '@{.varName | LcFirst}View', 'view/:id?', '', '3', '', '/@{.apiPrefix}/view', '', '/@{.componentPrefix}/view', '0', '@{.varName | LcFirst}Index', '0', '0', '', '0', '1', '0', '2', '', '20', '', '1', @now, @now);
@{end}
-- 菜单按钮
diff --git a/server/resource/generate/default/curd/web.index.vue.template b/server/resource/generate/default/curd/web.index.vue.template
index 8fc6782..865d6b2 100644
--- a/server/resource/generate/default/curd/web.index.vue.template
+++ b/server/resource/generate/default/curd/web.index.vue.template
@@ -2,7 +2,7 @@
@@ -26,7 +26,6 @@
:row-key="(row) => row.id"
ref="actionRef"
:actionColumn="actionColumn"
- :checked-row-keys="checkedIds"
@update:checked-row-keys="onCheckedRow"
:scroll-x="1090"
:resizeHeightOffset="-10000"
@@ -82,6 +81,7 @@
:showModal="showModal"
:formParams="formParams"
/>@{end}
+@{ if eq .options.Step.HasView true } @{end}
@@ -97,6 +97,8 @@
@{ if or (eq .options.Step.HasView true) (eq .options.Step.HasEdit true) } import { useRouter } from 'vue-router';@{end}
import { getOptionLabel } from '@/utils/hotgo';
@{ if eq .options.Step.HasEdit true } import Edit from './edit.vue';@{end}
+@{ if eq .options.Step.HasView true } import View from './view.vue';@{end}
+
const { hasPermission } = usePermission();
@{ if or (eq .options.Step.HasView true) (eq .options.Step.HasEdit true) } const router = useRouter();@{end}
const actionRef = ref();
@@ -106,6 +108,7 @@
const batchDeleteDisabled = ref(true);
const checkedIds = ref([]);
const showModal = ref(false);
+ const showView = ref(false);
const formParams = ref();
const actionColumn = reactive({
@@ -189,7 +192,12 @@
}
@{ if eq .options.Step.HasView true }
function handleView(record: Recordable) {
- router.push({ name: '@{.varName | LcFirst}View', params: { id: record.@{.pk.TsName} } });
+ showView.value = true;
+ formParams.value = newState(record as State);
+ }
+
+ function updateShowView(value) {
+ showView.value = value;
}@{end}
@{ if eq .options.Step.HasEdit true }
function handleEdit(record: Recordable) {
@@ -223,8 +231,6 @@
negativeText: '取消',
onPositiveClick: () => {
Delete({ id: checkedIds.value }).then((_res) => {
- batchDeleteDisabled.value = true;
- checkedIds.value = [];
message.success('删除成功');
reloadTable();
});
@@ -236,8 +242,19 @@
}@{end}
@{ if eq .options.Step.HasExport true } function handleExport() {
- message.loading('正在导出列表...', { duration: 1200 });
- Export(searchFormRef.value?.formModel);
+ dialog.warning({
+ title: '警告',
+ content: '是否确定执行此操作?',
+ positiveText: '确定',
+ negativeText: '取消',
+ onPositiveClick: () => {
+ message.loading('正在导出列表...', { duration: 1200 });
+ Export(searchFormRef.value?.formModel);
+ },
+ onNegativeClick: () => {
+ // message.error('取消');
+ },
+ });
}@{end}
@{ if eq .options.Step.HasStatus true } function handleStatus(record: Recordable, status: number) {
diff --git a/server/resource/generate/default/curd/web.view.vue.template b/server/resource/generate/default/curd/web.view.vue.template
index 24928dd..c97287c 100644
--- a/server/resource/generate/default/curd/web.view.vue.template
+++ b/server/resource/generate/default/curd/web.view.vue.template
@@ -1,29 +1,35 @@
-
+