diff --git a/src/api/system/menuUserManageApi.js b/src/api/system/menuUserManageApi.js new file mode 100644 index 0000000..c3aa1b0 --- /dev/null +++ b/src/api/system/menuUserManageApi.js @@ -0,0 +1,79 @@ +import request from '@/utils/request' + +/** + * 获取用户菜单列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listMenuUser(params) { + return new Promise((resolve, reject) => { + request({ + url: '/menuUser.listMenuUser', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 添加用户菜单 + * @param {Object} data 菜单数据 + * @returns {Promise} + */ +export function saveMenuUser(data) { + return new Promise((resolve, reject) => { + request({ + url: '/menuUser.saveMenuUser', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 删除用户菜单 + * @param {Object} data 删除参数 + * @returns {Promise} + */ +export function deleteMenuUser(data) { + return new Promise((resolve, reject) => { + request({ + url: '/menuUser.deleteMenuUser', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 获取目录菜单列表 + * @returns {Promise} + */ +export function listCatalogMenus() { + return new Promise((resolve, reject) => { + request({ + url: '/menu.listCatalogMenus', + method: 'get' + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/searchCommunityDataApi.js b/src/api/system/searchCommunityDataApi.js new file mode 100644 index 0000000..d01e7ba --- /dev/null +++ b/src/api/system/searchCommunityDataApi.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 搜索社区数据 +export function searchCommunityData(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/search.searchCommunityData', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取电话机信息 +export function getTelMachineInfo() { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/iot.getOpenApi', + method: 'get', + params: { + page: 1, + row: 1, + communityId, + iotApiCode: 'queryTelMachineBmoImpl' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 保存电话机消息 +export function saveTelMachineMsg(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/iot.postOpenApi', + method: 'post', + data: { + ...data, + communityId, + iotApiCode: 'telMachineMsgBmoImpl' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/system/viewMenuUserApi.js b/src/api/system/viewMenuUserApi.js new file mode 100644 index 0000000..6511833 --- /dev/null +++ b/src/api/system/viewMenuUserApi.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +/** + * 获取用户菜单列表 + * @param {Object} params 查询参数 + * @returns {Promise} Promise对象 + */ +export function listMenuUser(params) { + return new Promise((resolve, reject) => { + request({ + url: '/menuUser.listMenuUser', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/system/addMenuUser.vue b/src/components/system/addMenuUser.vue new file mode 100644 index 0000000..051f231 --- /dev/null +++ b/src/components/system/addMenuUser.vue @@ -0,0 +1,130 @@ + + + + + \ No newline at end of file diff --git a/src/components/system/deleteMenuUser.vue b/src/components/system/deleteMenuUser.vue new file mode 100644 index 0000000..a3455d8 --- /dev/null +++ b/src/components/system/deleteMenuUser.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/src/components/system/searchCommunityDataList.vue b/src/components/system/searchCommunityDataList.vue new file mode 100644 index 0000000..13d8082 --- /dev/null +++ b/src/components/system/searchCommunityDataList.vue @@ -0,0 +1,456 @@ + + + + + \ No newline at end of file diff --git a/src/components/system/viewMenuUserList.vue b/src/components/system/viewMenuUserList.vue new file mode 100644 index 0000000..4780ade --- /dev/null +++ b/src/components/system/viewMenuUserList.vue @@ -0,0 +1,144 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/systemI18n.js b/src/i18n/systemI18n.js index 1e64fd9..36a4c42 100644 --- a/src/i18n/systemI18n.js +++ b/src/i18n/systemI18n.js @@ -11,6 +11,7 @@ import { messages as downloadTempFileMessages } from '../views/system/downloadTe import { messages as assetImportLogMessages } from '../views/system/assetImportLogLang' import { messages as assetImportLogDetailMessages } from '../views/system/assetImportLogDetailLang' import { messages as payFeeQrcodeMessages } from '../views/fee/payFeeQrcodeLang' +import { messages as menuUserManageMessages } from '../views/system/menuUserManageLang' export const messages = { en: { @@ -27,6 +28,7 @@ export const messages = { ...assetImportLogMessages.en, ...assetImportLogDetailMessages.en, ...payFeeQrcodeMessages.en, + ...menuUserManageMessages.en, }, zh: { ...communitySettingManageMessages.zh, @@ -42,5 +44,6 @@ export const messages = { ...assetImportLogMessages.zh, ...assetImportLogDetailMessages.zh, ...payFeeQrcodeMessages.zh, + ...menuUserManageMessages.zh, } } \ No newline at end of file diff --git a/src/router/systemRouter.js b/src/router/systemRouter.js index 7e65634..4ad7ff6 100644 --- a/src/router/systemRouter.js +++ b/src/router/systemRouter.js @@ -74,4 +74,9 @@ export default [ name: '/pages/fee/payFeeQrcode', component: () => import('@/views/fee/payFeeQrcodeList.vue') }, + { + path: '/views/system/menuUserManage', + name: '/views/system/menuUserManage', + component: () => import('@/views/system/menuUserManageList.vue') + }, ] \ No newline at end of file diff --git a/src/views/layout/layout.vue b/src/views/layout/layout.vue index d1b4f49..d823ea8 100644 --- a/src/views/layout/layout.vue +++ b/src/views/layout/layout.vue @@ -71,6 +71,8 @@ + + @@ -80,6 +82,8 @@ import { getStoreInfo } from "@/api/user/indexApi" import { deepCopy, setCurrentCommunity } from "@/utils/vc" import { getCommunityName, _loadCommunityInfo } from '@/api/community/communityApi' import moreCommunity from '@/components/community/moreCommunity.vue' +import viewMenuUserList from '@/components/system/viewMenuUserList.vue' +import searchCommunityDataList from '@/components/system/searchCommunityDataList.vue' export default { name: 'Layout', @@ -113,7 +117,9 @@ export default { this.loadCommunity() }, components: { - moreCommunity + moreCommunity, + viewMenuUserList, + searchCommunityDataList }, methods: { async loadCommunity() { @@ -152,7 +158,9 @@ export default { }, _changeMenuCatalog(_catalog, _isJump) { this.activeMenu = _catalog.caId; - + if (this._showModelDiv(_catalog)) { + return; + } if (_catalog.caId === '1') { this.$router.push('/#/pages/mall/product'); } @@ -172,7 +180,7 @@ export default { } this.loadMenuTree(_catalog) }, - + handleCommand(command) { if (command === 'logout') { // 处理退出登录 @@ -260,7 +268,7 @@ export default { console.log(_href, _tabName) // 子菜单默认选中 this._setSelectedMenusChild(_href); - if(_href.indexOf('.html') > -1){ + if (_href.indexOf('.html') > -1) { window.open(_href, '_blank') return } @@ -275,7 +283,16 @@ export default { } }) }, - + _showModelDiv: function (_catalog) { + console.log(_catalog) + if (_catalog.url.startsWith('?')) { + let _modelName = _catalog.url.substring(1, _catalog.url.length); + this.$refs[_modelName].open() + return true; + } + return false; + } + } } diff --git a/src/views/oa/attendanceClassesStaffManageList.vue b/src/views/oa/attendanceClassesStaffManageList.vue index 04ef886..5977847 100644 --- a/src/views/oa/attendanceClassesStaffManageList.vue +++ b/src/views/oa/attendanceClassesStaffManageList.vue @@ -185,7 +185,7 @@ export default { this.$refs.viewImage.open(url) }, openStaffDetail(staff) { - this.$router.push(`/staff/staffDetail?staffId=${staff.staffId}`) + this.$router.push(`/views/staff/staffDetail?staffId=${staff.staffId}`) }, handleSizeChange(val) { this.page.size = val diff --git a/src/views/system/menuUserManageLang.js b/src/views/system/menuUserManageLang.js new file mode 100644 index 0000000..19f2cd2 --- /dev/null +++ b/src/views/system/menuUserManageLang.js @@ -0,0 +1,84 @@ +export const messages = { + en: { + menuUserManage: { + search: { + title: 'Search Conditions', + muId: 'Please enter ID', + name: 'Please enter menu name', + seq: 'Please enter sequence' + }, + list: { + title: 'Common Menu' + }, + table: { + muId: 'ID', + name: 'Menu', + icon: 'Icon', + seq: 'Sequence' + }, + add: { + title: 'Add Menu', + menu: 'Menu', + menuPlaceholder: 'Required, please select menu', + icon: 'Icon', + seq: 'Sequence', + seqPlaceholder: 'Required, please enter sequence', + success: 'Add success', + error: 'Add failed' + }, + delete: { + title: 'Confirm Operation', + confirm: 'Are you sure to delete this menu?', + success: 'Delete success', + error: 'Delete failed' + }, + validate: { + menuRequired: 'Menu is required', + iconRequired: 'Icon is required', + seqRequired: 'Sequence is required' + }, + fetchError: 'Failed to fetch menu data' + } + }, + zh: { + menuUserManage: { + search: { + title: '查询条件', + muId: '请输入编号', + name: '请输入菜单', + seq: '请输入列顺序' + }, + list: { + title: '常用菜单' + }, + table: { + muId: '编号', + name: '菜单', + icon: '图标', + seq: '顺序' + }, + add: { + title: '添加菜单', + menu: '菜单', + menuPlaceholder: '必填,请选择菜单', + icon: '图标', + seq: '列顺序', + seqPlaceholder: '必填,请填写列顺序', + success: '添加成功', + error: '添加失败' + }, + delete: { + title: '请确认您的操作', + confirm: '确定删除常用菜单?', + success: '删除成功', + error: '删除失败' + }, + validate: { + menuRequired: '菜单不能为空', + iconRequired: '图标不能为空', + seqRequired: '列顺序不能为空' + }, + fetchError: '获取菜单数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/system/menuUserManageList.vue b/src/views/system/menuUserManageList.vue new file mode 100644 index 0000000..7318b29 --- /dev/null +++ b/src/views/system/menuUserManageList.vue @@ -0,0 +1,172 @@ + + + + + \ No newline at end of file diff --git a/src/views/system/systemInfoManageLang.js b/src/views/system/systemInfoManageLang.js index 6e3a655..c5c6af5 100644 --- a/src/views/system/systemInfoManageLang.js +++ b/src/views/system/systemInfoManageLang.js @@ -17,7 +17,27 @@ export const messages = { required: '{field} is required', maxLength: '{field} cannot exceed {length} characters', fetchError: 'Failed to fetch system information' + }, + searchCommunityData: { + title: 'Search', + placeholder: 'Please enter house number, owner name, car number or family member name, etc.', + callInNumber: 'Calling number', + noData: 'Sorry, no data available', + inputTip: 'Please enter search criteria', + telNotConnected: 'Fixed telephone not connected', + noCallInNumber: 'No calling number returned from the telephone', + roomInfo: 'Room Information', + ownerInfo: 'Owner Information', + ownerMember: 'Owner Member', + communityCar: 'Community Vehicle', + memberCar: 'Member Vehicle', + contract: 'Contract', + repairOrder: 'Repair Order', + visitor: 'Visitor', + staff: 'Staff', + roomPlaceholder: 'Please enter room number like building-unit-room, e.g. 1-1-1' } + }, zh: { systemInfo: { @@ -37,6 +57,25 @@ export const messages = { required: '{field}不能为空', maxLength: '{field}不能超过{length}个字符', fetchError: '获取系统信息失败' + }, + searchCommunityData: { + title: '搜索', + placeholder: '请输入房屋编号,业主名称,车辆编号或者家庭成员名称等', + callInNumber: '通话中号码', + noData: '抱歉,没有数据', + inputTip: '请输入查询条件', + telNotConnected: '未连接固定电话', + noCallInNumber: '座机未返回通话中号码', + roomInfo: '房屋信息', + ownerInfo: '业主信息', + ownerMember: '业主成员', + communityCar: '小区车辆', + memberCar: '成员车辆', + contract: '合同', + repairOrder: '报修工单', + visitor: '访客', + staff: '员工', + roomPlaceholder: '请输入房屋编号 楼栋-单元-房屋 如1-1-1' } } } \ No newline at end of file