diff --git a/ebike-operate/src/pages.js b/ebike-operate/src/pages.js
index cbf0498..fb69050 100644
--- a/ebike-operate/src/pages.js
+++ b/ebike-operate/src/pages.js
@@ -54,31 +54,44 @@ const pages = [
icon: () => h(GatewayOutlined),
path: '/Urban',
name: '城市管理',
- children: [{
- path: '/OperateRegion',
- name: '运营区域',
- isMenu: true
- },
- {
- path: '/OperateRegionAdd',
- name: '运营区新增',
- isMenu: false
- }
+ children: [
+ {
+ path: '/OperateRegion',
+ name: '运营区域',
+ isMenu: true
+ },
+ {
+ path: '/SiteManage',
+ name: '站点列表',
+ isMenu: true
+ },
+ {
+ path: '/OperateRegionAdd',
+ name: '运营区新增',
+ isMenu: false
+ }
]
},
{
icon: () => h(GatewayOutlined),
path: '/SysManage',
name: '系统管理',
- children: [{
- path: '/OrgManage',
- name: '品牌商管理',
- isMenu: true
- },{
- path: '/PermManage',
- name: '权限管理',
- isMenu: true
- }
+ children: [
+ {
+ path: '/OrgManage',
+ name: '品牌商管理',
+ isMenu: true
+ },
+ {
+ path: '/PermManage',
+ name: '菜单管理',
+ isMenu: true
+ },
+ {
+ path: '/RoleManage',
+ name: '角色管理',
+ isMenu: true
+ }
]
}
]
diff --git a/ebike-operate/src/views/Layout/index.vue b/ebike-operate/src/views/Layout/index.vue
index dcbf2b9..9a127ec 100644
--- a/ebike-operate/src/views/Layout/index.vue
+++ b/ebike-operate/src/views/Layout/index.vue
@@ -53,12 +53,20 @@
-
- 当前区域:{{ userdfrname }}
+
+ 当前区域:{{ userdfrname }}
+
- {{ item.regionName }}
+ {{ item.regionName }}
@@ -139,21 +147,19 @@ onMounted(() => {
router.push('/login');
return;
}
- console.log('isLogin', isLogin.value)
// 获取用户名
const userinfo = getCache('ebike-userinfo');
- console.log('userinfo', userinfo)
username.value = userinfo.username ? userinfo.username : 'X'
//获取用户区域
const cuseroperation = getCache('ebike-useroperation');
- if(cuseroperation){
+ if (cuseroperation) {
useroperation.value = cuseroperation;
}
//获取默认区域
const cuserdefultoperation = getCache('ebike-userdefultoperation');
- if(cuserdefultoperation){
+ if (cuserdefultoperation) {
userdfrname.value = cuserdefultoperation.regionName ? cuserdefultoperation.regionName : '';
}
@@ -209,11 +215,11 @@ const cancel = (e) => {
}
const onOperationClick = (e) => {
- if(e.item && e.item.data){
+ if (e.item && e.item.data) {
const regionName = e.item.data.regionName;
userdfrname.value = regionName;
//存储默认区域
- setCache('ebike-userdefultoperation', e.item.data);
+ setCache('ebike-userdefultoperation', e.item.data);
}
}
diff --git a/ebike-operate/src/views/SysManage/RoleManage/index.vue b/ebike-operate/src/views/SysManage/RoleManage/index.vue
new file mode 100644
index 0000000..68f5b79
--- /dev/null
+++ b/ebike-operate/src/views/SysManage/RoleManage/index.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+ 排序
+
+ 编辑
+
+ 删除
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ebike-operate/src/views/Urban/SiteManage/index.vue b/ebike-operate/src/views/Urban/SiteManage/index.vue
index 915114c..875e00b 100644
--- a/ebike-operate/src/views/Urban/SiteManage/index.vue
+++ b/ebike-operate/src/views/Urban/SiteManage/index.vue
@@ -113,7 +113,7 @@
{{ column.title }}
-
+
详情
@@ -190,75 +190,96 @@ const columns = ref([
dataIndex: 'typeName'
},
{
- key: 'regionName',
+ key: 'operationRegionName',
title: '运营区域',
width: 150,
align: 'center',
- dataIndex: 'regionName'
+ dataIndex: 'operationRegionName'
},
{
- key: 'simpleName',
- title: '区域简称',
+ key: 'siteName',
+ title: '站点名称',
width: 150,
align: 'center',
- dataIndex: 'simpleName'
+ dataIndex: 'siteName'
},
{
key: 'inOperation',
- title: '运营状态',
+ title: '站点级别',
width: 150,
align: 'center',
dataIndex: 'inOperation'
},
{
key: 'regionRank',
- title: '区域级别',
- width: 150,
+ title: '站点地址',
+ width: 300,
align: 'center',
dataIndex: 'regionRank'
},
{
key: 'regionCode',
- title: '区域编码',
+ title: '负责人',
width: 150,
align: 'center',
dataIndex: 'regionCode'
},
{
key: 'siteCount',
- title: '站点数量',
+ title: '实时车辆',
width: 150,
align: 'center',
dataIndex: 'siteCount'
},
{
key: 'freeDuration',
- title: '免费时长',
+ title: '可调入/调出',
width: 150,
align: 'center',
dataIndex: 'freeDuration'
},
{
key: 'billingStandard',
- title: '计费标准',
+ title: '累计借车量',
width: 200,
align: 'center',
dataIndex: 'billingStandard'
},
{
key: 'dispatchFee',
- title: '运调度费(元)',
+ title: '累计还车量',
width: 250,
align: 'center',
dataIndex: 'dispatchFee'
},
{
key: 'cappedAmount',
- title: '封顶金额(元)',
+ title: '累计调入量',
width: 150,
align: 'center',
dataIndex: 'cappedAmount'
},
+ {
+ key: 'createdAt',
+ title: '累计调出量',
+ width: 150,
+ align: 'center',
+ dataIndex: 'createdAt'
+ },
+ {
+ key: 'createdAt',
+ title: '规范停车',
+ width: 350,
+ align: 'center',
+ dataIndex: 'createdAt'
+ },
+ {
+ key: 'createdAt',
+ title: '站点标签',
+ width: 200,
+ align: 'center',
+ dataIndex: 'createdAt'
+ },
{
key: 'createdAt',
title: '创建时间',
@@ -266,6 +287,13 @@ const columns = ref([
align: 'center',
dataIndex: 'createdAt'
},
+ {
+ key: 'createdAt',
+ title: '更新时间',
+ width: 150,
+ align: 'center',
+ dataIndex: 'createdAt'
+ },
{
title: '操作',
key: 'action',
diff --git a/ebike-operate/src/views/form/permmanage/permform.vue b/ebike-operate/src/views/form/permmanage/permform.vue
index 9866f36..076c339 100644
--- a/ebike-operate/src/views/form/permmanage/permform.vue
+++ b/ebike-operate/src/views/form/permmanage/permform.vue
@@ -16,7 +16,31 @@
required
:rules="[{ required: true, message: '请输入权限名称' }]"
>
-
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
@@ -28,14 +52,9 @@
:wrapper-col="{ span: 21 }"
name="parentId"
>
-
-
+
-
-
+
+
-
- {{ item.name }}
-
-
-
-
+ {{ item.name }}
+
+
+
+
@@ -80,7 +110,7 @@
import { ref } from 'vue'
import { callUser } from '@/apis/call.js'
import { message } from 'ant-design-vue'
-import { dataFormat } from '@/utils/tools'
+import _ from 'lodash'
const formRef = ref();
const formData = () => ({
@@ -91,7 +121,8 @@ const formData = () => ({
parentId: "",
type: "",
pcode: "",
- code: ""
+ code: "",
+ permType: null
});
const form = ref(formData());
const data = ref([]);
@@ -100,16 +131,26 @@ const parentOptions = ref([])
const typeList = ref([{
id: 0,
name: '最高权限'
-},{
+}, {
id: 1,
name: '页面权限'
-},{
+}, {
id: 2,
name: '按钮权限'
-},{
+}, {
id: 3,
name: '接口权限'
}])
+const permTypeList = ref([{
+ id: 0,
+ name: '全系统'
+}, {
+ id: 1,
+ name: 'PC端'
+}, {
+ id: 2,
+ name: '小程序端'
+}])
const openForm = (params = {}) => {
form.value = {
@@ -120,24 +161,24 @@ const openForm = (params = {}) => {
const loadPermData = (permId) => {
if (permId) {
- callUser("/permissions/getInfo/"+ permId, {}, "get").then(res => {
+ callUser("/permissions/getInfo/" + permId, {}, "get").then(res => {
if (res.code == 200) {
if (res.data) {
form.value = {
...res.data
};
const permCode = res.data.permCode;
- if(res.data.parentId === null || res.data.parentId === undefined){
+ if (res.data.parentId === null || res.data.parentId === undefined) {
form.value.code = permCode;
form.value.pcode = "";
}
- else
- {
+ else {
form.value.code = permCode.substring(permCode.lastIndexOf('.') + 1);
form.value.pcode = permCode.substring(0, permCode.lastIndexOf('.'));
}
- if(parentOptions.value.length > 0){
+ if (parentOptions.value.length > 0) {
parentValues.value = getParentValues(parentOptions.value, res.data.permId);
+ form.value.parentId = parentValues.value
console.log(parentValues.value)
}
}
@@ -151,11 +192,11 @@ const loadPermData = (permId) => {
function getParentValues(tree, targetId, path = []) {
for (const node of tree) {
if (node.permId === targetId) {
- return path;
+ return path;
}
if (node.children) {
const result = getParentValues(node.children, targetId, [...path, node.permId]);
- if (result) return result;
+ if (result) return result;
}
}
return null; // 未找到目标节点
@@ -163,7 +204,7 @@ function getParentValues(tree, targetId, path = []) {
const loadParentData = (params) => {
parentOptions.value = [];
- callUser("/permissions/list", {},"get").then((res) => {
+ callUser("/permissions/list", {}, "get").then((res) => {
if (res.code != 200) {
message.error(res.message)
parentOptions.value = []
@@ -191,12 +232,12 @@ const buildTreeWithChildren = (data) => {
data.forEach(item => {
const child = map.get(item.permId);
if (item.parentId === null || item.parentId === undefined) {
- roots.push(child);
+ roots.push(child);
} else {
const parent = map.get(item.parentId);
if (parent) {
parent.children = parent.children || [];
- parent.children.push(child);
+ parent.children.push(child);
} else {
roots.push(child);
}
@@ -206,41 +247,41 @@ const buildTreeWithChildren = (data) => {
}
const changeParent = (data) => {
- console.log(data)
+
+ const item = findItemByValue(parentOptions.value, data[data.length - 1]);
+ form.value.permCode = item.permCode
}
-const formSave = (callBack) => {
- formRef.value.validate().then(() => {
- let params = {
- orgId: "",
- orgName: "",
- orgCode: "",
- createdTime: dataFormat(new Date(),'yyyy-MM-dd HH:mm:ss'),
+
+const findItemByValue = (options, value) => {
+ for (const option of options) {
+ if (option.permId == value) {
+ return option;
}
- if (form.value.orgId) {
- params = {
- ...form.value
+ if (option.children) {
+ const found = findItemByValue(option.children, value);
+ if (found) {
+ return found;
}
- callUser("/organizations/update", params).then(res => {
- if (res.code != 200) {
- message.error(res.message);
- if (callBack) {
- callBack(false, res);
- }
- return;
- }
- if (callBack) {
- callBack(true, res);
- }
- resetAll();
- }).catch(error => {
- if (callBack) {
- callBack(false, error);
- }
- });
}
- else {
- callUser("/organizations/save", params).then(res => {
- if (res.code!= 200) {
+ }
+ return null;
+}
+
+const formSave = (callBack) => {
+ formRef.value.validate().then((res) => {
+ const data = _.cloneDeep(res);
+ let params = {
+ ...data,
+ parentId: !Array.isArray(data['parentId']) ? data['parentId'] : data['parentId'][data['parentId'].length - 1],
+ level: data['parentId'].length == 0 ? 1 : data['parentId'].length + 1,
+ permCode: form.value.permCode + "." + data['code'].toLowerCase()
+ }
+ delete params['code']
+ if (form.value.permId) {
+ params['permId'] = form.value.permId;
+ params['permCode'] = form.value.pcode + "." + form.value.code;
+ callUser("/permissions/update", params).then(res => {
+ if (res.code != 200) {
message.error(res.message);
if (callBack) {
callBack(false, res);
@@ -250,14 +291,33 @@ const formSave = (callBack) => {
if (callBack) {
callBack(true, res);
}
- resetAll();
+ resetAll();
}).catch(error => {
if (callBack) {
callBack(false, error);
}
- });
+ });
}
- });
+ else {
+ callUser("/permissions/save", params).then(res => {
+ if (res.code != 200) {
+ message.error(res.message);
+ if (callBack) {
+ callBack(false, res);
+ }
+ return;
+ }
+ if (callBack) {
+ callBack(true, res);
+ }
+ resetAll();
+ }).catch(error => {
+ if (callBack) {
+ callBack(false, error);
+ }
+ });
+ }
+ });
};
const resetAll = (callBack) => {
diff --git a/ebike-operate/src/views/form/rolemanage/RoleManage.vue b/ebike-operate/src/views/form/rolemanage/RoleManage.vue
new file mode 100644
index 0000000..ac79dcb
--- /dev/null
+++ b/ebike-operate/src/views/form/rolemanage/RoleManage.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ description }}
+
+
+
+
+
+
+
+
+
+ {{ description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file