Compare commits

...

2 Commits

Author SHA1 Message Date
张成
f86ee00e3b 1 2025-10-10 00:08:35 +08:00
张成
88cd8d6e72 1 2025-10-09 23:50:03 +08:00
50 changed files with 516 additions and 643 deletions

View File

@@ -335,19 +335,19 @@ export default {
```javascript
// src/api/business/productServer.js
// 注意:不需要 import http直接使用 window.framework.http
// 注意:不需要 import http直接使用 http
class ProductServer {
async getList(params) {
return await window.framework.http.get('/product/list', params)
return await http.get('/product/list', params)
}
async save(data) {
return await window.framework.http.post('/product/save', data)
return await http.post('/product/save', data)
}
async delete(id) {
return await window.framework.http.post('/product/delete', { id })
return await http.post('/product/delete', { id })
}
}

View File

@@ -1,29 +0,0 @@
class SysControlTypeServer {
async all(param) {
let res = await window.framework.http.get("/sys_control_type/all", param);
return res;
}
async page(row) {
let res = await window.framework.http.post("/sys_control_type/page", row);
return res;
}
async add(param) {
let res = await window.framework.http.post("/sys_control_type/add", param);
return res;
}
async edit(param) {
let res = await window.framework.http.post("/sys_control_type/edit", param);
return res;
}
async del(param) {
let res = await window.framework.http.post("/sys_control_type/del", param);
return res;
}
}
const sysControlTypeServer = new SysControlTypeServer();
export default sysControlTypeServer;

View File

@@ -24,6 +24,9 @@ const config = {
uploadUrl: 'http://localhost:9098/admin_api/upload' // 修改为你的上传地址
}
// 提前暴露框架实例(确保工具类可以访问)
window.framework = AdminFramework
// 初始化框架
AdminFramework.install(Vue, {
config: config,
@@ -82,7 +85,6 @@ app.$mount('#app')
// 全局暴露(方便调试)
window.app = app
window.rootVue = app
window.framework = AdminFramework

View File

@@ -140,7 +140,7 @@ export default {
delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await ai_messagesServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.query(1)
})
},

View File

@@ -133,7 +133,7 @@ export default {
delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await game_commentsServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.query(1)
})
},

View File

@@ -270,7 +270,7 @@ export default {
'joined_at': 'CURRENT_TIMESTAMP'
}, async (newRow) => {
let res = await gameParticipantsServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -282,7 +282,7 @@ export default {
let valid = await this.$refs['editModal'].$refs['From'].validate()
if (valid) {
let res = await gameParticipantsServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
}
})
@@ -290,7 +290,7 @@ export default {
async delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await gameParticipantsServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -513,7 +513,7 @@ export default {
'remark': ''
}, async (newRow) => {
let res = await gamesServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -522,7 +522,7 @@ export default {
let valid = await this.$refs['editModal'].$refs['From'].validate()
if (valid) {
let res = await gamesServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
}
})
@@ -530,7 +530,7 @@ export default {
async delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await gamesServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -257,7 +257,7 @@ export default {
async showAddWarp() {
this.$refs.editModal.addShow({ 'venue_type': 'indoor', 'surface_type': 'hard', 'court_count': '1', 'status': 'active', 'create_time': 'CURRENT_TIMESTAMP', 'updated_at': 'CURRENT_TIMESTAMP', }, async (newRow) => {
let res = await venuesServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -266,7 +266,7 @@ export default {
let valid = await this.$refs['editModal'].$refs['From'].validate()
if (valid) {
let res = await venuesServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
}
})
@@ -274,7 +274,7 @@ export default {
async delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await venuesServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -318,7 +318,7 @@ export default {
async showAddWarp() {
this.$refs.editModal.addShow({ 'is_subscribed': '0', 'last_login_time': 'CURRENT_TIMESTAMP', 'create_time': 'CURRENT_TIMESTAMP', 'updated_at': 'CURRENT_TIMESTAMP', }, async (newRow) => {
let res = await wch_usersServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -327,7 +327,7 @@ export default {
let valid = await this.$refs['editModal'].$refs['From'].validate()
if (valid) {
let res = await wch_usersServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
}
})
@@ -335,7 +335,7 @@ export default {
async delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await wch_usersServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -119,7 +119,7 @@ export default {
delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await recommend_blocksServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.query(1)
})
},

View File

@@ -85,7 +85,7 @@ export default {
},
},
]
return uiTool.getBtn(h, btns)
return window.framework.uiTool.getBtn(h, btns)
},
}
],
@@ -131,27 +131,27 @@ export default {
'follow_time': null
}, async (newRow) => {
let res = await user_followsServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.query(1)
})
},
showEditWarp(row) {
this.$refs.editModal.editShow(row, async (newRow) => {
let res = await user_followsServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.query(1)
})
},
delConfirm(row) {
uiTool.delConfirm(async () => {
window.framework.uiTool.delConfirm(async () => {
await user_followsServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.query(1)
})
},
exportCsv() {
user_followsServer.exportCsv(this.gridOption.param).then(res => {
window.framework. funTool.downloadFile(res, '用户关注关系.csv');
window.framework.funTool.downloadFile(res, '用户关注关系.csv');
});
},
resetQuery() {

View File

@@ -145,7 +145,7 @@ export default {
delConfirm(row) {
window.framework.uiTool.delConfirm(async () => {
await user_trackingServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.query(1)
})
},

View File

@@ -1,12 +1,12 @@
import http from "@/utils/http";
class FileServe {
async upload_oos_img(row) {
let res = await window.framework.http.postFormData("/sys_file/upload_oos_img", row);
let res = await http.postFormData("/sys_file/upload_oos_img", row);
return res;
}
async upload_Img(row) {
let res = await window.framework.http.postFormData("/file/upload_Img", row);
let res = await http.postFormData("/file/upload_Img", row);
return res;
}
}

View File

@@ -1,51 +0,0 @@
import http from '@/utils/http';
/**
* 热门城市二维码配置相关API
*/
// 获取配置列表
const getHotCityQrConfigList = (params) => {
return window.framework.http.get('/wch_hot_city_qr_config/list', { params });
};
// 获取所有配置
const getAllHotCityQrConfig = () => {
return window.framework.http.get('/wch_hot_city_qr_config/all');
};
// 获取配置详情
const getHotCityQrConfigDetail = (id) => {
return window.framework.http.get(`/wch_hot_city_qr_config/detail/${id}`);
};
// 创建配置
const createHotCityQrConfig = (data) => {
return window.framework.http.post('/wch_hot_city_qr_config/create', data);
};
// 更新配置
const updateHotCityQrConfig = (id, data) => {
return window.framework.http.post(`/wch_hot_city_qr_config/update/${id}`, data);
};
// 删除配置
const deleteHotCityQrConfig = (id) => {
return window.framework.http.post(`/wch_hot_city_qr_config/delete/${id}`);
};
// 批量删除配置
const batchDeleteHotCityQrConfig = (ids) => {
return window.framework.http.post('/wch_hot_city_qr_config/batch_delete', { ids });
};
export default {
getHotCityQrConfigList,
getAllHotCityQrConfig,
getHotCityQrConfigDetail,
createHotCityQrConfig,
updateHotCityQrConfig,
deleteHotCityQrConfig,
batchDeleteHotCityQrConfig
};

View File

@@ -1,7 +1,6 @@
// 系统 API 统一导出
export { default as fileServe } from './fileServe'
export { default as hotCityQrConfigServer } from './hot_city_qr_config_server'
export { default as plaAccountServer } from './pla_account_server'
export { default as rolePermissionServer } from './rolePermissionServer'
export { default as roleServer } from './roleServer'
@@ -13,5 +12,4 @@ export { default as sysLogServe } from './sys_log_serve'
export { default as systemTypeServer } from './systemType_server'
export { default as tableServer } from './tableServer'
export { default as userServer } from './userServer'
export { default as wchProfessionsServer } from './wch_professions_server'

View File

@@ -3,36 +3,36 @@ import http from '@/utils/http'
export default {
// 获取所有平台账户
all(param) {
return window.framework.http.get('/pla_account/all', param)
return http.get('/pla_account/all', param)
},
// 获取平台账户详情
detail(param) {
return window.framework.http.get('/pla_account/detail', param)
return http.get('/pla_account/detail', param)
},
// 分页查询平台账户
page(param) {
return window.framework.http.post('/pla_account/page', param)
return http.post('/pla_account/page', param)
},
// 新增平台账户
add(param) {
return window.framework.http.post('/pla_account/add', param)
return http.post('/pla_account/add', param)
},
// 编辑平台账户
edit(param) {
return window.framework.http.post('/pla_account/edit', param)
return http.post('/pla_account/edit', param)
},
// 删除平台账户
del(param) {
return window.framework.http.post('/pla_account/del', param)
return http.post('/pla_account/del', param)
},
// 导出平台账户数据
exportCsv(param) {
return window.framework.http.post('/pla_account/export', param)
return http.post('/pla_account/export', param)
}
}

View File

@@ -1,27 +1,27 @@
import http from '@/utils/http'
class RolePermissionServer {
async getRoles(callback) {
let res = await window.framework.http.get('/SysRolePermission/Query', {})
let res = await http.get('/SysRolePermission/Query', {})
return res
}
async getRole(row) {
let res = await window.framework.http.get('/SysRolePermission/QueryByRoleId', row)
let res = await http.get('/SysRolePermission/QueryByRoleId', row)
return res
}
async add(row) {
let res = await window.framework.http.post('/SysRolePermission/add', row)
let res = await http.post('/SysRolePermission/add', row)
return res
}
async edit(row) {
let res = await window.framework.http.post('/SysRolePermission/edit', row)
let res = await http.post('/SysRolePermission/edit', row)
return res
}
async del(row) {
let res = await window.framework.http.post('/SysRolePermission/del', row)
let res = await http.post('/SysRolePermission/del', row)
return res
}
}

View File

@@ -1,23 +1,23 @@
import http from "@/utils/http";
class RoleServer {
async list() {
let res = await window.framework.http.get("/sys_role/index", {});
let res = await http.get("/sys_role/index", {});
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_role/add", row);
let res = await http.post("/sys_role/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_role/edit", row);
let res = await http.post("/sys_role/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_role/del", row);
let res = await http.post("/sys_role/del", row);
return res;
}
}

View File

@@ -1,12 +1,12 @@
import http from '@/utils/http'
class ShpProfitServer {
async report(param) {
let res = await window.framework.http.post('/shpProfit/report', param)
let res = await http.post('/shpProfit/report', param)
return res
}
async list(param) {
let res = await window.framework.http.post('/shpProfit/list', param)
let res = await http.post('/shpProfit/list', param)
return res
}
}

View File

@@ -1,22 +1,22 @@
import http from '@/utils/http'
class SpecificationServer {
async list() {
let res = await window.framework.http.post('/specification/list', {})
let res = await http.post('/specification/list', {})
return res
}
async add(row) {
let res = await window.framework.http.post('/specification/add', row)
let res = await http.post('/specification/add', row)
return res
}
async edit(row) {
let res = await window.framework.http.post('/specification/edit', row)
let res = await http.post('/specification/edit', row)
return res
}
async del(row) {
let res = await window.framework.http.post('/specification/del', row)
let res = await http.post('/specification/del', row)
return res
}
}

View File

@@ -1,7 +1,7 @@
import http from "@/utils/http";
class SysAddress {
async index(param) {
let res = await window.framework.http.get("/sys_address/index", param);
let res = await http.get("/sys_address/index", param);
return res;
}
}

View File

@@ -1,27 +1,27 @@
import http from "@/utils/http";
class SysModuleServer {
async all() {
let res = await window.framework.http.get("/sys_menu/all", {});
let res = await http.get("/sys_menu/all", {});
return res;
}
async list(row) {
let res = await window.framework.http.get("/sys_menu/all", row);
let res = await http.get("/sys_menu/all", row);
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_menu/add", row);
let res = await http.post("/sys_menu/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_menu/edit", row);
let res = await http.post("/sys_menu/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_menu/del", row);
let res = await http.post("/sys_menu/del", row);
return res;
}
}

View File

@@ -1,27 +1,27 @@
import http from "@/utils/http";
class SysLogServe {
async all(param) {
let res = await window.framework.http.get("/sys_log/all", param);
let res = await http.get("/sys_log/all", param);
return res;
}
async detail(param) {
let res = await window.framework.http.get("/sys_log/detail", param);
let res = await http.get("/sys_log/detail", param);
return res;
}
async delete(param) {
let res = await window.framework.http.get("/sys_log/delete", param);
let res = await http.get("/sys_log/delete", param);
return res;
}
async delete_all(param) {
let res = await window.framework.http.get("/sys_log/delete_all", param);
let res = await http.get("/sys_log/delete_all", param);
return res;
}
async operates(param) {
let res = await window.framework.http.get("/sys_log/operates", param);
let res = await http.get("/sys_log/operates", param);
return res;
}
}

View File

@@ -1,13 +1,13 @@
import http from '@/utils/http';
class systemTypeClServer {
async all(param) {
let res= await window.framework.http.get('/sys_project_type/all', param);
let res= await http.get('/sys_project_type/all', param);
return res;
}
async page(row) {
let res= await window.framework.http.post('/sys_project_type/page', row);
let res= await http.post('/sys_project_type/page', row);
return res;
}
@@ -18,17 +18,17 @@ class systemTypeClServer {
}
async add(row) {
let res= await window.framework.http.post('/sys_project_type/add', row);
let res= await http.post('/sys_project_type/add', row);
return res;
}
async edit(row) {
let res= await window.framework.http.post('/sys_project_type/edit', row);
let res= await http.post('/sys_project_type/edit', row);
return res;
}
async del(row) {
let res= await window.framework.http.post('/sys_project_type/del', row);
let res= await http.post('/sys_project_type/del', row);
return res;
}
}

View File

@@ -1,29 +1,29 @@
import http from '@/utils/http'
class TableServer {
async getAll(callback) {
return await window.framework.http.get('/table/index', {})
return await http.get('/table/index', {})
}
async add(row, callback) {
return await window.framework.http.post('/table/add', row)
return await http.post('/table/add', row)
}
async edit(row, callback) {
return await window.framework.http.post('/table/edit', row, function(res) {
return await http.post('/table/edit', row, function(res) {
callback && callback(res)
})
}
async del(row, callback) {
return await window.framework.http.post('/table/del', row)
return await http.post('/table/del', row)
}
async autoApi(id) {
return await window.framework.http.get('/template/api', { id: id })
return await http.get('/template/api', { id: id })
}
async autoDb(id) {
return await window.framework.http.get('/template/autoDb', { id: id })
return await http.get('/template/autoDb', { id: id })
}
}

View File

@@ -1,12 +1,12 @@
import http from "@/utils/http";
class UserServer {
async login(row) {
let res = await window.framework.http.post("/sys_user/login", row);
let res = await http.post("/sys_user/login", row);
return res;
}
async all() {
let res = await window.framework.http.get("/sys_user/index", {});
let res = await http.get("/sys_user/index", {});
return res;
}
@@ -16,22 +16,22 @@ class UserServer {
}
async authorityMenus() {
let res = await window.framework.http.post("/sys_user/authorityMenus", {});
let res = await http.post("/sys_user/authorityMenus", {});
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_user/add", row);
let res = await http.post("/sys_user/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_user/edit", row);
let res = await http.post("/sys_user/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_user/del", row);
let res = await http.post("/sys_user/del", row);
return res;
}
}

View File

@@ -1,33 +0,0 @@
import http from '@/utils/http'
export default {
// 获取职业列表
page: (params) => {
return window.framework.http.post('/wch_professions/page', params)
},
// 获取所有职业
all: (params) => {
return window.framework.http.post('/wch_professions/all', params)
},
// 新增职业
add: (params) => {
return window.framework.http.post('/wch_professions/add', params)
},
// 更新职业
edit: (params) => {
return window.framework.http.post('/wch_professions/edit', params)
},
// 删除职业
del: (params) => {
return window.framework.http.post('/wch_professions/del', params)
},
// 导出职业数据
exportCsv: (params) => {
return window.framework.http.post('/wch_professions/exportCsv', params)
}
}

View File

@@ -1,27 +1,27 @@
import http from "@/utils/http";
class FormFieldServer {
async all(param) {
let res = await window.framework.http.get("/sys_form_field/all", param);
let res = await http.get("/sys_form_field/all", param);
return res;
}
async page(row) {
let res = await window.framework.http.post("/sys_form_field/page", row);
let res = await http.post("/sys_form_field/page", row);
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_form_field/add", row);
let res = await http.post("/sys_form_field/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_form_field/edit", row);
let res = await http.post("/sys_form_field/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_form_field/del", row);
let res = await http.post("/sys_form_field/del", row);
return res;
}
}

View File

@@ -1,32 +1,32 @@
import http from "@/utils/http";
class FormServer {
async all(param) {
let res = await window.framework.http.get("/sys_form/all", param);
let res = await http.get("/sys_form/all", param);
return res;
}
async page(row) {
let res = await window.framework.http.post("/sys_form/page", row);
let res = await http.post("/sys_form/page", row);
return res;
}
async generate(row) {
let res = await window.framework.http.post("/sys_form/generate", row);
let res = await http.post("/sys_form/generate", row);
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_form/add", row);
let res = await http.post("/sys_form/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_form/edit", row);
let res = await http.post("/sys_form/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_form/del", row);
let res = await http.post("/sys_form/del", row);
return res;
}
}

View File

@@ -2,46 +2,46 @@ import http from "@/utils/http";
class MenuServer {
async list(row) {
let res = await window.framework.http.get("/sys_menu/index", row);
let res = await http.get("/sys_menu/index", row);
return res;
}
async generate(row) {
let res = await window.framework.http.post("/sys_menu/generate", row);
let res = await http.post("/sys_menu/generate", row);
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_menu/add", row);
let res = await http.post("/sys_menu/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_menu/edit", row);
let res = await http.post("/sys_menu/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_menu/del", row);
let res = await http.post("/sys_menu/del", row);
return res;
}
async generate(row) {
let res = await window.framework.http.post("/form/generate", row);
let res = await http.post("/form/generate", row);
return res;
}
async generateModel(row) {
let res = await window.framework.http.post("/model/generate", row);
let res = await http.post("/model/generate", row);
return res;
}
async modelAll(row) {
let res = await window.framework.http.post("/model/all", row);
let res = await http.post("/model/all", row);
return res;
}
async modelInterface(row) {
let res = await window.framework.http.post("/model/interface", row);
let res = await http.post("/model/interface", row);
return res;
}
}

View File

@@ -1,29 +1,29 @@
import http from "@/utils/http";
class ModelFieldServer {
async all(row) {
let res = await window.framework.http.get("/sys_model_field/all", row);
let res = await http.get("/sys_model_field/all", row);
return res;
}
async allByKey(row) {
let res = await window.framework.http.get("/sys_model_field/allByKey", row, {
let res = await http.get("/sys_model_field/allByKey", row, {
hideLoad: true
});
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_model_field/add", row);
let res = await http.post("/sys_model_field/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_model_field/edit", row);
let res = await http.post("/sys_model_field/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_model_field/del", row);
let res = await http.post("/sys_model_field/del", row);
return res;
}
}

View File

@@ -1,37 +1,37 @@
import http from "@/utils/http";
class ModelServer {
async interface(row) {
let res = await window.framework.http.post("/sys_model/interface", row);
let res = await http.post("/sys_model/interface", row);
return res;
}
async all() {
let res = await window.framework.http.get("/sys_model/all", {});
let res = await http.get("/sys_model/all", {});
return res;
}
async detail(row) {
let res = await window.framework.http.get("/sys_model/detail", row);
let res = await http.get("/sys_model/detail", row);
return res;
}
async regenerate(row) {
let res = await window.framework.http.post("/sys_model/regenerate", row);
let res = await http.post("/sys_model/regenerate", row);
return res;
}
async add(row) {
let res = await window.framework.http.post("/sys_model/add", row);
let res = await http.post("/sys_model/add", row);
return res;
}
async edit(row) {
let res = await window.framework.http.post("/sys_model/edit", row);
let res = await http.post("/sys_model/edit", row);
return res;
}
async del(row) {
let res = await window.framework.http.post("/sys_model/del", row);
let res = await http.post("/sys_model/del", row);
return res;
}
}

View File

@@ -1,27 +1,27 @@
import http from "@/utils/http";
class ParamSetupServer {
async getAll() {
return await window.framework.http.get("/sys_parameter/index", {});
return await http.get("/sys_parameter/index", {});
}
async getOne(key) {
return await window.framework.http.get("/sys_parameter/key", { key });
return await http.get("/sys_parameter/key", { key });
}
async add(row) {
return await window.framework.http.post("/sys_parameter/add", row);
return await http.post("/sys_parameter/add", row);
}
async edit(row) {
return await window.framework.http.post("/sys_parameter/edit", row);
return await http.post("/sys_parameter/edit", row);
}
async setSysConfig(row) {
return await window.framework.http.post("/sys_parameter/setSysConfig", row);
return await http.post("/sys_parameter/setSysConfig", row);
}
async del(row) {
return await window.framework.http.post("/sys_parameter/del", row);
return await http.post("/sys_parameter/del", row);
}
}

View File

@@ -1,26 +1,26 @@
import http from "@/utils/http";
class SysControlTypeServer {
async all(param) {
let res = await window.framework.http.get("/sys_control_type/all", param);
let res = await http.get("/sys_control_type/all", param);
return res;
}
async page(row) {
let res = await window.framework.http.post("/sys_control_type/page", row);
let res = await http.post("/sys_control_type/page", row);
return res;
}
async add(param) {
let res = await window.framework.http.post("/sys_control_type/add", param);
let res = await http.post("/sys_control_type/add", param);
return res;
}
async edit(param) {
let res = await window.framework.http.post("/sys_control_type/edit", param);
let res = await http.post("/sys_control_type/edit", param);
return res;
}
async del(param) {
let res = await window.framework.http.post("/sys_control_type/del", param);
let res = await http.post("/sys_control_type/del", param);
return res;
}
}

View File

@@ -51,7 +51,7 @@ export default {
},
data() {
return {
actionUrl: window.rootVue.$config.apiUrl + 'sys_file/upload_oos_img',
actionUrl: this.config.apiUrl + 'sys_file/upload_oos_img',
cropper: null,
insideSrc: '',
file: null,
@@ -81,7 +81,7 @@ export default {
reader.onload = async (event) => {
this.getSize(event.srcElement.result).then(({ width, height }) => {
if (width < 500 || height < 500) {
rootVue.$Message.error('图片尺寸小于 500*500 ,请更换图片')
this.$Message.error('图片尺寸小于 500*500 ,请更换图片')
return false
}
this.insideSrc = event.srcElement.result

View File

@@ -25,7 +25,7 @@ export default {
this.editor = new WangEditor(domId)
this.editor.config.uploadImgShowBase64 = true
this.editor.config.uploadImgServer = window.rootVue.$config.apiUrl + 'sys_file/upload_oos_img'
this.editor.config.uploadImgServer =this.config.apiUrl + 'sys_file/upload_oos_img'
this.editor.config.uploadImgHooks = {
customInsert: (insertImg, result, editor) => {
var url = result.data.path

View File

@@ -37,7 +37,7 @@ export default {
return {
headers,
uploadList: [],
actionUrl: window.rootVue.$config.apiUrl + 'sys_file/upload_oos_img',
actionUrl:this.config.apiUrl + 'sys_file/upload_oos_img',
imgSrc: '',
visible: false,
}

View File

@@ -34,7 +34,7 @@ export default {
data() {
return {
headers,
actionUrl: window.rootVue.$config.apiUrl + 'sys_file/upload_oos_img',
actionUrl: this.config.apiUrl + 'sys_file/upload_oos_img',
imgUrl: '',
visible: false,
}

302
src/config/icons.json Normal file
View File

@@ -0,0 +1,302 @@
[
"md-add",
"md-add-circle",
"md-alarm",
"md-albums",
"md-alert",
"md-american-football",
"md-analytics",
"md-aperture",
"md-apps",
"md-appstore",
"md-archive",
"md-arrow-back",
"md-arrow-down",
"md-arrow-dropdown",
"md-arrow-dropdown-circle",
"md-arrow-dropleft",
"md-arrow-dropleft-circle",
"md-arrow-dropright",
"md-arrow-dropright-circle",
"md-arrow-dropup",
"md-arrow-dropup-circle",
"md-arrow-forward",
"md-arrow-round-back",
"md-arrow-round-down",
"md-arrow-round-forward",
"md-arrow-round-up",
"md-arrow-up",
"md-at",
"md-attach",
"md-backspace",
"md-barcode",
"md-baseball",
"md-basket",
"md-basketball",
"md-battery-charging",
"md-battery-dead",
"md-battery-full",
"md-beaker",
"md-beer",
"md-bicycle",
"md-bluetooth",
"md-boat",
"md-body",
"md-bonfire",
"md-book",
"md-bookmark",
"md-bookmarks",
"md-bowtie",
"md-briefcase",
"md-browsers",
"md-brush",
"md-bug",
"md-build",
"md-bulb",
"md-bus",
"md-cafe",
"md-calculator",
"md-calendar",
"md-call",
"md-camera",
"md-car",
"md-card",
"md-cart",
"md-cash",
"md-chatboxes",
"md-chatbubbles",
"md-checkbox",
"md-checkbox-outline",
"md-checkmark",
"md-checkmark-circle",
"md-checkmark-circle-outline",
"md-clipboard",
"md-clock",
"md-close",
"md-close-circle",
"md-closed-captioning",
"md-cloud",
"md-cloud-circle",
"md-cloud-done",
"md-cloud-download",
"md-cloud-outline",
"md-cloud-upload",
"md-cloudy",
"md-cloudy-night",
"md-code",
"md-code-download",
"md-code-working",
"md-cog",
"md-color-fill",
"md-color-filter",
"md-color-palette",
"md-color-wand",
"md-compass",
"md-construct",
"md-contact",
"md-contacts",
"md-contract",
"md-contrast",
"md-copy",
"md-create",
"md-crop",
"md-cube",
"md-cut",
"md-desktop",
"md-disc",
"md-document",
"md-done-all",
"md-download",
"md-easel",
"md-egg",
"md-exit",
"md-expand",
"md-eye",
"md-eye-off",
"md-fastforward",
"md-female",
"md-filing",
"md-film",
"md-finger-print",
"md-flag",
"md-flame",
"md-flash",
"md-flask",
"md-flower",
"md-folder",
"md-folder-open",
"md-football",
"md-funnel",
"md-game-controller-a",
"md-game-controller-b",
"md-git-branch",
"md-git-commit",
"md-git-compare",
"md-git-merge",
"md-git-network",
"md-git-pull-request",
"md-glasses",
"md-globe",
"md-grid",
"md-hammer",
"md-hand",
"md-happy",
"md-headset",
"md-heart",
"md-heart-outline",
"md-help",
"md-help-buoy",
"md-help-circle",
"md-home",
"md-ice-cream",
"md-image",
"md-images",
"md-infinite",
"md-information",
"md-information-circle",
"md-ionic",
"md-ionitron",
"md-jet",
"md-key",
"md-keypad",
"md-laptop",
"md-leaf",
"md-link",
"md-list",
"md-list-box",
"md-locate",
"md-lock",
"md-log-in",
"md-log-out",
"md-magnet",
"md-mail",
"md-mail-open",
"md-male",
"md-man",
"md-map",
"md-medal",
"md-medical",
"md-medkit",
"md-megaphone",
"md-menu",
"md-mic",
"md-mic-off",
"md-microphone",
"md-moon",
"md-more",
"md-move",
"md-musical-note",
"md-musical-notes",
"md-navigate",
"md-no-smoking",
"md-notifications",
"md-notifications-off",
"md-notifications-outline",
"md-nuclear",
"md-nutrition",
"md-open",
"md-options",
"md-outlet",
"md-paper",
"md-paper-plane",
"md-partly-sunny",
"md-pause",
"md-paw",
"md-people",
"md-person",
"md-person-add",
"md-phone-landscape",
"md-phone-portrait",
"md-photos",
"md-pie",
"md-pin",
"md-pint",
"md-pizza",
"md-plane",
"md-planet",
"md-play",
"md-podium",
"md-power",
"md-pricetag",
"md-pricetags",
"md-print",
"md-pulse",
"md-qr-scanner",
"md-quote",
"md-radio",
"md-radio-button-off",
"md-radio-button-on",
"md-rainy",
"md-recording",
"md-redo",
"md-refresh",
"md-refresh-circle",
"md-remove",
"md-remove-circle",
"md-reorder",
"md-repeat",
"md-resize",
"md-restaurant",
"md-return-left",
"md-return-right",
"md-reverse-camera",
"md-rewind",
"md-ribbon",
"md-rose",
"md-sad",
"md-school",
"md-search",
"md-send",
"md-settings",
"md-share",
"md-share-alt",
"md-shirt",
"md-shuffle",
"md-skip-backward",
"md-skip-forward",
"md-snow",
"md-speedometer",
"md-square",
"md-square-outline",
"md-star",
"md-star-half",
"md-star-outline",
"md-stats",
"md-stopwatch",
"md-subway",
"md-sunny",
"md-swap",
"md-switch",
"md-sync",
"md-tablet-landscape",
"md-tablet-portrait",
"md-tennisball",
"md-text",
"md-thermometer",
"md-thumbs-down",
"md-thumbs-up",
"md-thunderstorm",
"md-time",
"md-timer",
"md-train",
"md-transgender",
"md-trash",
"md-trending-down",
"md-trending-up",
"md-trophy",
"md-umbrella",
"md-undo",
"md-unlock",
"md-videocam",
"md-volume-down",
"md-volume-mute",
"md-volume-off",
"md-volume-up",
"md-walk",
"md-warning",
"md-watch",
"md-water",
"md-wifi",
"md-wine",
"md-woman"
]

View File

@@ -12,9 +12,24 @@ import uiTool from './utils/uiTool'
import http from './utils/http'
import * as tools from './utils/tools'
// 文件下载工具
const funTool = {
downloadFile: (res, fileName) => {
const blob = new Blob([res.data || res])
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob)
downloadElement.href = href
downloadElement.download = fileName || new Date().getTime() + '.csv'
document.body.appendChild(downloadElement)
downloadElement.click()
document.body.removeChild(downloadElement)
window.URL.revokeObjectURL(href)
}
}
import storeModules, { userModule, appModule } from './store'
import routerConfig, { createBaseRoutes, setupRouterGuards } from './router'
import { createBaseRoutes, setupRouterGuards } from './router'
import HomePage from './views/home/index.vue'
@@ -60,10 +75,12 @@ class AdminFramework {
this.config = {}
this.store = null
this.router = null
this.ViewUI = null
this.tools = tools
this.uiTool = uiTool
this.http = http
this.funTool = funTool
this.storeModules = storeModules
this.userModule = userModule
@@ -103,6 +120,7 @@ class AdminFramework {
const { config = {}, ViewUI, VueRouter, Vuex, createPersistedState, componentMap } = options
this.config = config
this.ViewUI = ViewUI
if (ViewUI) {
Vue.use(ViewUI)
@@ -316,6 +334,7 @@ export {
tools,
uiTool,
http,
funTool,
storeModules,
userModule,

View File

@@ -26,9 +26,9 @@ export default {
},
actions: {
async getSysTitle({ state, commit, rootState }, { defaultTitle, defaultLogo = '' } = {}) {
// 如果没有传入 defaultTitle尝试从 Vue 实例的配置中获取
if (!defaultTitle && window.rootVue && window.rootVue.$config) {
defaultTitle = window.rootVue.$config.title || '智能代码平台'
// 如果没有传入 defaultTitle尝试从框架配置中获取
if (!defaultTitle && window.framework && window.framework.config) {
defaultTitle = window.framework.config.title || '智能代码平台'
} else if (!defaultTitle) {
defaultTitle = '智能代码平台'
}

View File

@@ -96,7 +96,7 @@ export default {
// 生成路由菜单(传递 HomePage 组件)
// 从框架导出的组件中获取 HomePage
const HomePage = window.framework && window.framework.HomePage ? window.framework.HomePage : null
const HomePage = window.framework && HomePage ? HomePage : null
let mainMenu = uiTool.getRoutes(Main, ParentView, Page404, HomePage)
console.log('生成的主菜单:', mainMenu)
@@ -104,9 +104,8 @@ export default {
commit('setMenuList', mainMenu.children)
// 动态添加路由(重要!解决登录后点击菜单空白的问题)
if (window.rootVue && window.rootVue.$router) {
const router = window.rootVue.$router
const routes = router.options.routes
if (this.router) {
const routes =this.router.options.routes
// 查找并移除旧的主路由
const mainRouteIndex = routes.findIndex(r => r.path === '/')

View File

@@ -1,6 +1,7 @@
import axios from 'axios'
import { formatDate } from './tools'
class Http {
constructor() {
this.config = {
@@ -71,8 +72,15 @@ class Http {
if (this.store) {
this.store.commit('user/setToken', '')
}
if (window.rootVue && window.rootVue.$router) {
window.rootVue.$router.push({ path: '/login' }) // 使用 path 而不是 name
// 使用框架的 router 实例跳转到登录页
try {
if (window.framework && window.framework.router) {
window.framework.router.push({ path: '/login' })
} else if (window.location) {
window.location.href = '#/login'
}
} catch (err) {
console.error('跳转登录页失败:', err)
}
return Promise.reject(error)
}
@@ -106,8 +114,17 @@ class Http {
}
showError(msg) {
if (window.rootVue && window.rootVue.$Message) {
window.rootVue.$Message.error({ content: msg, duration: 3 })
// 优先使用框架的 ViewUI 实例,如果不存在则使用全局的 $Message
try {
if (window.framework && window.framework.ViewUI && window.framework.ViewUI.Message) {
window.framework.ViewUI.Message.error({ content: msg, duration: 3 })
} else if (window.$Message) {
window.$Message.error({ content: msg, duration: 3 })
} else {
console.error('[HTTP Error]', msg)
}
} catch (error) {
console.error('[HTTP Error]', msg, error)
}
}

View File

@@ -110,20 +110,31 @@ export default class uiTool {
}
static delConfirm(callback) {
if (window.rootVue && window.rootVue.$Modal) {
window.rootVue.$Modal.confirm({
title: '温馨提示',
content: '<p>你确定删除吗?</p>',
onOk: () => {
try {
const Modal = (window.framework && window.framework.ViewUI && window.framework.ViewUI.Modal) || window.$Modal
if (Modal) {
Modal.confirm({
title: '温馨提示',
content: '<p>你确定删除吗?</p>',
onOk: () => {
callback && callback()
}
})
} else {
// 如果 Modal 不存在,使用原生确认框
if (confirm('你确定删除吗?')) {
callback && callback()
}
})
}
} catch (error) {
console.error('delConfirm error:', error)
}
}
static showConfirm({ title = '温馨提示', content = '内容' }, callback) {
if (window.rootVue && window.rootVue.$Modal) {
window.rootVue.$Modal.confirm({
const Modal = (window.framework && window.framework.ViewUI && window.framework.ViewUI.Modal) || window.$Modal
if (Modal) {
Modal.confirm({
title,
content,
onOk: () => {

View File

@@ -75,7 +75,7 @@ export default {
this.$refs.editModal.addShow({}, async (row) => {
await paramSetupServer.add(row)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -88,7 +88,7 @@ export default {
this.gridOption.editRow = row
this.$refs.editModal.editShow(row, async (newRow) => {
await paramSetupServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
})
@@ -96,7 +96,7 @@ export default {
async delConfirm(row) {
uiTool.delConfirm(async () => {
await paramSetupServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -82,21 +82,21 @@ export default {
this.$refs.editModal.addShow({}, async (row) => {
await roleServer.add(row)
this.init()
await rootVue.$Message.success('新增成功!')
await this.$Message.success('新增成功!')
})
},
showEditWarp(row) {
this.$refs.editModal.editShow(row, async (newRow) => {
await roleServer.edit(newRow)
await this.init()
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
})
},
async delConfirm(row) {
uiTool.delConfirm(async () => {
await roleServer.del(row)
await this.init()
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
})
},
async submitPermission() {
@@ -110,7 +110,7 @@ export default {
await roleServer.edit(param)
await this.init()
rootVue.$Message.success('权限修改成功!')
this.$Message.success('权限修改成功!')
this.isShowPermission = false
},

View File

@@ -112,21 +112,21 @@ export default {
showAddWarp() {
this.$refs.editModal.addShow({}, async (newRow) => {
await userServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
showEditWarp(row) {
this.$refs.editModal.editShow(row, async (newRow) => {
await userServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
})
},
async delConfirm(row) {
uiTool.delConfirm(async () => {
await userServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -119,7 +119,7 @@ export default {
async showAddWarp() {
this.$refs.editModal.addShow({}, async (newRow) => {
let res = await sysControlTypeServer.add(newRow)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -128,7 +128,7 @@ export default {
let valid = await this.$refs['editModal'].$refs['From'].validate()
if (valid) {
let res = await sysControlTypeServer.edit(newRow)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
}
})
@@ -137,7 +137,7 @@ export default {
async delConfirm(row) {
uiTool.delConfirm(async () => {
await sysControlTypeServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},

View File

@@ -317,7 +317,7 @@ export default {
this.$refs.editModal.editShow(this.editRow, async (newRow) => {
let param = Object.assign({}, this.editRow, newRow)
await menuServer.edit(param)
rootVue.$Message.success('修改成功!')
this.$Message.success('修改成功!')
this.init()
})
},
@@ -335,7 +335,7 @@ export default {
this.$refs.editModal.addShow(this.editRow, async (newRow) => {
let param = Object.assign({}, newRow)
await menuServer.add(param)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
@@ -354,14 +354,14 @@ export default {
this.$refs.editModal.addShow(this.editRow, async (newRow) => {
let param = Object.assign({}, newRow)
await menuServer.add(param)
rootVue.$Message.success('新增成功!')
this.$Message.success('新增成功!')
this.init()
})
},
async delConfirm(row) {
uiTool.delConfirm(async () => {
await menuServer.del(row)
rootVue.$Message.success('删除成功!')
this.$Message.success('删除成功!')
this.init()
})
},
@@ -372,7 +372,7 @@ export default {
},
async () => {
let res = await menuServer.generate(row)
rootVue.$Message.success('生成成功!')
this.$Message.success('生成成功!')
this.init()
}
)
@@ -384,7 +384,7 @@ export default {
},
async () => {
let res = await menuServer.generateModel(row)
rootVue.$Message.success('生成成功!')
this.$Message.success('生成成功!')
this.init()
}
)

View File

@@ -1,362 +0,0 @@
/**
* Admin Framework - 閫氱敤鍚庡彴绠$悊绯荤粺妗嗘灦
* 鐗堟湰: 1.0.0
*
* 鍔熻兘鍖呭惈:
* - 绯荤粺绠$悊鍔熻兘 (sys_*)
* - 鐢ㄦ埛鐧诲綍鍜屾潈闄愮鐞? * - 鍔ㄦ€佽矾鐢辩鐞? * - 涓诲竷灞€鍜岄〉闈㈠竷灞€
* - 鍏ㄥ眬缁勪欢
* - 宸ュ叿搴? * - Vuex 鐘舵€佺鐞? */
// ==================== 鏍峰紡鏂囦欢 ====================
import './assets/css/animate.css'
import './assets/css/base.less'
import './assets/css/ivewExpand.less'
import './assets/icons/iconfont.css'
// ==================== 宸ュ叿搴?====================
import uiTool from './utils/uiTool'
import http from './utils/http'
import * as tools from './utils/tools'
// ==================== Store 妯″潡 ====================
import storeModules, { userModule, appModule } from './store'
// ==================== 璺敱閰嶇疆 ====================
import routerConfig, { createBaseRoutes, setupRouterGuards } from './router'
// ==================== 绯荤粺椤甸潰 ====================
// 涓婚〉
import HomePage from './views/home/index.vue'
// system 椤甸潰
import SysLog from './views/system/sys_log.vue'
import SysParamSetup from './views/system/sys_param_setup.vue'
import SysRole from './views/system/sys_role.vue'
import SysUser from './views/system/sys_user.vue'
// system_high 椤甸潰
import SysControl from './views/system_high/sys_control.vue'
import SysMenu from './views/system_high/sys_menu.vue'
import SysTitle from './views/system_high/sys_title.vue'
// 鐧诲綍鍜岄敊璇〉闈?import LoginPage from './views/login/login.vue'
import Page401 from './views/error-page/401.vue'
import Page404 from './views/error-page/404.vue'
import Page500 from './views/error-page/500.vue'
// 甯冨眬缁勪欢
import Main from './components/main'
import ParentView from './components/parent-view'
// ==================== 绯荤粺 API ====================
// system API
import * as systemApi from './api/system'
// system_high API
import * as systemHighApi from './api/system_high'
// ==================== 妗嗘灦绫?====================
class AdminFramework {
constructor() {
this.version = '1.0.0'
this.installed = false
this.config = {}
this.store = null
this.router = null
// 瀵煎嚭宸ュ叿
this.tools = tools
this.uiTool = uiTool
this.http = http
// 瀵煎嚭 Store 妯″潡
this.storeModules = storeModules
this.userModule = userModule
this.appModule = appModule
// 瀵煎嚭璺敱閰嶇疆
this.createBaseRoutes = createBaseRoutes
this.setupRouterGuards = setupRouterGuards
// 瀵煎嚭缁勪欢
this.Main = Main
this.ParentView = ParentView
this.LoginPage = LoginPage
this.Page401 = Page401
this.Page404 = Page404
this.Page500 = Page500
// 瀵煎嚭绯荤粺椤甸潰
this.HomePage = HomePage
this.SysLog = SysLog
this.SysParamSetup = SysParamSetup
this.SysRole = SysRole
this.SysUser = SysUser
this.SysControl = SysControl
this.SysMenu = SysMenu
this.SysTitle = SysTitle
// 瀵煎嚭 API
this.systemApi = systemApi
this.systemHighApi = systemHighApi
}
/**
* Vue 鎻掍欢瀹夎鏂规硶 - 鑷姩瀹屾垚鎵€鏈夊垵濮嬪寲
* @param {Object} Vue - Vue 瀹炰緥
* @param {Object} options - 閰嶇疆閫夐」
* @param {Object} options.config - 搴旂敤閰嶇疆
* @param {Object} options.ViewUI - ViewUI 瀹炰緥锛堝彲閫夛紝妗嗘灦浼氳嚜鍔ㄥ鐞嗭級
* @param {Object} options.VueRouter - VueRouter 瀹炰緥锛堝彲閫夛級
* @param {Object} options.Vuex - Vuex 瀹炰緥锛堝彲閫夛級
* @param {Function} options.createPersistedState - vuex-persistedstate锛堝彲閫夛級
* @param {Object} options.componentMap - 鑷畾涔夌粍浠舵槧灏勮〃锛堝彲閫夛級
*/
install(Vue, options = {}) {
if (this.installed) return
this.installed = true
const { config = {}, ViewUI, VueRouter, Vuex, createPersistedState, componentMap } = options
this.config = config
// 鑷姩娉ㄥ唽 ViewUI
if (ViewUI) {
Vue.use(ViewUI)
}
// 鑷姩娉ㄥ唽 VueRouter
if (VueRouter) {
Vue.use(VueRouter)
}
// 鑷姩娉ㄥ唽 Vuex
if (Vuex) {
Vue.use(Vuex)
}
// 鎸傝浇鍏ㄥ眬閰嶇疆鍜屽伐鍏? Vue.prototype.$config = config
Vue.prototype.$http = http
Vue.prototype.$tools = tools
Vue.prototype.$uiTool = uiTool
// 鑷姩娉ㄥ唽鍏ㄥ眬缁勪欢
this.registerGlobalComponents(Vue)
// 鑷姩璁剧疆缁勪欢鏄犲皠琛紙鍖呭惈澶栭儴浼犲叆鐨勬槧灏勶級
this.setupComponentMap(componentMap)
// 濡傛灉鎻愪緵浜?Vuex锛岃嚜鍔ㄥ垱寤?Store
if (Vuex && !this.store) {
this.store = this.createStore(Vuex, {}, createPersistedState)
// 鑷姩鍒濆鍖?HTTP
http.init(config, this.store)
}
// 濡傛灉鎻愪緵浜?VueRouter锛岃嚜鍔ㄥ垱寤?Router
if (VueRouter && !this.router) {
// 鑾峰彇涓昏矾鐢遍厤缃紙浠庡悗绔潈闄愯彍鍗曠敓鎴愶級
const mainRoute = this.getRoutes({ Main, ParentView, Page404 })
this.router = this.createRouter(VueRouter, {
Main,
ParentView,
LoginPage,
Page401,
Page404,
Page500
}, mainRoute ? [mainRoute] : [], ViewUI)
}
}
/**
* 鑷姩娉ㄥ唽鍏ㄥ眬缁勪欢
*/
registerGlobalComponents(Vue) {
// 娉ㄥ唽甯冨眬缁勪欢
Vue.component('Main', Main)
Vue.component('ParentView', ParentView)
// 娉ㄥ唽閿欒椤甸潰
Vue.component('Page401', Page401)
Vue.component('Page404', Page404)
Vue.component('Page500', Page500)
// 娉ㄥ唽鐧诲綍椤甸潰
Vue.component('LoginPage', LoginPage)
}
/**
* 璁剧疆缁勪欢鏄犲皠琛紙灏嗗悗绔繑鍥炵殑璺緞鏄犲皠鍒板疄闄呯粍浠讹級
* @param {Object} customMap - 澶栭儴浼犲叆鐨勮嚜瀹氫箟缁勪欢鏄犲皠
*/
setupComponentMap(customMap = {}) {
// 妗嗘灦鍐呯疆缁勪欢鍒楄〃锛氳矾寰?=> 缁勪欢
const components = {
'home/index': HomePage,
'system/sys_log': SysLog,
'system/sys_param_setup': SysParamSetup,
'system/sys_role': SysRole,
'system/sys_user': SysUser,
'system_high/sys_control': SysControl,
'system_high/sys_menu': SysMenu,
'system_high/sys_title': SysTitle,
// 鍚堝苟澶栭儴浼犲叆鐨勭粍浠舵槧灏? ...customMap
}
// 鑷姩鐢熸垚甯?.vue 鍜屼笉甯?.vue 鐨勬槧灏? const map = {}
Object.keys(components).forEach(path => {
const cleanPath = path.replace(/\.vue$/, '')
map[cleanPath] = components[path]
map[cleanPath + '.vue'] = components[path]
})
uiTool.setComponentMap(map)
}
/**
* 娣诲姞鑷畾涔夌粍浠舵槧灏? * @param {Object} customMap - 鑷畾涔夌粍浠舵槧灏勫璞? * @example
* AdminFramework.addComponentMap({
* 'ball/games.vue': GamesComponent,
* 'order/pay_orders.vue': PayOrdersComponent
* })
*/
addComponentMap(customMap) {
uiTool.setComponentMap(customMap)
}
/**
* 鍒濆鍖?HTTP 閰嶇疆
* @param {Object} config - HTTP 閰嶇疆
* @param {Object} store - Vuex Store 瀹炰緥
*/
initHttp(config, store) {
http.init(config, store)
this.store = store
}
/**
* 鍒涘缓璺敱瀹炰緥
* @param {Object} Router - VueRouter 绫? * @param {Object} components - 缁勪欢瀵硅薄
* @param {Array} customRoutes - 鑷畾涔夎矾鐢? * @param {Object} ViewUI - ViewUI 瀹炰緥
* @param {String} homeName - 棣栭〉鍚嶇О
* @returns {Object} router 瀹炰緥
*/
createRouter(Router, components = {}, customRoutes = [], ViewUI, homeName = 'home') {
const { LoginPage, Page401, Page404, Page500 } = components
if (!LoginPage || !Page401 || !Page404 || !Page500) {
console.error('Missing required page components')
return null
}
const baseRoutes = createBaseRoutes(LoginPage, Page401, Page404, Page500)
const router = new Router({
routes: [...baseRoutes, ...customRoutes],
mode: 'hash'
})
if (ViewUI) {
setupRouterGuards(router, ViewUI, homeName)
}
return router
}
/**
* 鍒涘缓 Store 瀹炰緥
* @param {Object} Vuex - Vuex 绫? * @param {Object} customModules - 鑷畾涔夋ā鍧? * @param {Object} createPersistedState - vuex-persistedstate 鎻掍欢
* @returns {Object} store 瀹炰緥
*/
createStore(Vuex, customModules = {}, createPersistedState) {
const store = new Vuex.Store({
modules: {
user: userModule,
app: appModule,
...customModules
},
plugins: createPersistedState ? [
createPersistedState({
storage: window.localStorage
})
] : []
})
this.store = store
return store
}
/**
* 鑾峰彇鍔ㄦ€佽矾鐢? * @param {Object} components - 缁勪欢瀵硅薄
* @returns {Object} 涓昏矾鐢遍厤缃? */
getRoutes(components = {}) {
const { Main, ParentView, Page404 } = components
if (!Main || !ParentView || !Page404) {
console.error('Missing required layout components')
return null
}
return uiTool.getRoutes(Main, ParentView, Page404)
}
/**
* 娉ㄥ唽鍏ㄥ眬缁勪欢
* @param {Object} Vue - Vue 瀹炰緥
* @param {Object} components - 缁勪欢瀵硅薄
*/
registerComponents(Vue, components = {}) {
Object.keys(components).forEach(name => {
Vue.component(name, components[name])
})
}
}
// ==================== 鍒涘缓瀹炰緥骞跺鍑?====================
const framework = new AdminFramework()
// 榛樿瀵煎嚭妗嗘灦瀹炰緥
export default framework
// 鎸夐渶瀵煎嚭
export {
// 宸ュ叿搴? tools,
uiTool,
http,
// Store 妯″潡
storeModules,
userModule,
appModule,
// 璺敱閰嶇疆
createBaseRoutes,
setupRouterGuards,
// 绯荤粺椤甸潰
HomePage,
SysLog,
SysParamSetup,
SysRole,
SysUser,
SysControl,
SysMenu,
SysTitle,
// 鐧诲綍鍜岄敊璇〉闈? LoginPage,
Page401,
Page404,
Page500,
// 甯冨眬缁勪欢
Main,
ParentView,
// 绯荤粺 API
systemApi,
systemHighApi,
// 妗嗘灦绫? AdminFramework
}