diff --git a/README.md b/README.md
index 4a10ddd66fd00a7588653f7bbe322a89e0c0cf84..09bf3a4620ac7a2d7c6d177833298a28a187dd73 100644
--- a/README.md
+++ b/README.md
@@ -40,83 +40,83 @@ App、H5、微信小程序: [http://v2.volcore.xyz/app/guide](http://v2.volcore.
sqlsugar: [https://www.donet5.com/](https://www.donet5.com/)
## 2023.05.13增加审批流程分支、条件功能
-
-
-
+
+
+
## 框架移动端(uniapp)已发布,同样全自动生成代码,扫描小程序二维码即可查看
-
+
-
-
-
-
+
+
+
+
## 框架已支持Vue3版本
-
+
## 框架已增加低代码设计器
-
-
+
+
## 框架2.0已更新(部分新增功能截图)
增加切换皮肤功能
-
-
+
+
增加可复用的后台请求参数校验
-
+
增加树形菜单与代码生成页面使用
-
+
增加文本编辑器直接发布静态页面功能
-
+
一对一多从表显示(只需要少量代码就可完成成,其他都由代码生成器生成)
-
+
表合并显示 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
从图上传图片 (只需要几行代码完成代码生成器生成的页面实现扩展)
-
+
一对多从表(不限从表数量)扩展
-
+
图表
-
+
## 1、只读基础表单
整个只读的基础表单的所有前后端代码,全部由代码生成器生成,代码生成器中几乎不需要配置,并支持并后端业务代码扩展,直接生成代码后,配置菜单权限即可
-
+
## 2、自动绑定下拉框数据表单
整个自动绑定下拉框数据表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,在代码生成器中只需要指定数据源编号,页面加载时会根据编号自动加载数据源并绑定
-
+
## 3、启用图片支持、审核表单
整个启用图片支持、审核表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,审核功能需要在菜单配置权限、代码生成器中勾选启用图片支持
-
+
## 4、高级查询
整个表单的所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,查询字段、类型(下拉框、日期、TextArea等)、所在行与列都由代码生成器完成,不需要写任何代码
- 
+ 
## 5、主从表新建、编辑
主从表新建、编辑所有前后端代码,全部由代码生成器生成,并支持并后端业务代码扩展,新建、编辑从表配置、字段、类型(下拉框、日期、TextArea等)、所在行与列、字段是否只读、标签显示的长度等都由代码生成器完成,不需要写任何代码
-
+
## 6、excel导入
excel导入整个页面都由代码生成器生成,导入的字段、字段是否必填,下载模板也由代码生成器上配置(自己根据实际需要决定是否采用此方法),导入时会验证是否为空与数据的合法性,逻辑校验自己实现扩展方法即可
-
+
## 7、H5开发
-
+
## 8、权限分配
目前只实现了对用户的角色的Action进行权限分配
-
+
## 9、代码生成器
代码生成器提供了20多种可配置的属性,可灵活配置显示、查询、编辑、导入、导出、主从关系等功能点击看代码生成器文档
-
+
其他功能。。。。。
diff --git a/vol.uniapp/pages.json b/vol.uniapp/pages.json
index b6acc4ab591fb7884dd88cea7dcce660b51e3c10..2ea375583e4906581665c8d657a64e6051c20cf1 100644
--- a/vol.uniapp/pages.json
+++ b/vol.uniapp/pages.json
@@ -24,6 +24,18 @@
}
}
+ },
+ {
+ "path": "pages/login/ConfigPage",
+ "style": {
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": false,
+ "navigationBarBackgroundColor": "#FFFFFF",
+ "app-plus": { // 隐藏系统导航栏
+ "titleNView": false
+ }
+ }
+
},
{
"path": "pages/menu/menu",
diff --git a/vol.uniapp/pages/login/ConfigPage.vue b/vol.uniapp/pages/login/ConfigPage.vue
new file mode 100644
index 0000000000000000000000000000000000000000..6e8f6601b23e1858a011efa8b331268491709818
--- /dev/null
+++ b/vol.uniapp/pages/login/ConfigPage.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+ 保存并登录
+ 清理地址缓存
+ 显示配置地址
+
+
+
+
\ No newline at end of file
diff --git a/vol.uniapp/pages/login/login.vue b/vol.uniapp/pages/login/login.vue
index 5ae768b35aef3b19699157db105473f318cad9ea..7b8168d31b42208442ebecca402a87e5895fc3b6 100644
--- a/vol.uniapp/pages/login/login.vue
+++ b/vol.uniapp/pages/login/login.vue
@@ -19,6 +19,9 @@
:customStyle="{'border-radius': '10rpx'}" size="large" type="primary" text="登录">
+
+ 配置后台地址
+
演示帐号:admin666 密码:123456
@@ -53,6 +56,11 @@
}
},
methods: {
+ goToConfig() {
+ uni.navigateTo({
+ url: '/pages/login/ConfigPage'
+ });
+ },
login() {
if (this.base.isEmpty(this.userInfo.userName))
return this.$toast("请输入用户名");
diff --git a/vol.uniapp/store/index.js b/vol.uniapp/store/index.js
index bd707a17b5ace0b115eee4ec95fe79f76aaf03ac..7b9a168e44ebaf69e02f66a23506b41f1ffd076a 100644
--- a/vol.uniapp/store/index.js
+++ b/vol.uniapp/store/index.js
@@ -36,7 +36,8 @@ const store = new Vuex.Store({
clearUserInfo(state) {
state.permission = [];
state.userInfo = null;
- uni.clearStorage(app_user_token);
+ uni.removeStorageSync(app_user_token);
+ // uni.clearStorage(app_user_token);
},
},
actions: {
diff --git a/vol.uniapp/util/http.js b/vol.uniapp/util/http.js
index 700116365e9f26aa3ae441667c44f320724b93eb..f5685097a1f068cd0bcf5806aa7685ddf38e6652 100644
--- a/vol.uniapp/util/http.js
+++ b/vol.uniapp/util/http.js
@@ -7,6 +7,19 @@ if (process.env.NODE_ENV === 'development') {
ipAddress = "https://api.volcore.xyz/"
}
+function instance() {
+ const backendUrl = uni.getStorageSync('backendUrl');
+ if (!ipAddress) {
+ uni.navigateTo({
+ url: '/pages/login/ConfigPage'
+ });
+ }
+ if(backendUrl && ipAddress != backendUrl)
+ {
+ ipAddress = backendUrl;
+ }
+}
+
function post(url, data, loading) {
return request(url, 'POST', data, loading);
}
@@ -28,6 +41,7 @@ function request(url, method, data, loading) {
if (url.startsWith("/")) {
url = url.substr(1)
}
+ instance();
url = ipAddress + url;
var _header = {};
var _token = getToken();
@@ -110,6 +124,7 @@ function request(url, method, data, loading) {
export default {
+ instance,
get,
post,
request,