diff --git a/.env b/.env index 114cd2d..c4c1b8c 100644 --- a/.env +++ b/.env @@ -1,8 +1,22 @@ # port VITE_PORT = 3100 -# spa-title -VITE_GLOB_APP_TITLE = Jeecg Boot +# 网站标题 +VITE_GLOB_APP_TITLE = JeecgBoot 企业级低代码平台 + +# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符 +VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin + +# 单点登录服务端地址 +VITE_GLOBE_APP_CAS_BASE_URL=http://cas.test.com:8443/cas + +# 是否开启单点登录 +VITE_GLOB_APP_OPEN_SSO = false + +# 开启微前端模式 +VITE_GLOB_APP_OPEN_QIANKUN=true + +# 文件预览地址 +VITE_GLOB_ONLINE_VIEW_URL=http://fileview.jeecg.com/onlinePreview + -# spa shortname -VITE_GLOB_APP_SHORT_NAME = Jeecg-Boot-Admin diff --git a/.env.development b/.env.development index e2fc669..d7894be 100644 --- a/.env.development +++ b/.env.development @@ -1,21 +1,23 @@ # 是否打开mock -VITE_USE_MOCK = false +VITE_USE_MOCK = true -# 公共路径 +# 发布路径 VITE_PUBLIC_PATH = / # 跨域代理,您可以配置多个 ,请注意,没有换行符 - VITE_PROXY = [["/jeecg-boot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]] -# VITE_PROXY=[["/api","https://vvbin.cn/test"]] +VITE_PROXY = [["/jeecgboot","http://localhost:8080/jeecg-boot"],["/upload","http://localhost:3300/upload"]] # 控制台不输出 VITE_DROP_CONSOLE = false -# 接口父路径 -VITE_GLOB_API_URL= /jeecg-boot +#后台接口父地址(必填) +VITE_GLOB_API_URL=/jeecgboot -# 文件上次地址(可选) -VITE_GLOB_UPLOAD_URL=/upload +#后台接口全路径地址(必填) +VITE_GLOB_DOMAIN_URL=http://localhost:8080/jeecg-boot # 接口前缀 VITE_GLOB_API_URL_PREFIX= + +#微前端qiankun应用,命名必须以VITE_APP_SUB_开头,jeecg-app-1为子应用的项目名称,也是子应用的路由父路径 +VITE_APP_SUB_jeecg-app-1 = '//localhost:8092' diff --git a/.env.production b/.env.production index 35a4f01..00d5ceb 100644 --- a/.env.production +++ b/.env.production @@ -1,7 +1,7 @@ # 是否启用mock VITE_USE_MOCK = true -# 公共路径 +# 发布路径 VITE_PUBLIC_PATH = / # 控制台不输出 @@ -10,19 +10,18 @@ VITE_DROP_CONSOLE = true # 是否启用gzip或brotli压缩 # 选项值: gzip | brotli | none # 如果需要多个可以使用“,”分隔 -VITE_BUILD_COMPRESS = 'none' +VITE_BUILD_COMPRESS = 'gzip' # 使用压缩时是否删除原始文件,默认为false VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false -# 接口父路径 -VITE_GLOB_API_URL=/basic-api +#后台接口父地址(必填) +VITE_GLOB_API_URL=/jeecgboot -# 文件上次地址(可选) -# 它可以由nginx转发,也可以直接写入实际地址 -VITE_GLOB_UPLOAD_URL=/upload +#后台接口全路径地址(必填) +VITE_GLOB_DOMAIN_URL=http://api3.boot.jeecg.com -# 接口父路径 +# 接口父路径前缀 VITE_GLOB_API_URL_PREFIX= # 是否启用图像压缩 diff --git a/.env.test b/.env.test index 469b307..92932c6 100644 --- a/.env.test +++ b/.env.test @@ -1,36 +1,31 @@ -NODE_ENV=production -# Whether to open mock +# 是否启用mock VITE_USE_MOCK = true -# public path +# 发布路径 VITE_PUBLIC_PATH = / -# Delete console +# 控制台不输出 VITE_DROP_CONSOLE = true -# Whether to enable gzip or brotli compression -# Optional: gzip | brotli | none -# If you need multiple forms, you can use `,` to separate -VITE_BUILD_COMPRESS = 'none' +# 是否启用gzip或brotli压缩 +# 选项值: gzip | brotli | none +# 如果需要多个可以使用“,”分隔 +VITE_BUILD_COMPRESS = 'gzip' -# Whether to delete origin files when using compress, default false +# 使用压缩时是否删除原始文件,默认为false VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false -# Basic interface address SPA -VITE_GLOB_API_URL=/basic-api +#后台接口地址(必填) +VITE_GLOB_DOMAIN_URL=http://localhost:8080/jeecg-boot -# File upload address, optional -# It can be forwarded by nginx or write the actual address directly -VITE_GLOB_UPLOAD_URL=/upload - -# Interface prefix +# 接口父路径前缀 VITE_GLOB_API_URL_PREFIX= -# Whether to enable image compression +# 是否启用图像压缩 VITE_USE_IMAGEMIN= true -# use pwa +# 使用pwa VITE_USE_PWA = false -# Is it compatible with older browsers +# 是否兼容旧浏览器 VITE_LEGACY = false diff --git a/README.md b/README.md index a52917f..68d015c 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ JEECG BOOT 低代码平台(Vue3前端版本) =============== -当前最新版本: 1.0.0-beta(发布日期:未正式发布) +当前最新版本: 1.0.0-beta(预计发布日期 20220321) ## 简介 diff --git a/build/config/themeConfig.ts b/build/config/themeConfig.ts index c816b6d..8dbe118 100644 --- a/build/config/themeConfig.ts +++ b/build/config/themeConfig.ts @@ -1,6 +1,6 @@ import { generate } from '@ant-design/colors'; -export const primaryColor = '#0960bd'; +export const primaryColor = '#1890FF'; export const darkMode = 'light'; diff --git a/build/script/buildConf.ts b/build/script/buildConf.ts index a44a1d8..342c154 100644 --- a/build/script/buildConf.ts +++ b/build/script/buildConf.ts @@ -5,18 +5,19 @@ import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from '../constant'; import fs, { writeFileSync } from 'fs-extra'; import chalk from 'chalk'; -import { getRootPath, getEnvConfig } from '../utils'; +import { getEnvConfig, getRootPath } from '../utils'; import { getConfigFileName } from '../getConfigFileName'; import pkg from '../../package.json'; -function createConfig( - { - configName, - config, - configFileName = GLOB_CONFIG_FILE_NAME, - }: { configName: string; config: any; configFileName?: string } = { configName: '', config: {} } -) { +interface CreateConfigParams { + configName: string; + config: any; + configFileName?: string; +} + +function createConfig(params: CreateConfigParams) { + const { configName, config, configFileName } = params; try { const windowConf = `window.${configName}`; // Ensure that the variable will not be modified @@ -40,5 +41,5 @@ function createConfig( export function runBuildConfig() { const config = getEnvConfig(); const configFileName = getConfigFileName(config); - createConfig({ config, configName: configFileName }); + createConfig({ config, configName: configFileName, configFileName: GLOB_CONFIG_FILE_NAME }); } diff --git a/build/utils.ts b/build/utils.ts index 3a5aa37..989d1b4 100644 --- a/build/utils.ts +++ b/build/utils.ts @@ -28,12 +28,12 @@ export function wrapperEnv(envConf: Recordable): ViteEnv { if (envName === 'VITE_PORT') { realName = Number(realName); } - if (envName === 'VITE_PROXY') { - try { - realName = JSON.parse(realName); - } catch (error) { - realName = ''; - } + if (envName === 'VITE_PROXY' && realName) { + try { + realName = JSON.parse(realName.replace(/'/g, '"')); + } catch (error) { + realName = ''; + } } ret[envName] = realName; if (typeof realName === 'string') { @@ -50,7 +50,7 @@ export function wrapperEnv(envConf: Recordable): ViteEnv { */ function getConfFiles() { const script = process.env.npm_lifecycle_script; - const reg = new RegExp('--mode ([a-z]+)'); + const reg = new RegExp('--mode ([a-z_\\d]+)'); const result = reg.exec(script as string) as any; if (result) { const mode = result[1] as string; diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index 65a31b9..7bd23f6 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -4,6 +4,7 @@ import vueJsx from '@vitejs/plugin-vue-jsx'; import legacy from '@vitejs/plugin-legacy'; import purgeIcons from 'vite-plugin-purge-icons'; import windiCSS from 'vite-plugin-windicss'; +import vueSetupExtend from 'vite-plugin-vue-setup-extend'; import { configHtmlPlugin } from './html'; import { configPwaConfig } from './pwa'; import { configMockPlugin } from './mock'; @@ -29,7 +30,10 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { vue(), // have to vueJsx(), + // support name + vueSetupExtend(), ]; + // vite-plugin-windicss vitePlugins.push(windiCSS()); @@ -67,7 +71,7 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { // rollup-plugin-gzip vitePlugins.push( - configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE) + configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE), ); // vite-plugin-pwa diff --git a/build/vite/plugin/styleImport.ts b/build/vite/plugin/styleImport.ts index 786580f..982f2d7 100644 --- a/build/vite/plugin/styleImport.ts +++ b/build/vite/plugin/styleImport.ts @@ -14,7 +14,52 @@ export function configStyleImportPlugin(isBuild: boolean) { libraryName: 'ant-design-vue', esModule: true, resolveStyle: (name) => { - return `ant-design-vue/es/${name}/style/index`; + // 这里是“子组件”列表,无需额外引入样式文件 + const ignoreList = [ + 'typography-text', + 'typography-title', + 'typography-paragraph', + 'typography-link', + 'anchor-link', + 'sub-menu', + 'menu-item', + 'menu-item-group', + 'dropdown-button', + 'breadcrumb-item', + 'breadcrumb-separator', + 'input-password', + 'input-search', + 'input-group', + 'form-item', + 'radio-group', + 'checkbox-group', + 'layout-sider', + 'layout-content', + 'layout-footer', + 'layout-header', + 'step', + 'select-option', + 'select-opt-group', + 'card-grid', + 'card-meta', + 'collapse-panel', + 'descriptions-item', + 'list-item', + 'list-item-meta', + 'table-column', + 'table-column-group', + 'tab-pane', + 'tab-content', + 'timeline-item', + 'tree-node', + 'skeleton-input', + 'skeleton-avatar', + 'skeleton-title', + 'skeleton-paragraph', + 'skeleton-image', + 'skeleton-button', + ]; + return ignoreList.includes(name) ? '' : `ant-design-vue/es/${name}/style/index`; }, }, ], diff --git a/build/vite/plugin/theme.ts b/build/vite/plugin/theme.ts index d5aa9c5..d198d77 100644 --- a/build/vite/plugin/theme.ts +++ b/build/vite/plugin/theme.ts @@ -66,7 +66,7 @@ export function configThemePlugin(isBuild: boolean): Plugin[] { 'border-color-base': '#303030', // 'border-color-split': '#30363d', 'item-active-bg': '#111b26', - 'app-content-background': 'rgb(255 255 255 / 4%)', + 'app-content-background': '#1e1e1e', 'tree-node-selected-bg': '#11263c', 'alert-success-border-color': '#274916', diff --git a/build/vite/proxy.ts b/build/vite/proxy.ts index dc23646..8525397 100644 --- a/build/vite/proxy.ts +++ b/build/vite/proxy.ts @@ -7,7 +7,7 @@ type ProxyItem = [string, string]; type ProxyList = ProxyItem[]; -type ProxyTargetList = Record string }>; +type ProxyTargetList = Record; const httpsRE = /^https:\/\//; diff --git a/doc/修改日志.md b/doc/修改日志.md deleted file mode 100644 index f231220..0000000 --- a/doc/修改日志.md +++ /dev/null @@ -1,137 +0,0 @@ -## ✨ 功能优化---zhangyafei---2021-07-19 -- **添加增删改查demo** - - src/views/demo/system/test/TestDrawer.vue - - src/views/demo/system/test/test.data.ts - - src/api/demo/model/systemModel.ts - - src/api/demo/system.ts - - mock/demo/system.ts - - src/views/demo/system/test/index.vue -- **添加代码高亮编辑器** - - src/views/demo/codemirror/index.vue -- **添加日历组件** - - src/views/demo/fullcalendar/event-utils.ts - - src/views/demo/fullcalendar/index.vue -- **添加vexTable示例** - - src/views/demo/vextable/index.vue -- **添加JAreaLinkage示例** - - src/components/Form/src/componentMap.ts - - src/components/Form/src/types/index.ts - - src/components/Form/index.ts - - src/views/demo/form/index.vue - - src/assets/less/JAreaLinkage.less - - src/components/Form/src/components/JAreaLinkage.vue -- **修改示例路由配置** - - src/router/routes/modules/demo/feat.ts - - src/router/routes/modules/demo/comp.ts -- **修改路由国际化** - - src/locales/lang/zh_CN/routes/demo.ts -- **全局组件注册** - - src/main.ts -- **package添加组件依赖** - - package.json -- **路由跳转暂时屏蔽动画效果有bug冲突** - - src/layouts/page/index.vue - -## ✨ 功能优化---zhangyafei---2021-07-29 -- **添加一对多,一对一示例** - - src/views/demo/vextable/VexTableModal.vue - - src/views/demo/vextable/OneToOneModal.vue - - src/views/demo/vextable/modal.vue - - src/views/demo/vextable/index2.vue - - src/views/demo/vextable/index.vue - - src/views/demo/vextable/drawer.vue -- **添加嵌套子表格示例** - - src/views/demo/table/NestedTable.vue -- **常用antd 组件全局注入** - - src/components/registerGlobComp.ts -- **添加权限,指令用法示例代码** - - src/views/demo/permission/front/Btn.vue -- **添加三方组件注册文件** - - src/settings/registerThirdComp.ts -- **main.ts注释汉化** - - src/main.ts -## ✨ 功能优化---liusq---2021-08-19 -- **增加接口token** - - src/enums/httpEnum.ts - - src/utils/http/axios/index.ts -- **新增用户管理、角色管理** - - src/views/demo/system/roles/* - - src/views/demo/system/user/* -- **登录验证码功能** - - src/api/demo/model/systemModel.ts - - src/api/demo/system.ts - - src/api/model/baseModel.ts - - src/api/sys/model/userModel.ts - - src/api/sys/user.ts - - src/locales/lang/zh_CN/routes/demo.ts - - src/locales/lang/zh_CN/sys.ts - - src/router/routes/modules/demo/system.ts - - src/store/modules/user.ts -- **接口和moke路径修改** - - src/mock/demo/account.ts - - src/mock/demo/select-demo.ts - - src/mock/demo/system.ts - - src/mock/demo/table-demo.ts - - src/mock/demo/tree-demo.ts - - src/mock/sys/menu.ts - - src/mock/sys/user.ts - - src/mock/_util.ts - - src/api/sys/menu.ts - - src/api/sys/user.ts -- **table配置项修改** - - src/settings/componentSetting.ts -- **上传返回值修改** - - src/components/Upload/src/UploadModal.vue -## ✨ 功能完善---zhangyafei---2021-08-27 -- **添加租户功能** - -src/views/system/tenant/** -- **修改antd注册方式,改为全局注册** - -src/main.ts - -src/settings/registerThirdComp.ts -- **网络请求类翻译,添加全局操作成功顶部消息提示** - -src/utils/http/axios/Axios.ts - -src/utils/http/axios/index.ts - -src/-types/axios.d.ts -- **表格选择工具类样式修改** - -src/components/Table/src/BasicTable.vue -- **底层代码优化** - - src/api/demo/system.ts - - src/api/sys/user.ts - - src/router/guard/permissionGuard.ts - - src/store/modules/user.ts - - src/settings/projectSetting.ts - - src/main.ts - - mock/sys/user.ts - - package.json -## ✨ 功能完善---liusq---2021-08-27 -- **完善用户管理、角色管理功能** - - system/user/UserRecycleBinModal.vue - - system/user/UserDrawer.vue - - system/user/user.data.ts - - system/user/user.api.ts - - system/user/index.vue - - system/role/UserRoleDrawer.vue - - system/role/RoleDrawer.vue - - system/role/role.data.ts - - system/role/role.api.ts - - system/role/index.vue - - /locales/lang/zh-CN/routes/demo.ts - - /locales/lang/zh-CN/sys.ts - - /api/demo/system.ts -- **完善登录注册功能** - - src/api/sys/user.ts - - src/store/modules/user.ts - - src/views/sys/forget-password/step1.vue - - src/views/sys/forget-password/step2.vue - - src/views/sys/forget-password/step3.vue - - src/views/sys/login/ForgetPasswordForm.vue - - src/views/sys/login/MobileForm.vue - - src/views/sys/login/RegisterForm.vue - - src/views/sys/login/useLogin.ts - - src/assets/images/checkcode.png - -## ✨ 还原路由走本地---scott---2021-08-31 -- src\settings\projectSetting.ts - -## ✨ 功能完善---zyf---2021-08-31 -测试 diff --git a/doc/升级sql b/doc/升级sql deleted file mode 100644 index f5e1e9f..0000000 --- a/doc/升级sql +++ /dev/null @@ -1,5 +0,0 @@ -###---zhangyafei---2021-08-31 租户、用户、角色 -update sys_permission set url='/system/tenant' ,component='/system/tenant/index' where id='1280350452934307841'; -update sys_permission set url='/system/user' ,component='/system/user/index' where id='3f915b2769fc80648e92d04e84ca059d'; -update sys_permission set url='/system/role' ,component='/system/role/index' where id='190c2b43bec6a5f7a4194a85db67d96a'; -###---zhangyafei---2021-08-31 diff --git a/index.html b/index.html index 5b99faf..c80afd8 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - + @@ -10,7 +10,11 @@ /> <%= title %> - + + + + diff --git a/src/components/Button/src/props.ts b/src/components/Button/src/props.ts index d79d378..ef68cbb 100644 --- a/src/components/Button/src/props.ts +++ b/src/components/Button/src/props.ts @@ -10,10 +10,12 @@ export const buttonProps = { * Text after icon. */ postIcon: { type: String }, + type: { type: String }, /** * preIcon and postIcon icon size. * @default: 14 */ iconSize: { type: Number, default: 14 }, + isUpload:{type:Boolean,default:false}, onClick: { type: Function as PropType<(...args) => any>, default: null }, }; diff --git a/src/components/CardList/index.ts b/src/components/CardList/index.ts new file mode 100644 index 0000000..b977c1b --- /dev/null +++ b/src/components/CardList/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils'; +import cardList from './src/CardList.vue'; + +export const CardList = withInstall(cardList); diff --git a/src/components/CardList/src/CardList.vue b/src/components/CardList/src/CardList.vue new file mode 100644 index 0000000..5ca2e01 --- /dev/null +++ b/src/components/CardList/src/CardList.vue @@ -0,0 +1,178 @@ + + diff --git a/src/components/CardList/src/data.ts b/src/components/CardList/src/data.ts new file mode 100644 index 0000000..ac56cad --- /dev/null +++ b/src/components/CardList/src/data.ts @@ -0,0 +1,25 @@ +import { ref } from 'vue'; +//每行个数 +export const grid = ref(12); +// slider属性 +export const useSlider = (min = 6, max = 12) => { + // 每行显示个数滑动条 + const getMarks = () => { + const l = {}; + for (let i = min; i < max + 1; i++) { + l[i] = { + style: { + color: '#fff', + }, + label: i, + }; + } + return l; + }; + return { + min, + max, + marks: getMarks(), + step: 1, + }; +}; diff --git a/src/components/CodeEditor/src/typing.ts b/src/components/CodeEditor/src/typing.ts new file mode 100644 index 0000000..34b5ed1 --- /dev/null +++ b/src/components/CodeEditor/src/typing.ts @@ -0,0 +1,5 @@ +export enum MODE { + JSON = 'application/json', + HTML = 'htmlmixed', + JS = 'javascript', +} diff --git a/src/components/Cropper/src/CopperModal.vue b/src/components/Cropper/src/CopperModal.vue index 581c2fb..e73569e 100644 --- a/src/components/Cropper/src/CopperModal.vue +++ b/src/components/Cropper/src/CopperModal.vue @@ -186,7 +186,7 @@ try { setModalProps({ confirmLoading: true }); const result = await uploadApi({ name: 'file', file: blob, filename }); - emit('uploadSuccess', { source: previewSource.value, data: result.data }); + emit('uploadSuccess', { source: previewSource.value, data: result.data || result.message }); closeModal(); } finally { setModalProps({ confirmLoading: false }); diff --git a/src/components/Cropper/src/CropperAvatar.vue b/src/components/Cropper/src/CropperAvatar.vue index 52bf712..047fc9b 100644 --- a/src/components/Cropper/src/CropperAvatar.vue +++ b/src/components/Cropper/src/CropperAvatar.vue @@ -91,9 +91,9 @@ } ); - function handleUploadSuccess({ source }) { + function handleUploadSuccess({ source,data }) { sourceValue.value = source; - emit('change', source); + emit('change', source, data); createMessage.success(t('component.cropper.uploadSuccess')); } diff --git a/src/components/Dropdown/src/Dropdown.vue b/src/components/Dropdown/src/Dropdown.vue index e55a8a5..4c5fffe 100644 --- a/src/components/Dropdown/src/Dropdown.vue +++ b/src/components/Dropdown/src/Dropdown.vue @@ -1,19 +1,19 @@ diff --git a/src/views/demo/comp/flow-chart/dataTurbo.json b/src/views/demo/comp/flow-chart/dataTurbo.json deleted file mode 100644 index f6432c4..0000000 --- a/src/views/demo/comp/flow-chart/dataTurbo.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "flowElementList": [ - { - "incoming": [], - "outgoing": ["Flow_33inf2k"], - "dockers": [], - "type": 2, - "properties": { - "a": "efrwe", - "b": "wewe", - "name": "开始", - "x": 280, - "y": 200, - "text": { - "x": 280, - "y": 200, - "value": "开始" - }, - "logicFlowType": "bpmn:startEvent" - }, - "key": "Event_1d42u4p" - }, - { - "incoming": ["Flow_379e0o9"], - "outgoing": [], - "dockers": [], - "type": 3, - "properties": { - "a": "efrwe", - "b": "wewe", - "name": "结束", - "x": 920, - "y": 200, - "text": { - "x": 920, - "y": 200, - "value": "结束" - }, - "logicFlowType": "bpmn:endEvent" - }, - "key": "Event_08p8i6q" - }, - { - "incoming": ["Flow_0pfouf0"], - "outgoing": ["Flow_3918lhh"], - "dockers": [], - "type": 6, - "properties": { - "a": "efrwe", - "b": "wewe", - "name": "网关", - "x": 580, - "y": 200, - "text": { - "x": 580, - "y": 200, - "value": "网关" - }, - "logicFlowType": "bpmn:exclusiveGateway" - }, - "key": "Gateway_1fngqgj" - }, - { - "incoming": ["Flow_33inf2k"], - "outgoing": ["Flow_0pfouf0"], - "dockers": [], - "type": 4, - "properties": { - "a": "efrwe", - "b": "wewe", - "name": "用户", - "x": 420, - "y": 200, - "text": { - "x": 420, - "y": 200, - "value": "用户" - }, - "logicFlowType": "bpmn:userTask" - }, - "key": "Activity_2mgtaia" - }, - { - "incoming": ["Flow_3918lhh"], - "outgoing": ["Flow_379e0o9"], - "dockers": [], - "type": 5, - "properties": { - "a": "efrwe", - "b": "wewe", - "name": "服务", - "x": 760, - "y": 200, - "text": { - "x": 760, - "y": 200, - "value": "服务" - }, - "logicFlowType": "bpmn:serviceTask" - }, - "key": "Activity_1sp8qc8" - }, - { - "incoming": ["Event_1d42u4p"], - "outgoing": ["Activity_2mgtaia"], - "type": 1, - "dockers": [], - "properties": { - "name": "边", - "text": { - "x": 331, - "y": 200, - "value": "边" - }, - "startPoint": { - "x": 298, - "y": 200 - }, - "endPoint": { - "x": 370, - "y": 200 - }, - "pointsList": [ - { - "x": 298, - "y": 200 - }, - { - "x": 370, - "y": 200 - } - ], - "logicFlowType": "bpmn:sequenceFlow" - }, - "key": "Flow_33inf2k" - }, - { - "incoming": ["Activity_2mgtaia"], - "outgoing": ["Gateway_1fngqgj"], - "type": 1, - "dockers": [], - "properties": { - "name": "边2", - "text": { - "x": 507, - "y": 200, - "value": "边2" - }, - "startPoint": { - "x": 470, - "y": 200 - }, - "endPoint": { - "x": 555, - "y": 200 - }, - "pointsList": [ - { - "x": 470, - "y": 200 - }, - { - "x": 555, - "y": 200 - } - ], - "logicFlowType": "bpmn:sequenceFlow" - }, - "key": "Flow_0pfouf0" - }, - { - "incoming": ["Gateway_1fngqgj"], - "outgoing": ["Activity_1sp8qc8"], - "type": 1, - "dockers": [], - "properties": { - "name": "边3", - "text": { - "x": 664, - "y": 200, - "value": "边3" - }, - "startPoint": { - "x": 605, - "y": 200 - }, - "endPoint": { - "x": 710, - "y": 200 - }, - "pointsList": [ - { - "x": 605, - "y": 200 - }, - { - "x": 710, - "y": 200 - } - ], - "logicFlowType": "bpmn:sequenceFlow" - }, - "key": "Flow_3918lhh" - }, - { - "incoming": ["Activity_1sp8qc8"], - "outgoing": ["Event_08p8i6q"], - "type": 1, - "dockers": [], - "properties": { - "name": "边4", - "text": { - "x": 871, - "y": 200, - "value": "边4" - }, - "startPoint": { - "x": 810, - "y": 200 - }, - "endPoint": { - "x": 902, - "y": 200 - }, - "pointsList": [ - { - "x": 810, - "y": 200 - }, - { - "x": 902, - "y": 200 - } - ], - "logicFlowType": "bpmn:sequenceFlow" - }, - "key": "Flow_379e0o9" - } - ] -} diff --git a/src/views/demo/comp/flow-chart/index.vue b/src/views/demo/comp/flow-chart/index.vue deleted file mode 100644 index 4d28c4f..0000000 --- a/src/views/demo/comp/flow-chart/index.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/src/views/demo/comp/loading/index.vue b/src/views/demo/comp/loading/index.vue index 318d713..8988561 100644 --- a/src/views/demo/comp/loading/index.vue +++ b/src/views/demo/comp/loading/index.vue @@ -6,7 +6,7 @@ 全屏 Loading 容器内 Loading - + @@ -37,6 +37,8 @@ const compState = reactive({ absolute: false, loading: false, + theme: 'dark', + background: 'rgba(111,111,111,.7)', tip: '加载中...', }); const [openFullLoading, closeFullLoading] = useLoading({ diff --git a/src/views/demo/comp/qrcode/index.vue b/src/views/demo/comp/qrcode/index.vue index 65c9104..8112b20 100644 --- a/src/views/demo/comp/qrcode/index.vue +++ b/src/views/demo/comp/qrcode/index.vue @@ -29,7 +29,7 @@ diff --git a/src/views/demo/editor/markdown/index.vue b/src/views/demo/editor/markdown/index.vue index 56a5f5f..f2995a7 100644 --- a/src/views/demo/editor/markdown/index.vue +++ b/src/views/demo/editor/markdown/index.vue @@ -1,22 +1,30 @@ diff --git a/src/views/demo/feat/tabs/TabDetail.vue b/src/views/demo/feat/tabs/TabDetail.vue new file mode 100644 index 0000000..d768cca --- /dev/null +++ b/src/views/demo/feat/tabs/TabDetail.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/views/demo/feat/tabs/index.vue b/src/views/demo/feat/tabs/index.vue index eccdc63..dcaf5d0 100644 --- a/src/views/demo/feat/tabs/index.vue +++ b/src/views/demo/feat/tabs/index.vue @@ -16,20 +16,28 @@ 关闭当前 刷新当前 + + + + 打开{{ index }}详情页 + + diff --git a/src/views/demo/jeecg/AsyncTreeTable.vue b/src/views/demo/jeecg/AsyncTreeTable.vue new file mode 100644 index 0000000..b150dcb --- /dev/null +++ b/src/views/demo/jeecg/AsyncTreeTable.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/ImgDragSort.vue b/src/views/demo/jeecg/ImgDragSort.vue new file mode 100644 index 0000000..9709b1f --- /dev/null +++ b/src/views/demo/jeecg/ImgDragSort.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/demo/jeecg/ImgTurnPage.vue b/src/views/demo/jeecg/ImgTurnPage.vue new file mode 100644 index 0000000..dd5bfa2 --- /dev/null +++ b/src/views/demo/jeecg/ImgTurnPage.vue @@ -0,0 +1,158 @@ + + + diff --git a/src/views/demo/jeecg/InnerExpandTable.vue b/src/views/demo/jeecg/InnerExpandTable.vue new file mode 100644 index 0000000..af47dc5 --- /dev/null +++ b/src/views/demo/jeecg/InnerExpandTable.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/demo/jeecg/JCodeEditDemo.vue b/src/views/demo/jeecg/JCodeEditDemo.vue new file mode 100644 index 0000000..92243b5 --- /dev/null +++ b/src/views/demo/jeecg/JCodeEditDemo.vue @@ -0,0 +1,58 @@ + + diff --git a/src/views/demo/jeecg/JEditorDemo.vue b/src/views/demo/jeecg/JEditorDemo.vue new file mode 100644 index 0000000..af47222 --- /dev/null +++ b/src/views/demo/jeecg/JEditorDemo.vue @@ -0,0 +1,102 @@ + + + + + + + diff --git a/src/views/demo/jeecg/JUploadDemo.vue b/src/views/demo/jeecg/JUploadDemo.vue new file mode 100644 index 0000000..e1e7863 --- /dev/null +++ b/src/views/demo/jeecg/JUploadDemo.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo1.vue b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo1.vue new file mode 100644 index 0000000..3f22d48 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo1.vue @@ -0,0 +1,388 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo2.vue b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo2.vue new file mode 100644 index 0000000..c37223c --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo2.vue @@ -0,0 +1,181 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo3.vue b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo3.vue new file mode 100644 index 0000000..ad3bd45 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo3.vue @@ -0,0 +1,139 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo4.vue b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo4.vue new file mode 100644 index 0000000..116ee3d --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/JVxeDemo4.vue @@ -0,0 +1,154 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/func-demo/JSBCDemo.vue b/src/views/demo/jeecg/JVxeTableDemo/func-demo/JSBCDemo.vue new file mode 100644 index 0000000..c52c055 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/func-demo/JSBCDemo.vue @@ -0,0 +1,221 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/func-demo/PopupSubTable.vue b/src/views/demo/jeecg/JVxeTableDemo/func-demo/PopupSubTable.vue new file mode 100644 index 0000000..a869068 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/func-demo/PopupSubTable.vue @@ -0,0 +1,253 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/func-demo/SocketReload.vue b/src/views/demo/jeecg/JVxeTableDemo/func-demo/SocketReload.vue new file mode 100644 index 0000000..610b4a1 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/func-demo/SocketReload.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/index.vue b/src/views/demo/jeecg/JVxeTableDemo/index.vue new file mode 100644 index 0000000..623b18e --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/index.vue @@ -0,0 +1,29 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/ErpTemplate.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/ErpTemplate.vue new file mode 100644 index 0000000..38194c7 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/ErpTemplate.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template1.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template1.vue new file mode 100644 index 0000000..0b48629 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template1.vue @@ -0,0 +1,327 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template2.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template2.vue new file mode 100644 index 0000000..8bea95c --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template2.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template3.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template3.vue new file mode 100644 index 0000000..c889e4f --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template3.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template4.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template4.vue new file mode 100644 index 0000000..2b01b95 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template4.vue @@ -0,0 +1,346 @@ + + + + + diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template5.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template5.vue new file mode 100644 index 0000000..5cc48c2 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/Template5.vue @@ -0,0 +1,224 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JVxeTableDemo/layout-demo/index.vue b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/index.vue new file mode 100644 index 0000000..cf38f32 --- /dev/null +++ b/src/views/demo/jeecg/JVxeTableDemo/layout-demo/index.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/JeecgComponents.vue b/src/views/demo/jeecg/JeecgComponents.vue new file mode 100644 index 0000000..ea8bfb0 --- /dev/null +++ b/src/views/demo/jeecg/JeecgComponents.vue @@ -0,0 +1,85 @@ + + diff --git a/src/views/demo/jeecg/JeecgPdfView.vue b/src/views/demo/jeecg/JeecgPdfView.vue new file mode 100644 index 0000000..d0494db --- /dev/null +++ b/src/views/demo/jeecg/JeecgPdfView.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/views/demo/jeecg/PrintDemo.vue b/src/views/demo/jeecg/PrintDemo.vue new file mode 100644 index 0000000..f6f3b0e --- /dev/null +++ b/src/views/demo/jeecg/PrintDemo.vue @@ -0,0 +1,151 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/TableTotal.vue b/src/views/demo/jeecg/TableTotal.vue new file mode 100644 index 0000000..389df2f --- /dev/null +++ b/src/views/demo/jeecg/TableTotal.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/views/demo/jeecg/erplist/JeecgOrderCustomerList.vue b/src/views/demo/jeecg/erplist/JeecgOrderCustomerList.vue new file mode 100644 index 0000000..544168a --- /dev/null +++ b/src/views/demo/jeecg/erplist/JeecgOrderCustomerList.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/views/demo/jeecg/erplist/JeecgOrderTicketList.vue b/src/views/demo/jeecg/erplist/JeecgOrderTicketList.vue new file mode 100644 index 0000000..f6f6e3e --- /dev/null +++ b/src/views/demo/jeecg/erplist/JeecgOrderTicketList.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/views/demo/jeecg/erplist/components/JeecgOrderCustomerModal.vue b/src/views/demo/jeecg/erplist/components/JeecgOrderCustomerModal.vue new file mode 100644 index 0000000..e9021e5 --- /dev/null +++ b/src/views/demo/jeecg/erplist/components/JeecgOrderCustomerModal.vue @@ -0,0 +1,57 @@ + + diff --git a/src/views/demo/jeecg/erplist/components/JeecgOrderModal.vue b/src/views/demo/jeecg/erplist/components/JeecgOrderModal.vue new file mode 100644 index 0000000..f29344e --- /dev/null +++ b/src/views/demo/jeecg/erplist/components/JeecgOrderModal.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/demo/jeecg/erplist/components/JeecgOrderTicketModal.vue b/src/views/demo/jeecg/erplist/components/JeecgOrderTicketModal.vue new file mode 100644 index 0000000..12c72dd --- /dev/null +++ b/src/views/demo/jeecg/erplist/components/JeecgOrderTicketModal.vue @@ -0,0 +1,57 @@ + + diff --git a/src/views/demo/jeecg/erplist/erplist.api.ts b/src/views/demo/jeecg/erplist/erplist.api.ts new file mode 100644 index 0000000..f5fa869 --- /dev/null +++ b/src/views/demo/jeecg/erplist/erplist.api.ts @@ -0,0 +1,144 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/test/order/orderList', + save = '/test/order/add', + edit = '/test/order/edit', + deleteOne = '/test/order/delete', + deleteBatch = '/test/order/deleteBatch', + customList = '/test/order/listOrderCustomerByMainId', + saveCustomer = '/test/order/addCustomer', + editCustomer = '/test/order/editCustomer', + deleteCustomer = '/test/order/deleteCustomer', + deleteBatchCustomer = '/test/order/deleteBatchCustomer', + ticketList = '/test/order/listOrderTicketByMainId', + saveTicket = '/test/order/addTicket', + editTicket = '/test/order/editTicket', + deleteTicket = '/test/order/deleteTicket', + deleteBatchTicket = '/test/order/deleteBatchTicket', +} + +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除 + */ +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} + +/** + * 列表接口 + * @param params + */ +export const customList = (params) => + defHttp.get({url: Api.customList, params}); + + +/** + * 删除 + */ +export const deleteCustomer = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteCustomer, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const deleteBatchCustomer = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatchCustomer, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdateCustomer = (params, isUpdate) => { + let url = isUpdate ? Api.editCustomer : Api.saveCustomer; + return defHttp.post({url: url, params}); +} +/** + * 列表接口 + * @param params + */ +export const ticketList = (params) => + defHttp.get({url: Api.ticketList, params}); + + +/** + * 删除 + */ +export const deleteTicket = (params, handleSuccess) => { + return defHttp.delete({url: Api.deleteTicket, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const deleteBatchTicket = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatchTicket, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdateTicket = (params, isUpdate) => { + let url = isUpdate ? Api.editTicket : Api.saveTicket; + return defHttp.post({url: url, params}); +} diff --git a/src/views/demo/jeecg/erplist/erplist.data.ts b/src/views/demo/jeecg/erplist/erplist.data.ts new file mode 100644 index 0000000..d3ca255 --- /dev/null +++ b/src/views/demo/jeecg/erplist/erplist.data.ts @@ -0,0 +1,239 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import {render} from "/@/utils/common/renderUtils"; + +export const columns: BasicColumn[] = [ + { + title: '订单号', + dataIndex: 'orderCode', + width: 260, + }, + { + title: '订单类型', + dataIndex: 'ctype', + width: 160, + customRender: ({text}) => { + return text == '1' ? '国内订单' : text == '2' ? "国际订单" : '' + } + }, + { + title: '订单日期', + dataIndex: 'orderDate', + width: 300, + }, + { + title: '订单金额', + width: 200, + dataIndex: 'orderMoney', + }, + { + title: '订单备注', + width: 200, + dataIndex: 'content', + } +]; + + +export const searchFormSchema: FormSchema[] = [ + { + label: '订单号', + field: 'orderCode', + component: 'Input', + colProps: {span: 6} + }, + { + label: '订单类型', + field: 'ctype', + component: 'Select', + componentProps: { + options: [ + { + label: '国内订单', + value: '1', + key: '1', + }, + { + label: '国际订单', + value: '2', + key: '2', + }, + ], + }, + colProps: {span: 6}, + } +]; + +export const formSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false + }, + { + label: '订单号', + field: 'orderCode', + component: 'Input', + required: true + }, + { + label: '订单类型', + field: 'ctype', + component: 'Select', + componentProps: { + options: [ + { + label: '国内订单', + value: '1', + key: '1', + }, + { + label: '国际订单', + value: '2', + key: '2', + }, + ], + }, + }, + { + label: '订单日期', + field: 'orderDate', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD hh:mm:ss', + }, + }, + { + label: '订单金额', + field: 'orderMoney', + component: 'InputNumber', + }, + { + label: '订单备注', + field: 'content', + component: 'Input', + } +]; + +export const customColumns: BasicColumn[] = [ + { + title: '客户名', + dataIndex: 'name', + width: 260, + }, + { + title: '性别', + dataIndex: 'sex', + width: 100, + customRender: ({text}) => { + return render.renderDict(text, 'sex') + } + }, + { + title: '身份证号', + dataIndex: 'idcard', + width: 300, + }, + { + title: '电话', + width: 200, + dataIndex: 'telphone', + } +]; + +export const customerFormSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false + }, + { + label: '客户姓名', + field: 'name', + component: 'Input', + required: true + }, + { + label: '性别', + field: 'sex', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'sex', + placeholder: '请选择性别', + }, + }, + { + label: '身份证号码', + field: 'idcard', + component: 'Input', + }, + { + label: '身份证扫描件', + field: 'idcardPic', + component: 'JImageUpload', + componentProps: { + fileMax: 2 + }, + }, + { + label: '联系方式', + field: 'telphone', + component: 'Input', + rules: [{required: false, pattern: /^1[3|4|5|7|8|9][0-9]\d{8}$/, message: '手机号码格式有误'}], + }, + { + label: 'orderId', + field: 'orderId', + component: 'Input', + show: false + } +]; + +export const ticketColumns: BasicColumn[] = [ + { + title: '航班号', + dataIndex: 'ticketCode', + }, + { + title: '航班时间', + dataIndex: 'tickectDate', + }, + { + title: '创建人', + dataIndex: 'createBy', + }, + { + title: '创建时间', + dataIndex: 'createTime', + } +]; + +export const ticketFormSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false + }, + { + label: '航班号', + field: 'ticketCode', + component: 'Input', + required: true + }, + { + label: '航班时间', + field: 'tickectDate', + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD hh:mm:ss', + }, + }, + { + label: 'orderId', + field: 'orderId', + component: 'Input', + show: false + } +]; diff --git a/src/views/demo/jeecg/erplist/index.vue b/src/views/demo/jeecg/erplist/index.vue new file mode 100644 index 0000000..6a48fd0 --- /dev/null +++ b/src/views/demo/jeecg/erplist/index.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/demo/jeecg/index.vue b/src/views/demo/jeecg/index.vue new file mode 100644 index 0000000..b88539b --- /dev/null +++ b/src/views/demo/jeecg/index.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/demo/jeecg/jeecgComponents.data.ts b/src/views/demo/jeecg/jeecgComponents.data.ts new file mode 100644 index 0000000..02b793c --- /dev/null +++ b/src/views/demo/jeecg/jeecgComponents.data.ts @@ -0,0 +1,596 @@ +import {FormSchema, JCronValidator} from '/@/components/Form' +import {usePermission} from '/@/hooks/web/usePermission'; + +const {isDisabledAuth} = usePermission(); +export const schemas: FormSchema[] = [ + { + field: 'jdst', + component: 'JDictSelectTag', + label: '性别下拉', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sex', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'jdst1', + component: 'JDictSelectTag', + label: '性别选择', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sex', + type: 'radioButton' + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst1', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'jdst2', + component: 'JDictSelectTag', + label: '字典表下拉', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sys_user,realname,id', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst2', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'jdst3', + component: 'JDictSelectTag', + label: '字典表下拉(带条件)', + helpMessage: ['component模式'], + componentProps: { + dictCode: 'sys_user,realname,id,username!=\'admin\' order by create_time', + }, + colProps: { + span: 12, + }, + }, + { + field: 'jdst3', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'jsst', + component: 'JSearchSelect', + label: '字典搜索(同步)', + colProps: {span: 12}, + componentProps: { + //dict: "sys_depart,depart_name,id", + dictOptions: [{ + text: "选项一", + value: "1" + }, { + text: "选项二", + value: "2" + }, { + text: "选项三", + value: "3" + }] + }, + }, + { + field: 'jsst', + component: 'JEllipsis', + label: '选择值', + colProps: {span: 12}, + }, + { + field: 'jsst2', + component: 'JSearchSelect', + label: '字典搜索(异步)', + colProps: {span: 12}, + componentProps: { + dict: "sys_depart,depart_name,id", + pageSize: 6, + async: true + }, + }, + { + field: 'jsst2', + component: 'JEllipsis', + label: '选择值', + colProps: {span: 12}, + }, + { + field: 'xldx', + component: 'JDictSelectTag', + label: '字典下拉多选', + colProps: {span: 12}, + componentProps: { + dictCode: 'sex', + mode:'multiple', + }, + }, + { + field: 'xldx', + component: 'JEllipsis', + label: '选择值', + colProps: {span: 12}, + }, + { + field: 'dxxlk', + component: 'JDictSelectTag', + label: '字典下拉单选', + colProps: {span: 12}, + componentProps: { + dictCode: 'sex', + }, + }, + { + field: 'dxxlk', + component: 'JEllipsis', + label: '选择值', + colProps: {span: 12}, + }, + { + field: 'depart3', + component: 'JSelectDept', + label: '选择部门—自定义值', + helpMessage: ['component模式'], + componentProps: {showButton: false,rowKey:'orgCode',primaryKey:'orgCode'}, + colProps: { + span: 12, + } + }, + { + field: 'depart3', + component: 'JEllipsis', + label: '选中部门', + colProps: {span: 12}, + }, + { + field: 'depart2', + component: 'JSelectDept', + label: '选择部门', + helpMessage: ['component模式'], + componentProps: {showButton: false}, + colProps: { + span: 12, + } + }, + { + field: 'depart2', + component: 'JEllipsis', + label: '选中部门', + colProps: {span: 12}, + }, + { + field: 'user2', + component: 'JSelectUser', + label: '用户选择组件', + helpMessage: ['component模式'], + componentProps: { + labelKey: 'realname', + rowKey: 'id', + showSelectTable: false + }, + colProps: { + span: 12, + }, + }, + { + field: 'user2', + component: 'JEllipsis', + label: '选中用户', + colProps: {span: 12}, + }, + { + field: 'user3', + component: 'JSelectUserByDept', + label: '部门选择用户', + helpMessage: ['component模式'], + componentProps: { + labelKey: 'realname', + rowKey: 'username', + }, + colProps: { + span: 12, + }, + }, + { + field: 'user3', + component: 'JEllipsis', + label: '选中用户', + colProps: {span: 12}, + }, + { + field: 'role2', + component: 'JSelectRole', + label: '角色选择组件', + helpMessage: ['component模式'], + colProps: { + span: 12, + }, + }, + { + field: 'role2', + component: 'JEllipsis', + label: '选中角色', + colProps: {span: 12}, + }, + { + field: 'position2', + component: 'JSelectPosition', + label: '职务选择组件', + helpMessage: ['component模式'], + colProps: {span: 12}, + componentProps: {async: true, showSelectTable: true}, + }, + { + field: 'position2', + component: 'JEllipsis', + label: '选中职务', + colProps: {span: 12}, + }, + { + field: 'checkbox1', + component: 'JCheckbox', + label: 'JCheckbox组件1', + helpMessage: ['component模式'], + defaultValue: '1,2', + componentProps: { + options: [{label: '男', value: '1'}, {label: '女', value: '2'}] + }, + colProps: { + span: 12, + }, + }, + { + field: 'checkbox1', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'checkbox2', + component: 'Input', + label: 'JCheckbox组件2', + defaultValue: '1', + helpMessage: ['插槽模式'], + slot: 'JCheckbox', + colProps: { + span: 12, + }, + }, + { + field: 'checkbox2', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'data1', + label: '日期选择', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + colProps: { + span: 12, + }, + }, + { + field: 'data1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'hk', + component: 'Input', + label: '滑块验证码', + helpMessage: ['插槽模式'], + slot: 'dargVerify', + colProps: { + span: 12, + }, + }, + { + field: 'hk', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'JTreeDict', + component: 'JTreeDict', + label: '树字典', + helpMessage: ['component模式'], + colProps: {span: 12}, + }, + { + field: 'JTreeDict', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'ts', + component: 'JTreeSelect', + label: '下拉树选择', + helpMessage: ['component模式'], + componentProps: { + dict: "sys_permission,name,id", + pidField: "parent_id", + }, + colProps: { + span: 12, + }, + }, + { + field: 'ts', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'ts1', + component: 'JTreeSelect', + label: '下拉树多选', + helpMessage: ['component模式'], + componentProps: { + dict: "sys_permission,name,id", + pidField: "parent_id", + multiple: true + }, + colProps: { + span: 12, + }, + }, + { + field: 'ts1', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'category', + component: 'JCategorySelect', + label: '分类字典树', + helpMessage: ['component模式'], + defaultValue:'', + componentProps: { + pcode: "B01", + multiple: true + }, + colProps: { + span: 12, + }, + }, + { + field: 'category', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'JEasyCron', + component: 'JEasyCron', + label: 'JEasyCron', + helpMessage: ['component模式'], + colProps: {span: 12}, + defaultValue: '* * * * * ? *', + rules: [{validator: JCronValidator}], + }, + { + field: 'JEasyCron', + component: 'JEllipsis', + label: '选择值', + colProps: {span: 12}, + }, + { + field: 'JInput', + component: 'JInput', + label: '特殊查询组件', + helpMessage: ['插槽模式'], + slot: 'JInput', + colProps: { + span: 12, + }, + }, + { + field: 'jinputtype', + component: 'Select', + label: '查询类型', + componentProps: { + options: [ + {value: 'like', label: '模糊(like)'}, + {value: 'ne', label: '不等于(ne)'}, + {value: 'ge', label: '大于等于(ge)'}, + {value: 'le', label: '小于等于(le)'} + ] + }, + colProps: { + span: 6, + }, + }, + { + field: 'JInput', + component: 'JEllipsis', + label: '输入值', + colProps: {span: 6}, + }, + { + field: 'field1', + component: 'Select', + label: '省市区选择', + helpMessage: ['插槽模式'], + slot: 'jAreaLinkage', + colProps: { + span: 12, + }, + defaultValue: ['130000', '130200'], + }, + { + field: 'field1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'field0', + component: 'Select', + label: '禁用组件(方式一)', + helpMessage: ['插槽模式'], + slot: 'jAreaLinkage1', + colProps: { + span: 12, + }, + defaultValue: ['130000', '130200'], + }, + + { + field: 'field0', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'field2', + component: 'JAreaLinkage', + label: '禁用组件(方式二)', + helpMessage: ['component模式'], + colProps: { + span: 12, + }, + dynamicDisabled: ({values}) => { + return isDisabledAuth(['demo.dbarray']); + }, + defaultValue: ['140000', '140300', '140302'], + }, + { + field: 'field2', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'pca1', + component: 'JAreaSelect', + label: '省市区级联', + helpMessage: ['component模式'], + defaultValue: '140302', + colProps: { + span: 12, + }, + }, + { + field: 'pca1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'pop1', + component: 'Input', + label: 'JPopup示例', + helpMessage: ['插槽模式'], + slot: 'JPopup', + colProps: { + span: 12, + }, + }, + { + field: 'pop1', + component: 'JEllipsis', + label: '选中值', + colProps: { + span: 12, + }, + }, + { + field: 'JInputPop', + component: 'JInputPop', + label: 'JInputPop', + helpMessage: ['component模式'], + colProps: {span: 12}, + }, + { + field: 'JInputPop', + component: 'JEllipsis', + label: '输入值', + colProps: {span: 12}, + }, + { + field: 'JTreeDictAsync', + component: 'JTreeDict', + label: '异步JTreeDict', + helpMessage: ['component模式'], + colProps: {span: 12}, + componentProps: {async: true}, + }, + { + field: 'JTreeDictAsync', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'JSwitch', + component: 'JSwitch', + label: 'JSwitch', + helpMessage: ['component模式'], + colProps: {span: 12}, + }, + { + field: 'JSwitch', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }, + { + field: 'JSwitchSelect', + component: 'JSwitch', + label: 'JSwitchSelect', + helpMessage: ['component模式'], + colProps: {span: 12}, + componentProps: {query: true}, + }, + { + field: 'JSwitchSelect', + component: 'JEllipsis', + label: '选中值', + colProps: {span: 12}, + }]; diff --git a/src/views/demo/jeecg/model/JeecgOrderModal.vue b/src/views/demo/jeecg/model/JeecgOrderModal.vue new file mode 100644 index 0000000..489d7f7 --- /dev/null +++ b/src/views/demo/jeecg/model/JeecgOrderModal.vue @@ -0,0 +1,94 @@ + + diff --git a/src/views/demo/page/account/setting/BaseSetting.vue b/src/views/demo/page/account/setting/BaseSetting.vue index 20a6ebe..03ae95a 100644 --- a/src/views/demo/page/account/setting/BaseSetting.vue +++ b/src/views/demo/page/account/setting/BaseSetting.vue @@ -8,7 +8,7 @@
头像
{ - const data = await accountInfoApi(); - setFieldsValue(data); + //const data = await accountInfoApi(); + const userInfo = userStore.getUserInfo; + setFieldsValue(userInfo); }); const avatar = computed(() => { @@ -65,20 +66,36 @@ return avatar || headerImg; }); - function updateAvatar(src: string) { + function updateAvatar(src: string, data:string) { + console.log("data====》",data) const userinfo = userStore.getUserInfo; - userinfo.avatar = src; + userinfo.avatar = data; userStore.setUserInfo(userinfo); } + /** + *更新基本信息 + * */ + async function handleSubmit() { + try { + let values = await validate(); + console.log("values",values); + //提交表单 + defHttp.post({url: '/sys/user/appEdit', params:values}); + const userinfo = userStore.getUserInfo; + Object.assign(userinfo,values); + userStore.setUserInfo(userinfo); + createMessage.success("更新成功") + } catch(e) { + console.log("e",e) + } + } return { avatar, register, - uploadApi: uploadApi as any, + uploadImg, updateAvatar, - handleSubmit: () => { - createMessage.success('更新成功!'); - }, + handleSubmit }; }, }); diff --git a/src/views/demo/page/account/setting/SecureSetting.vue b/src/views/demo/page/account/setting/SecureSetting.vue index 5f7ac21..c41d994 100644 --- a/src/views/demo/page/account/setting/SecureSetting.vue +++ b/src/views/demo/page/account/setting/SecureSetting.vue @@ -6,7 +6,7 @@ @@ -18,18 +18,36 @@ + diff --git a/src/views/demo/setup/index.vue b/src/views/demo/setup/index.vue index 4ca5fd4..17d254f 100644 --- a/src/views/demo/setup/index.vue +++ b/src/views/demo/setup/index.vue @@ -8,7 +8,7 @@ import { PageWrapper } from '/@/components/Page'; import { useDesign } from '/@/hooks/web/useDesign'; import intro from 'intro.js'; - import 'intro.js/introjs.css'; + import 'intro.js/minified/introjs.min.css'; export default defineComponent({ components: { PageWrapper }, diff --git a/src/views/demo/system/account/index.vue b/src/views/demo/system/account/index.vue index d75a77c..0e62d6c 100644 --- a/src/views/demo/system/account/index.vue +++ b/src/views/demo/system/account/index.vue @@ -2,7 +2,7 @@ -