This commit is contained in:
zpc 2024-07-27 22:35:46 +08:00
parent 47d1547858
commit 9226a318fd
15 changed files with 1732 additions and 27 deletions

9
admin-client/auto-imports.d.ts vendored Normal file
View File

@ -0,0 +1,9 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
}

51
admin-client/components.d.ts vendored Normal file
View File

@ -0,0 +1,51 @@
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
ABackTop: typeof import('ant-design-vue/es')['BackTop']
ABadge: typeof import('ant-design-vue/es')['Badge']
ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem']
AButton: typeof import('ant-design-vue/es')['Button']
ACard: typeof import('ant-design-vue/es')['Card']
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
ACol: typeof import('ant-design-vue/es')['Col']
ADivider: typeof import('ant-design-vue/es')['Divider']
ADrawer: typeof import('ant-design-vue/es')['Drawer']
ADropdown: typeof import('ant-design-vue/es')['Dropdown']
AForm: typeof import('ant-design-vue/es')['Form']
AFormItem: typeof import('ant-design-vue/es')['FormItem']
AImage: typeof import('ant-design-vue/es')['Image']
AInput: typeof import('ant-design-vue/es')['Input']
ALayout: typeof import('ant-design-vue/es')['Layout']
ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader']
ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
AMenu: typeof import('ant-design-vue/es')['Menu']
AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
AModal: typeof import('ant-design-vue/es')['Modal']
APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
APopover: typeof import('ant-design-vue/es')['Popover']
ARadio: typeof import('ant-design-vue/es')['Radio']
ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
ARow: typeof import('ant-design-vue/es')['Row']
ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
ASpace: typeof import('ant-design-vue/es')['Space']
ASpin: typeof import('ant-design-vue/es')['Spin']
ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
ATable: typeof import('ant-design-vue/es')['Table']
ATableColumn: typeof import('ant-design-vue/es')['TableColumn']
ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
}

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,8 @@
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"typescript": "^5.2.2",
"unplugin-auto-import": "^0.18.2",
"unplugin-vue-components": "^0.27.3",
"unplugin-vue-macros": "^2.6.1",
"vite": "^5.3.5",
"vue": "^3.4.34",

71
admin-client/src/auto-imports.d.ts vendored Normal file
View File

@ -0,0 +1,71 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp']
const customRef: typeof import('vue')['customRef']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const effectScope: typeof import('vue')['effectScope']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const resolveComponent: typeof import('vue')['resolveComponent']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const toValue: typeof import('vue')['toValue']
const triggerRef: typeof import('vue')['triggerRef']
const unref: typeof import('vue')['unref']
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useLink: typeof import('vue-router')['useLink']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
const useSlots: typeof import('vue')['useSlots']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
}
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue')
}

95
admin-client/src/components.d.ts vendored Normal file
View File

@ -0,0 +1,95 @@
/* eslint-disable */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
404: typeof import('./core/components/404.vue')['default']
AAvatar: typeof import('ant-design-vue/es')['Avatar']
ABackTop: typeof import('ant-design-vue/es')['BackTop']
ABadge: typeof import('ant-design-vue/es')['Badge']
ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
ABreadcrumbItem: typeof import('ant-design-vue/es')['BreadcrumbItem']
AButton: typeof import('ant-design-vue/es')['Button']
ACard: typeof import('ant-design-vue/es')['Card']
ACardGrid: typeof import('ant-design-vue/es')['CardGrid']
ACardMeta: typeof import('ant-design-vue/es')['CardMeta']
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
ACol: typeof import('ant-design-vue/es')['Col']
ADivider: typeof import('ant-design-vue/es')['Divider']
ADrawer: typeof import('ant-design-vue/es')['Drawer']
ADropdown: typeof import('ant-design-vue/es')['Dropdown']
AForm: typeof import('ant-design-vue/es')['Form']
AFormItem: typeof import('ant-design-vue/es')['FormItem']
AImage: typeof import('ant-design-vue/es')['Image']
AInput: typeof import('ant-design-vue/es')['Input']
ALayout: typeof import('ant-design-vue/es')['Layout']
ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
ALayoutHeader: typeof import('ant-design-vue/es')['LayoutHeader']
ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
AMenu: typeof import('ant-design-vue/es')['Menu']
AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
AModal: typeof import('ant-design-vue/es')['Modal']
APopconfirm: typeof import('ant-design-vue/es')['Popconfirm']
APopover: typeof import('ant-design-vue/es')['Popover']
AppIcon: typeof import('./core/components/AppIcon.vue')['default']
AppIconList: typeof import('./core/components/AppIconList.vue')['default']
AProgress: typeof import('ant-design-vue/es')['Progress']
ARadio: typeof import('ant-design-vue/es')['Radio']
ARadioButton: typeof import('ant-design-vue/es')['RadioButton']
ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
AResult: typeof import('ant-design-vue/es')['Result']
ARow: typeof import('ant-design-vue/es')['Row']
ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
ASpace: typeof import('ant-design-vue/es')['Space']
ASpin: typeof import('ant-design-vue/es')['Spin']
AStatistic: typeof import('ant-design-vue/es')['Statistic']
AStatisticCountdown: typeof import('ant-design-vue/es')['StatisticCountdown']
ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
ATable: typeof import('ant-design-vue/es')['Table']
ATableColumn: typeof import('ant-design-vue/es')['TableColumn']
ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs']
ATag: typeof import('ant-design-vue/es')['Tag']
ATimeline: typeof import('ant-design-vue/es')['Timeline']
ATimelineItem: typeof import('ant-design-vue/es')['TimelineItem']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
BarChartTransverse: typeof import('./core/components/charts/BarChartTransverse.vue')['default']
ColumnSetting: typeof import('./core/components/curd/components/ColumnSetting.vue')['default']
ExternalJump: typeof import('./core/components/ExternalJump.vue')['default']
FindBack: typeof import('./core/components/FindBack.vue')['default']
GenerateCron: typeof import('./core/components/GenerateCron.vue')['default']
HmImageTypeSelect: typeof import('./core/components/curd/select-components/hm-image-type-select.vue')['default']
HmTenantSelect: typeof import('./core/components/curd/select-components/hm-tenant-select.vue')['default']
Index: typeof import('./core/components/vue3-cron-core/Index.vue')['default']
Layout: typeof import('./core/components/layouts/Layout.vue')['default']
LayoutHeader: typeof import('./core/components/layouts/LayoutHeader.vue')['default']
LayoutIframe: typeof import('./core/components/layouts/LayoutIframe.vue')['default']
LayoutLogo: typeof import('./core/components/layouts/LayoutLogo.vue')['default']
LayoutMenu: typeof import('./core/components/layouts/menus/LayoutMenu.vue')['default']
LayoutMenuMobile: typeof import('./core/components/layouts/LayoutMenuMobile.vue')['default']
LayoutMenuOneLevel: typeof import('./core/components/layouts/menus/LayoutMenuOneLevel.vue')['default']
LayoutMenuPc: typeof import('./core/components/layouts/LayoutMenuPc.vue')['default']
LayoutMenuSub: typeof import('./core/components/layouts/menus/LayoutMenuSub.vue')['default']
LayoutMode1: typeof import('./core/components/layouts/LayoutMode1.vue')['default']
LayoutSettings: typeof import('./core/components/layouts/LayoutSettings.vue')['default']
LayoutSider: typeof import('./core/components/layouts/LayoutSider.vue')['default']
LayoutTabs: typeof import('./core/components/layouts/LayoutTabs.vue')['default']
LineChartMultiple: typeof import('./core/components/charts/LineChartMultiple.vue')['default']
LineChartSingle: typeof import('./core/components/charts/LineChartSingle.vue')['default']
MdEditorShowCode: typeof import('./core/components/MdEditorShowCode.vue')['default']
PageContainer: typeof import('./core/components/PageContainer.vue')['default']
PieChart: typeof import('./core/components/charts/PieChart.vue')['default']
Redirect: typeof import('./core/components/Redirect.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
TableCurd: typeof import('./core/components/curd/TableCurd.vue')['default']
TenantSelect: typeof import('./core/components/curd/select-components/TenantSelect.vue')['default']
WangEditor: typeof import('./core/components/WangEditor.vue')['default']
}
}

View File

@ -5,7 +5,14 @@ import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
const options = ref<SelectProps['options']>([
// { value: 0, label: '' },
]);
const props = defineProps<{ onSuccess: () => void }>();
const props = defineProps<{
modelValue: any,
}>();
const emits = defineEmits(['update:modelValue']);
// function updateValue(event) {
// emits('update:modelValue', event.target.value);
// }
AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => {
console.log(data);
options.value?.push(...data);
@ -13,7 +20,7 @@ AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => {
</script>
<template>
<a-select :options="options">
<a-select :options="options" v-model:value="props.modelValue" >
</a-select>
</template>
<style lang="less"></style>

View File

@ -0,0 +1,42 @@
<template>
<a-select :options="options" :value="modelValue" @change="updateValue" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import type { SelectProps } from 'ant-design-vue';
import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
import type { SelectValue } from 'ant-design-vue/lib/select';
// options
const options = ref<SelectProps['options']>([]);
// 使 withDefaults
const props = withDefaults(defineProps<{
modelValue: SelectValue,
ShowAll: boolean
}>(), {
ShowAll: false // true
});
// emits
const emits = defineEmits(['update:modelValue']);
// options
AppDictionaryCache.appDictionaryImageCache.getDataListSelect().then(data => {
// console.log(data);
options.value?.push(...data);
if (props.ShowAll) {
options.value?.unshift({ value: '-1', label: '全部' });
}
});
// update:modelValue
function updateValue(value: SelectValue) {
emits('update:modelValue', value);
}
</script>
<style lang="less">
/* 你的样式代码 */
</style>

View File

@ -0,0 +1,42 @@
<template>
<a-select :options="options" :value="modelValue" @change="updateValue" />
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import type { SelectProps } from 'ant-design-vue';
import AppDictionaryCache from "@/core/utils/AppDictionaryCache";
import type { SelectValue } from 'ant-design-vue/lib/select';
// options
const options = ref<SelectProps['options']>([]);
// 使 withDefaults
const props = withDefaults(defineProps<{
modelValue: SelectValue,
ShowAll: boolean
}>(), {
ShowAll: false // true
});
// emits
const emits = defineEmits(['update:modelValue']);
// options
AppDictionaryCache.appDictionaryTenantCache.getDataListSelect().then(data => {
// console.log(data);
options.value?.push(...data);
if (props.ShowAll) {
options.value?.unshift({ value: '-1', label: '全部' });
}
});
// update:modelValue
function updateValue(value: SelectValue) {
emits('update:modelValue', value);
}
</script>
<style lang="less">
/* 你的样式代码 */
</style>

View File

@ -15,10 +15,7 @@ defineOptions({ name: "tImageConfigIndex" });
const options = ref<SelectProps['options']>([
{ value: -1, label: '全部' },
]);
AppDictionaryCache.appDictionaryImageCache.getDataListSelect().then(data => {
console.log(data);
options.value?.push(...data) ;
});
const state = reactive({
search: {
@ -216,12 +213,7 @@ async function imageUpdate(image: any) {
</a-col>
<a-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<a-form-item class="mb-0" name="name" label="文件类型">
<TenantSelect>
</TenantSelect>
<!-- <a-select v-model:value="state.search.vm.imageType" :options="options">
</a-select> -->
<hm-image-type-select v-model:value="state.search.vm.imageType" :ShowAll="true" />
</a-form-item>
</a-col>
<!--button-->

View File

@ -13,9 +13,9 @@ const options = ref<SelectProps['options']>([
]);
AppDictionaryCache.appDictionaryImageCache.getDataListSelect().then(data => {
console.log(data);
options.value?.push(...data) ;
options.value?.push(...data);
});
//
const props = defineProps<{ onSuccess: () => void }>();
@ -125,9 +125,7 @@ const beforeUpload: UploadProps['beforeUpload'] = async file => {
<a-row :gutter="[16, 0]">
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<a-form-item label="租户" name="tenantId">
<a-select v-model:value="state.vm.form.tenantId">
<a-select-option value="00000000-0000-0000-0000-000000000000">妙语</a-select-option>
</a-select>
<hm-tenant-select v-model:value="state.vm.form.tenantId" />
</a-form-item>
</a-col>
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">

View File

@ -2,7 +2,9 @@ import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";
import vueJsx from "@vitejs/plugin-vue-jsx";
import Components from 'unplugin-vue-components/vite';
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
import AutoImport from 'unplugin-auto-import/vite'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
@ -11,16 +13,34 @@ export default defineConfig({
// https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue-jsx
// options are passed on to @vue/babel-plugin-jsx
}),
AutoImport({
imports: [
'vue', // 自动导入 vue 中的 API
'vue-router', // 如果你使用 vue-router
],
dts: 'src/auto-imports.d.ts', // 可以生成 TypeScript 声明文件
}),
Components({
dirs: ['src/core/components'],
extensions: ['vue'],
deep: true,
dts: 'src/components.d.ts',
resolvers: [
AntDesignVueResolver({
importStyle: false, // css in js
}),
],
}),
],
/**
*
* client
* /
*/
base:process.env.VUE_APP_BASE, // process.env.NODE_ENV == "production" ? "/client/" : "/",
base: process.env.VUE_APP_BASE, // process.env.NODE_ENV == "production" ? "/client/" : "/",
server: {
port: 5501,
host: true,
host: true,
proxy: {
"/api/v1": {
target: "http://localhost:5500/",

View File

@ -31,9 +31,13 @@ public class TImageConfigService : ApplicationService<IRepository<T_Image_Config
/// <returns></returns>
public async Task<PagingView> FindListAsync(PagingSearchInput<T_Image_Config> pagingSearchInput)
{
if (pagingSearchInput == null)
{
pagingSearchInput = new PagingSearchInput<T_Image_Config>();
}
var query = this._defaultRepository.Select
.WhereIf(!string.IsNullOrWhiteSpace(pagingSearchInput.Search?.Name), w => w.Name.Contains(pagingSearchInput.Search.Name ?? ""))
.WhereIf(pagingSearchInput.Search?.ImageType > -1, w => w.ImageType == pagingSearchInput.Search.ImageType)
.WhereIf(pagingSearchInput != null && !string.IsNullOrWhiteSpace(pagingSearchInput.Search?.Name), w => w.Name.Contains(pagingSearchInput.Search.Name ?? ""))
.WhereIf(pagingSearchInput != null && pagingSearchInput.Search?.ImageType > -1, w => w.ImageType == pagingSearchInput.Search.ImageType)
.OrderByDescending(w => w.Id)
.Select(w => new
{

View File

@ -121,17 +121,17 @@ public class CodeGenerationService : ICodeGenerationService
rootPath = rootPath.Substring(0, rootPath.LastIndexOf("\\"));
if (string.IsNullOrWhiteSpace(lowCodeTable.ClientIndexPath))
{
lowCodeTable.ClientIndexPath = rootPath + "\\" + projectClientName + "\\src\\views\\Apps";
lowCodeTable.ClientIndexPath = rootPath + "\\" + projectClientName + "\\src\\views\\apps";
}
if (string.IsNullOrWhiteSpace(lowCodeTable.ClientInfoPath))
{
lowCodeTable.ClientInfoPath = rootPath + "\\" + projectClientName + "\\src\\views\\Apps";
lowCodeTable.ClientInfoPath = rootPath + "\\" + projectClientName + "\\src\\views\\apps";
}
if (string.IsNullOrWhiteSpace(lowCodeTable.ClientServicePath))
{
lowCodeTable.ClientServicePath = rootPath + "\\" + projectClientName + "\\src\\services\\Apps";
lowCodeTable.ClientServicePath = rootPath + "\\" + projectClientName + "\\src\\services\\apps";
}
return lowCodeTable;
@ -492,7 +492,7 @@ public class CodeGenerationService : ICodeGenerationService
{
path += $"/pages";
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
path += $"/{genFormDto.TableName.ToFirstCharConvertLower()}";
path += $"/{genFormDto.TableName.ToLower()}";
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
//Index
var codeString = await GenIndexAsync(genFormDto);

View File

@ -25,7 +25,7 @@
import { reactive, ref } from "vue";
import { FormInstance } from "ant-design-vue";
import Tools from "@@/core/utils/Tools";
import @(className)Service from "@@/services/apps/@(tableName)s/@(className)Service";
import @(className)Service from "@@/services/Apps/@(tableName)s/@(className)Service";
//定义组件事件
const props = defineProps<{ onSuccess: () => void }>();