diff --git a/src/api/resource/resourceAuditFlowApi.js b/src/api/resource/resourceAuditFlowApi.js new file mode 100644 index 0000000..4d17c5e --- /dev/null +++ b/src/api/resource/resourceAuditFlowApi.js @@ -0,0 +1,118 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取审批流程列表 +export function listResourceAuditFlow(params) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/resourceStore.listResourceAuditFlow', + method: 'get', + params: { + ...params, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '获取审批流程列表失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加审批流程 +export function saveResourceAuditFlow(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/resourceStore.saveResourceAuditFlow', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '添加审批流程失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新审批流程 +export function updateResourceAuditFlow(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/resourceStore.updateResourceAuditFlow', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '更新审批流程失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除审批流程 +export function deleteResourceAuditFlow(data) { + return new Promise((resolve, reject) => { + const communityId = getCommunityId() + request({ + url: '/resourceStore.deleteResourceAuditFlow', + method: 'post', + data: { + ...data, + communityId + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '删除审批流程失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 部署流程 +export function deployWorkflow(data) { + return new Promise((resolve, reject) => { + request({ + url: '/workflow/deployModel', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '部署流程失败')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/resource/resourceStoreSpecificationManageApi.js b/src/api/resource/resourceStoreSpecificationManageApi.js new file mode 100644 index 0000000..cee7abd --- /dev/null +++ b/src/api/resource/resourceStoreSpecificationManageApi.js @@ -0,0 +1,109 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询规格列表 +export function listResourceStoreSpecifications(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/resourceStore.listResourceStoreSpecifications', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Query specification list failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加规格 +export function saveResourceStoreSpecification(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/resourceStore.saveResourceStoreSpecification', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Add specification failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新规格 +export function updateResourceStoreSpecification(data) { + return new Promise((resolve, reject) => { + data.communityId = getCommunityId() + request({ + url: '/resourceStore.updateResourceStoreSpecification', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Update specification failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除规格 +export function deleteResourceStoreSpecification(rssId) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.deleteResourceStoreSpecification', + method: 'post', + data: { + rssId, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Delete specification failed')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 查询物品类型列表 +export function listResourceStoreTypes(params) { + return new Promise((resolve, reject) => { + params.communityId = getCommunityId() + request({ + url: '/resourceStoreType.listResourceStoreTypes', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Query item types failed')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/resource/storehouseManageApi.js b/src/api/resource/storehouseManageApi.js new file mode 100644 index 0000000..cb28932 --- /dev/null +++ b/src/api/resource/storehouseManageApi.js @@ -0,0 +1,129 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取仓库列表 +export function listStorehouses(params) { + return new Promise((resolve, reject) => { + const baseParams = { + communityId: getCommunityId() + } + + request({ + url: '/resourceStore.listStorehouses', + method: 'get', + params: { ...baseParams, ...params } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve({ + data: res.data, + total: res.total, + records: res.records + }) + } else { + reject(new Error(res.msg || 'Failed to get warehouse list')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加仓库 +export function saveStorehouse(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.saveStorehouse', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to add warehouse')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 更新仓库 +export function updateStorehouse(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.updateStorehouse', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to update warehouse')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 删除仓库 +export function deleteStorehouse(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.deleteStorehouse', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || 'Failed to delete warehouse')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 获取审核流程列表 +export function listResourceAuditFlow(params) { + return new Promise((resolve, reject) => { + const baseParams = { + communityId: getCommunityId(), + page: 1, + row: 100 + } + + request({ + url: '/resourceStore.listResourceAuditFlow', + method: 'get', + params: { ...baseParams, ...params } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve({ + data: res.data, + total: res.total, + records: res.records + }) + } else { + reject(new Error(res.msg || 'Failed to get audit flow list')) + } + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/resource/AddResourceAuditFlow.vue b/src/components/resource/AddResourceAuditFlow.vue new file mode 100644 index 0000000..71ab28c --- /dev/null +++ b/src/components/resource/AddResourceAuditFlow.vue @@ -0,0 +1,131 @@ + + + \ No newline at end of file diff --git a/src/components/resource/AddStorehouse.vue b/src/components/resource/AddStorehouse.vue new file mode 100644 index 0000000..45d4fc1 --- /dev/null +++ b/src/components/resource/AddStorehouse.vue @@ -0,0 +1,189 @@ + + + \ No newline at end of file diff --git a/src/components/resource/DeleteResourceAuditFlow.vue b/src/components/resource/DeleteResourceAuditFlow.vue new file mode 100644 index 0000000..58cb50d --- /dev/null +++ b/src/components/resource/DeleteResourceAuditFlow.vue @@ -0,0 +1,68 @@ + + + + + \ No newline at end of file diff --git a/src/components/resource/DeleteStorehouse.vue b/src/components/resource/DeleteStorehouse.vue new file mode 100644 index 0000000..8a64ef9 --- /dev/null +++ b/src/components/resource/DeleteStorehouse.vue @@ -0,0 +1,55 @@ + + + \ No newline at end of file diff --git a/src/components/resource/EditResourceAuditFlow.vue b/src/components/resource/EditResourceAuditFlow.vue new file mode 100644 index 0000000..82ba813 --- /dev/null +++ b/src/components/resource/EditResourceAuditFlow.vue @@ -0,0 +1,139 @@ + + + \ No newline at end of file diff --git a/src/components/resource/EditStorehouse.vue b/src/components/resource/EditStorehouse.vue new file mode 100644 index 0000000..26b6e5e --- /dev/null +++ b/src/components/resource/EditStorehouse.vue @@ -0,0 +1,179 @@ + + + \ No newline at end of file diff --git a/src/components/resource/addResourceStoreSpecification.vue b/src/components/resource/addResourceStoreSpecification.vue new file mode 100644 index 0000000..63a41dc --- /dev/null +++ b/src/components/resource/addResourceStoreSpecification.vue @@ -0,0 +1,190 @@ + + + + + \ No newline at end of file diff --git a/src/components/resource/deleteResourceStoreSpecification.vue b/src/components/resource/deleteResourceStoreSpecification.vue new file mode 100644 index 0000000..d2d1732 --- /dev/null +++ b/src/components/resource/deleteResourceStoreSpecification.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/components/resource/editResourceStoreSpecification.vue b/src/components/resource/editResourceStoreSpecification.vue new file mode 100644 index 0000000..18ae197 --- /dev/null +++ b/src/components/resource/editResourceStoreSpecification.vue @@ -0,0 +1,200 @@ + + + + + \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index eff9ede..2e603cc 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -176,6 +176,9 @@ import { messages as inspectionPlanMessages } from '../views/inspection/inspecti import { messages as addInspectionPlanMessages } from '../views/inspection/addInspectionPlanLang' import { messages as inspectionTaskMessages } from '../views/inspection/inspectionTaskLang' import { messages as inspectionTaskDetailsMessages } from '../views/inspection/inspectionTaskDetailsLang' +import { messages as resourceAuditFlowMessages } from '../views/resource/resourceAuditFlowLang' +import { messages as storehouseManageMessages } from '../views/resource/storehouseManageLang' +import { messages as resourceStoreSpecificationManageMessages } from '../views/resource/resourceStoreSpecificationManageLang' Vue.use(VueI18n) @@ -356,6 +359,9 @@ const messages = { ...addInspectionPlanMessages.en, ...inspectionTaskMessages.en, ...inspectionTaskDetailsMessages.en, + ...resourceAuditFlowMessages.en, + ...storehouseManageMessages.en, + ...resourceStoreSpecificationManageMessages.en, }, zh: { ...loginMessages.zh, @@ -532,6 +538,9 @@ const messages = { ...addInspectionPlanMessages.zh, ...inspectionTaskMessages.zh, ...inspectionTaskDetailsMessages.zh, + ...resourceAuditFlowMessages.zh, + ...storehouseManageMessages.zh, + ...resourceStoreSpecificationManageMessages.zh, } } diff --git a/src/router/index.js b/src/router/index.js index a5dee9a..c3c0b89 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -857,20 +857,35 @@ const routes = [ component: () => import('@/views/inspection/inspectionPlanList.vue') }, { - path:'/views/inspection/addInspectionPlan', - name:'/views/inspection/addInspectionPlan', + path: '/views/inspection/addInspectionPlan', + name: '/views/inspection/addInspectionPlan', component: () => import('@/views/inspection/addInspectionPlanList.vue') + }, + { + path: '/pages/inspection/inspectionTask', + name: '/pages/inspection/inspectionTask', + component: () => import('@/views/inspection/InspectionTaskList.vue') + }, + { + path: '/pages/property/inspectionTaskDetails', + name: '/pages/property/inspectionTaskDetails', + component: () => import('@/views/inspection/inspectionTaskDetailsList.vue') + }, + { + path: '/pages/resource/resourceAuditFlow', + name: '/pages/resource/resourceAuditFlow', + component: () => import('@/views/resource/resourceAuditFlowList.vue') + }, + { + path:'/pages/property/storehouseManage', + name:'/pages/property/storehouseManage', + component: () => import('@/views/resource/storehouseManageList.vue') }, { - path:'/pages/inspection/inspectionTask', - name:'/pages/inspection/inspectionTask', - component: () => import('@/views/inspection/InspectionTaskList.vue') + path:'/pages/common/resourceStoreSpecificationManage', + name:'/pages/common/resourceStoreSpecificationManage', + component: () => import('@/views/resource/resourceStoreSpecificationManageList.vue') }, - { - path:'/pages/property/inspectionTaskDetails', - name:'/pages/property/inspectionTaskDetails', - component: () => import('@/views/inspection/inspectionTaskDetailsList.vue') - }, // 其他子路由可以在这里添加 ] }, diff --git a/src/views/resource/resourceAuditFlowLang.js b/src/views/resource/resourceAuditFlowLang.js new file mode 100644 index 0000000..96f94a7 --- /dev/null +++ b/src/views/resource/resourceAuditFlowLang.js @@ -0,0 +1,94 @@ +export const messages = { + en: { + resourceAuditFlow: { + searchTitle: 'Search Conditions', + flowNamePlaceholder: 'Please enter flow name', + flowTypePlaceholder: 'Please select flow type', + query: 'Search', + reset: 'Reset', + listTitle: 'Approval Flow', + add: 'Add', + flowId: 'ID', + flowName: 'Flow Name', + flowType: 'Flow Type', + flowStatus: 'Flow Status', + createTime: 'Create Time', + remark: 'Remark', + operations: 'Operations', + setFlow: 'Set Flow', + deployFlow: 'Deploy Flow', + edit: 'Edit', + delete: 'Delete', + purchaseFlow: 'Purchase Flow', + receiveFlow: 'Receive Flow', + transferFlow: 'Transfer Flow', + deployed: 'Deployed', + notDeployed: 'Not Deployed', + flowConfigTips: [ + 'Flow configuration instructions:', + '1. The last step must be the warehouse manager, and the name must be "Warehouse Manager"', + '2. The flow must have two or more steps' + ], + confirmTitle: 'Confirm Operation', + confirmDelete: 'Are you sure to delete this approval flow?', + cancel: 'Cancel', + confirmDeleteBtn: 'Confirm Delete', + addTitle: 'Add Approval Flow', + editTitle: 'Edit Approval Flow', + flowNameRequired: 'Flow name is required', + flowTypeRequired: 'Flow type is required', + remarkPlaceholder: 'Optional, max 512 characters', + save: 'Save', + requiredField: 'Required', + maxLength30: 'Max 30 characters', + maxLength12: 'Max 12 characters', + maxLength512: 'Max 512 characters' + } + }, + zh: { + resourceAuditFlow: { + searchTitle: '查询条件', + flowNamePlaceholder: '请输入流程名称', + flowTypePlaceholder: '请选择流程类型', + query: '查询', + reset: '重置', + listTitle: '审批流程', + add: '添加', + flowId: '编号', + flowName: '流程名称', + flowType: '流程类型', + flowStatus: '流程状态', + createTime: '创建时间', + remark: '备注', + operations: '操作', + setFlow: '设置流程', + deployFlow: '部署流程', + edit: '修改', + delete: '删除', + purchaseFlow: '采购流程', + receiveFlow: '领用流程', + transferFlow: '调拨流程', + deployed: '已部署', + notDeployed: '待部署', + flowConfigTips: [ + '流程配置说明:', + '1、最后一步必须为仓库管理员,名字也必须要叫做仓库管理员', + '2、流程必须为两步或者两步以上' + ], + confirmTitle: '请确认您的操作', + confirmDelete: '确定删除审批流程?', + cancel: '点错了', + confirmDeleteBtn: '确认删除', + addTitle: '添加审批流程', + editTitle: '修改审批流程', + flowNameRequired: '流程名称不能为空', + flowTypeRequired: '流程类型不能为空', + remarkPlaceholder: '选填,最多512个字符', + save: '保存', + requiredField: '必填项', + maxLength30: '不能超过30个字符', + maxLength12: '不能超过12个字符', + maxLength512: '不能超过512个字符' + } + } +} \ No newline at end of file diff --git a/src/views/resource/resourceAuditFlowList.vue b/src/views/resource/resourceAuditFlowList.vue new file mode 100644 index 0000000..04408ba --- /dev/null +++ b/src/views/resource/resourceAuditFlowList.vue @@ -0,0 +1,251 @@ + + + + + \ No newline at end of file diff --git a/src/views/resource/resourceStoreSpecificationManageLang.js b/src/views/resource/resourceStoreSpecificationManageLang.js new file mode 100644 index 0000000..6783c14 --- /dev/null +++ b/src/views/resource/resourceStoreSpecificationManageLang.js @@ -0,0 +1,66 @@ +export const messages = { + en: { + resourceStoreSpecificationManage: { + queryConditions: 'Query Conditions', + more: 'More', + hide: 'Hide', + selectItemType: 'Select Item Type', + selectSubCategory: 'Select Sub-category', + specNamePlaceholder: 'Enter Specification Name', + specIdPlaceholder: 'Enter Specification ID', + query: 'Query', + reset: 'Reset', + itemSpecifications: 'Item Specifications', + add: 'Add', + specId: 'Specification ID', + typeName: 'Type Name', + specName: 'Specification Name', + description: 'Description', + operation: 'Operation', + edit: 'Edit', + delete: 'Delete', + addSpec: 'Add Specification', + itemType: 'Item Type', + descriptionPlaceholder: 'Description (optional)', + save: 'Save', + cancel: 'Cancel', + editItemSpec: 'Edit Item Specification', + confirmDeleteTitle: 'Confirm Operation', + confirmDeleteMsg: 'Confirm to delete this specification?', + cancelDelete: 'Cancel', + confirmDelete: 'Confirm Delete' + } + }, + zh: { + resourceStoreSpecificationManage: { + queryConditions: '查询条件', + more: '更多', + hide: '隐藏', + selectItemType: '请选择物品类型', + selectSubCategory: '请选择二级分类', + specNamePlaceholder: '请输入规格名称', + specIdPlaceholder: '请输入规格编号', + query: '查询', + reset: '重置', + itemSpecifications: '物品规格', + add: '添加', + specId: '规格编号', + typeName: '类型名称', + specName: '规格名称', + description: '描述', + operation: '操作', + edit: '修改', + delete: '删除', + addSpec: '添加规格', + itemType: '商品类型', + descriptionPlaceholder: '选填,请填写描述', + save: '保存', + cancel: '取消', + editItemSpec: '修改物品规格', + confirmDeleteTitle: '请确认您的操作', + confirmDeleteMsg: '确定删除物品规格', + cancelDelete: '点错了', + confirmDelete: '确认删除' + } + } +} \ No newline at end of file diff --git a/src/views/resource/resourceStoreSpecificationManageList.vue b/src/views/resource/resourceStoreSpecificationManageList.vue new file mode 100644 index 0000000..577cf30 --- /dev/null +++ b/src/views/resource/resourceStoreSpecificationManageList.vue @@ -0,0 +1,275 @@ + + + + + \ No newline at end of file diff --git a/src/views/resource/storehouseManageLang.js b/src/views/resource/storehouseManageLang.js new file mode 100644 index 0000000..dd2e7c0 --- /dev/null +++ b/src/views/resource/storehouseManageLang.js @@ -0,0 +1,84 @@ +export const messages = { + en: { + storehouseManage: { + searchTitle: 'Query Conditions', + listTitle: 'Warehouse Information', + placeholders: { + shName: 'Please enter warehouse name', + shId: 'Please enter warehouse ID', + isShow: 'Please select whether it is open to the public' + }, + options: { + all: 'All', + yes: 'Yes', + no: 'No', + noAudit: 'No audit' + }, + buttons: { + search: 'Search', + reset: 'Reset', + add: 'Add', + edit: 'Edit', + delete: 'Delete', + detail: 'Details' + }, + table: { + shId: 'Warehouse ID', + shName: 'Warehouse Name', + isShow: 'Open to Public', + allowPurchase: 'Allow Purchase', + allowUse: 'Allow Use', + purchaseSwitch: 'Purchase Audit', + useSwitch: 'Use Audit', + allocationSwitch: 'Allocation Audit', + createTime: 'Creation Time', + shDesc: 'Description', + operations: 'Operations' + }, + messages: { + fetchError: 'Failed to fetch warehouse data' + } + } + }, + zh: { + storehouseManage: { + searchTitle: '查询条件', + listTitle: '仓库信息', + placeholders: { + shName: '请输入仓库名称', + shId: '请输入仓库编号', + isShow: '请选择是否对外开放' + }, + options: { + all: '全部', + yes: '是', + no: '否', + noAudit: '不审核' + }, + buttons: { + search: '查询', + reset: '重置', + add: '添加', + edit: '修改', + delete: '删除', + detail: '详情' + }, + table: { + shId: '仓库编号', + shName: '仓库名称', + isShow: '对外开放', + allowPurchase: '允许采购', + allowUse: '允许领用', + purchaseSwitch: '采购审核', + useSwitch: '领用审核', + allocationSwitch: '调拨审核', + createTime: '创建时间', + shDesc: '描述', + operations: '操作' + }, + messages: { + fetchError: '获取仓库数据失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/resource/storehouseManageList.vue b/src/views/resource/storehouseManageList.vue new file mode 100644 index 0000000..08ae674 --- /dev/null +++ b/src/views/resource/storehouseManageList.vue @@ -0,0 +1,232 @@ + + + + + \ No newline at end of file