From 4d3b655509f84e4afa334eeff20f7aab053e5900 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 01 七月 2024 16:23:02 +0800
Subject: [PATCH] #

---
 zy-asrs-framework/src/main/resources/templates/vue/Edit.txt                        |  137 +++++++++++-----------
 zy-asrs-admin/src/views/system/userLogin/edit.vue                                  |    2 
 zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java |  125 ++++++--------------
 zy-asrs-admin/src/router/index.js                                                  |    9 +
 zy-asrs-framework/src/main/resources/templates/vue/Index.txt                       |   30 ----
 5 files changed, 119 insertions(+), 184 deletions(-)

diff --git a/zy-asrs-admin/src/router/index.js b/zy-asrs-admin/src/router/index.js
index 11e6fb7..00836f2 100644
--- a/zy-asrs-admin/src/router/index.js
+++ b/zy-asrs-admin/src/router/index.js
@@ -3,6 +3,7 @@
 import MenuView from '../views/system/menu/index.vue'
 import LoginView from '../views/login/LoginView.vue'
 import UserLoginView from '../views/system/userLogin/index.vue'
+import UserView from '../views/system/user/index.vue'
 
 const router = createRouter({
   history: createWebHistory(import.meta.env.BASE_URL),
@@ -36,6 +37,14 @@
         keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
       },
     },
+    {
+      path: '/system/user',
+      name: '鐢ㄦ埛绠$悊',
+      component: UserView,
+      meta: {
+        keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+      },
+    },
   ]
 })
 
diff --git a/zy-asrs-admin/src/views/system/userLogin/edit.vue b/zy-asrs-admin/src/views/system/userLogin/edit.vue
index 235a3c9..e2bc9a9 100644
--- a/zy-asrs-admin/src/views/system/userLogin/edit.vue
+++ b/zy-asrs-admin/src/views/system/userLogin/edit.vue
@@ -70,7 +70,7 @@
                 </a-form-item>
                 <a-form-item label="绫诲瀷" name="type" style="width: 250px;"
                     :rules="[{ required: true, message: '绫诲瀷涓嶈兘涓虹┖!' }]">
-                    <a-select ref="select" v-model:value="formData.type" :options="[
+                    <a-select v-model:value="formData.type" :options="[
                         { label: '鐧诲綍鎴愬姛', value: 0 },
                         { label: '鐧诲綍澶辫触', value: 1 },
                         { label: '閫�鍑虹櫥褰�', value: 2 },
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
index 23373e9..3fe2222 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
@@ -120,12 +120,12 @@
                     break;
                 case "Index":
                     pass = vue;
-                    directory = frontendPrefixPath + "/src/views/" + simpleEntityName + "/";
+                    directory = frontendPrefixPath + "/src/views/" + itemName + "/" + simpleEntityName + "/";
                     fileName = "index.vue";
                     break;
                 case "Edit":
                     pass = vue;
-                    directory = frontendPrefixPath + "/src/views/" +  simpleEntityName + "/";
+                    directory = frontendPrefixPath + "/src/views/" + itemName + "/" + simpleEntityName + "/";
                     fileName = "edit.vue";
                     break;
                 default:
@@ -787,18 +787,19 @@
             }
             sb.append("',\n")
                     .append("            width: 140,\n");
-            if (!Cools.isEmpty(column.getEnums())) {
-                sb.append("                customRender: (column) => {\n");
-                sb.append("                  let typeMap = {");
-                for (Map<String, Object> map : column.getEnums()) {
-                    for (Map.Entry<String, Object> entry : map.entrySet()){
-                        sb.append("                    ").append(entry.getKey()).append(": ");
-                        sb.append("                    { text: '").append(entry.getValue()).append("'").append(" },\n");
-                    }
-                }
-                sb.append("                }\n");
-                sb.append("                }\n");
-            }
+//            if (!Cools.isEmpty(column.getEnums())) {
+//                sb.append("                customRender: (column) => {\n");
+//                sb.append("                  let typeMap = {");
+//                for (Map<String, Object> map : column.getEnums()) {
+//                    for (Map.Entry<String, Object> entry : map.entrySet()){
+//                        sb.append("                    ").append(entry.getKey()).append(": ");
+//                        sb.append("                    { text: '").append(entry.getValue()).append("'").append(" },\n");
+//                    }
+//                }
+//                sb.append("                }\n");
+//                sb.append("                return typeMap[column.value].text;");
+//                sb.append("                }\n");
+//            }
             sb.append("        },\n");
         }
         return sb.toString();
@@ -846,8 +847,6 @@
 
     private String createFormEditColumns() {
         StringBuilder sb = new StringBuilder();
-        int times = 0;
-        boolean has = false;boolean init = false;
         for (Column column : columns) {
             if (column.isPrimaryKey()
                     || column.getHumpName().equals("deleted")
@@ -855,99 +854,55 @@
             ) {
                 continue;
             }
-            if (times%2 == 0) {
-                sb.append("                    <ProForm.Group>\n");
-                has = true;init=true;
-            }
 
-            String itemType = "ProFormText";
-            String precision = "";
-            switch (column.getType()) {
-                case "Boolean":
-                    itemType = "ProFormText";
-                    break;
-                case "Short":
-                    itemType = "ProFormDigit";
-                    precision = "0";
-                    break;
-                case "Integer":
-                    itemType = "ProFormDigit";
-                    precision = "0";
-                    break;
-                case "Long":
-                    itemType = "ProFormDigit";
-                    precision = "0";
-                    break;
-                case "Double":
-                    itemType = "ProFormDigit";
-                    precision = "2";
-                    break;
-                case "String":
-                    itemType = "ProFormText";
-                    break;
-                case "Date":
-                    itemType = "ProFormDateTimePicker";
-                    break;
-                default:
-                    break;
-            }
-            if (!Cools.isEmpty(column.getEnums())) {
-                itemType = "ProFormSelect";
-            }
-            if (!Cools.isEmpty(column.getForeignKey())) {
-                itemType = "ProFormSelect";
-            }
-
-            sb.append("                        <").append(itemType).append("\n")
-                    .append("                            name=\"").append(column.getHumpName()).append("\"\n")
-                    .append("                            label=\"").append(column.getComment()).append("\"\n")
-                    .append("                            colProps={{ md: 12, xl: 12 }}\n");
-            // 鏁板瓧灏忔暟鐐�
-            if (!Cools.isEmpty(precision) && Cools.isEmpty(column.getEnums())) {
-                sb.append("                            fieldProps={{ precision: ").append(precision).append(" }}\n");
-            }
+            sb.append("                    <a-form-item \n");
+            sb.append("                      label=\"").append(column.getComment()).append("\" \n");
+            sb.append("                      name=\"").append(column.getHumpName()).append("\" \n");
+            sb.append("                      style=\"width: 250px;\" \n");
 
             // 闈炵┖
             if (column.isNotNull()) {
-                sb.append("                            rules={[{ required: true }]}\n");
+                sb.append("                            :rules=\"[{ required: true }]\"\n");
             }
+            sb.append("                            >\n");
 
             // 鏋氫妇
             if (!Cools.isEmpty(column.getEnums())) {
-                sb.append("                            options={[\n");
+                sb.append("                    <a-select \n");
+                sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n");
+                sb.append("                        :options=\"[\n");
                 for (Map<String, Object> map : column.getEnums()) {
                     for (Map.Entry<String, Object> entry : map.entrySet()){
                         sb.append("                                { label: '").append(entry.getValue()).append("', value: ").append(entry.getKey()).append(" },\n");
                     }
                 }
-                sb.append("                            ]}\n");
+                sb.append("                            ]\"\n");
+                sb.append("                        >\n");
+                sb.append("                    </a-select>\n");
             }
 
             // 鏃堕棿
             if ("Date".equals(column.getType())) {
-                sb.append("                            transform={(value) => moment(value).toISOString()}\n");
+                sb.append("                    <a-select \n");
+                sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n");
+                sb.append("                        show-time \n");
+                sb.append("                        format=\"YYYY-MM-DD HH:mm:ss\" \n");
+                sb.append("                        value-format=\"YYYY-MM-DD HH:mm:ss\" \n");
+                sb.append("                     /> \n");
             }
 
             // 鍏宠仈琛�
             if (!Cools.isEmpty(column.getForeignKey())) {
-                sb.append("                            showSearch\n")
-                        .append("                            debounceTime={300}\n")
-                        .append("                            request={async ({ keyWords }) => {\n")
-                        .append("                                const resp = await Http.doPostForm('api/").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("/query', { condition: keyWords });\n")
-                        .append("                                return resp.data;\n")
-                        .append("                            }}\n");
+//                sb.append("                            showSearch\n")
+//                        .append("                            debounceTime={300}\n")
+//                        .append("                            request={async ({ keyWords }) => {\n")
+//                        .append("                                const resp = await Http.doPostForm('api/").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("/query', { condition: keyWords });\n")
+//                        .append("                                return resp.data;\n")
+//                        .append("                            }}\n");
             }
 
-            sb.append("                        />\n");
+            sb.append("                        </a-form-item>\n");
 
-            if (times%2 != 0) {
-                sb.append("                    </ProForm.Group>\n");
-                has = false;
-            }
-            times++;
-        }
-        if (init && has) {
-            sb.append("                    </ProForm.Group>\n");
         }
         return sb.toString();
     }
diff --git a/zy-asrs-framework/src/main/resources/templates/vue/Edit.txt b/zy-asrs-framework/src/main/resources/templates/vue/Edit.txt
index cf8b9f5..0e82260 100644
--- a/zy-asrs-framework/src/main/resources/templates/vue/Edit.txt
+++ b/zy-asrs-framework/src/main/resources/templates/vue/Edit.txt
@@ -1,72 +1,71 @@
-import React, { useState, useRef, useEffect } from 'react';
-import {
-    ProForm,
-    ProFormDigit,
-    ProFormText,
-    ProFormSelect,
-    ProFormDateTimePicker
-} from '@ant-design/pro-components';
-import { Form, Modal } from 'antd';
-import { FormattedMessage, useIntl } from '@umijs/max';
-import moment from 'moment';
-import Http from '@/utils/http';
+<script setup>
+import { ref, nextTick } from 'vue';
+import { get, post } from '@/utils/request.js'
+import { formatMessage } from '@/utils/localeUtils.js';
 
-const Edit = (props) => {
-    const intl = useIntl();
-    const [form] = Form.useForm();
-    const { } = props;
-
-    useEffect(() => {
-        form.resetFields();
-        form.setFieldsValue({
-            ...props.values
-        })
-    }, [form, props])
-
-    const handleCancel = () => {
-        props.onCancel();
-    };
-
-    const handleOk = () => {
-        form.submit();
-    }
-
-    const handleFinish = async (values) => {
-        props.onSubmit({ ...values });
-    }
-
-    return (
-        <>
-            <Modal
-                title={
-                    Object.keys(props.values).length > 0
-                        ? intl.formatMessage({ id: 'page.edit', defaultMessage: '缂栬緫' })
-                        : intl.formatMessage({ id: 'page.add', defaultMessage: '娣诲姞' })
-                }
-                width={640}
-                forceRender
-                destroyOnClose
-                open={props.open}
-                onCancel={handleCancel}
-                onOk={handleOk}
-            >
-                <ProForm
-                    form={form}
-                    submitter={false}
-                    onFinish={handleFinish}
-                    layout="horizontal"
-                    grid={true}
-                >
-                    <ProFormDigit
-                        name="id"
-                        disabled
-                        hidden={true}
-                    />
-@{FORMEDITCOLUMNS}
-                </ProForm>
-            </Modal>
-        </>
-    )
+const submitButton = ref(null);
+const isSave = ref(true);
+const open = ref(false);
+const initFormData = {
+    name: null
 }
+let formData = ref(initFormData);
+const treeData = ref(null);
 
-export default Edit;
\ No newline at end of file
+const emit = defineEmits(['tableReload'])
+
+const handleOk = (e) => {
+    nextTick(() => {
+        setTimeout(() => {
+            submitButton.value.$el.click();
+        }, 100);
+    });
+};
+
+const onFinish = values => {
+    // console.log('Success:', values);
+    open.value = false;
+    post(isSave.value ? '/api/@{SIMPLEENTITYNAME}/save' : '/api/@{SIMPLEENTITYNAME}/update', formData.value).then((result) => {
+        console.log(result);
+        emit('tableReload', 'reload')
+    })
+};
+const onFinishFailed = errorInfo => {
+    console.log('Failed:', errorInfo);
+};
+
+defineExpose({
+    open,
+    formData,
+    initFormData,
+    treeData,
+    isSave,
+})
+
+</script>
+
+<script>
+export default {
+    name: '@{TABLEDESC}-edit'
+}
+</script>
+
+<template>
+    <div>
+        <a-modal v-model:open="open"
+            :title="isSave ? formatMessage('page.add', '娣诲姞') : formatMessage('page.edit', '缂栬緫')" @ok="handleOk"
+            style="width: 600px;">
+            <a-form :model="formData" name="formTable" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }"
+                style="display: flex;justify-content: space-between;flex-wrap: wrap;" autocomplete="off"
+                @finish="onFinish" @finishFailed="onFinishFailed">
+@{FORMEDITCOLUMNS}
+                <a-form-item>
+                    <a-button type="primary" html-type="submit" ref="submitButton"
+                        style="visibility: hidden;">Submit</a-button>
+                </a-form-item>
+            </a-form>
+        </a-modal>
+    </div>
+</template>
+
+<style></style>
\ No newline at end of file
diff --git a/zy-asrs-framework/src/main/resources/templates/vue/Index.txt b/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
index 093d3a0..2a376f4 100644
--- a/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
+++ b/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
@@ -118,37 +118,9 @@
 
 <script>
 export default {
-  name: '@{fullEntityName}'
+  name: '@{TABLEDESC}'
 }
 </script>
-
-<template>
-  <div>
-    <EditView ref="editChild" @tableReload="handleTableReload" />
-    <div class="table-header">
-      <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '璇疯緭鍏�')" style="width: 200px;" @search="onSearch" />
-      <div class="table-header-right">
-        <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '娣诲姞') }}</a-button>
-        <a-button @click="handleExport">{{ formatMessage('page.export', '瀵煎嚭') }}</a-button>
-      </div>
-    </div>
-    <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
-      :data-source="tableData.records" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
-      :pagination="{ total: tableData.total, onChange: onPageChange }"
-      :scroll="{ y: 768, scrollToFirstRowOnChange: true }">
-      @{TABLECOLUMNS}
-      <a-table-column title="绫诲瀷" key="type" data-index="type" />
-      <a-table-column title="鎿嶄綔" key="oper" data-index="oper">
-        <template #default="{ record }">
-          <div style="display: flex;justify-content: space-evenly;">
-            <a-button type="link" primary @click="handleEdit(record)">{{ formatMessage('page.edit', '缂栬緫') }}</a-button>
-            <a-button type="link" danger @click="handleDel([record])">{{ formatMessage('page.delete', '鍒犻櫎') }}</a-button>
-          </div>
-        </template>
-      </a-table-column>
-    </a-table>
-  </div>
-</template>
 
 <template>
   <div>

--
Gitblit v1.9.1