diff --git a/src/api/resource/addPurchaseApplyApi.js b/src/api/resource/addPurchaseApplyApi.js new file mode 100644 index 0000000..14b374f --- /dev/null +++ b/src/api/resource/addPurchaseApplyApi.js @@ -0,0 +1,110 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取仓库列表 +export function listStorehouses(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.listStorehouses', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取物品类型列表 +export function listResourceStoreTypes(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStoreType.listResourceStoreTypes', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取供应商列表 +export function listResourceSuppliers(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceSupplier.listResourceSuppliers', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询第一审批人 +export function queryFirstAuditStaff(params) { + return new Promise((resolve, reject) => { + request({ + url: '/oaWorkflow.queryFirstAuditStaff', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询员工信息 +export function queryStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 提交采购申请 +export function purchaseApply(data) { + return new Promise((resolve, reject) => { + request({ + url: '/purchase/purchaseApply', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/resource/purchaseApplyDetailApi.js b/src/api/resource/purchaseApplyDetailApi.js new file mode 100644 index 0000000..e1f7c97 --- /dev/null +++ b/src/api/resource/purchaseApplyDetailApi.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取采购申请详情列表 +export function listPurchaseApplys(params) { + return new Promise((resolve, reject) => { + request({ + url: '/purchaseApply.listPurchaseApplys', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 审核采购申请 +export function auditApplyOrder(data) { + return new Promise((resolve, reject) => { + request({ + url: '/purchaseApply.auditApplyOrder', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作流审核信息 +export function listWorkflowAuditInfo(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workflow.listWorkflowAuditInfo', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询下一处理人 +export function queryNextDealUser(params) { + return new Promise((resolve, reject) => { + request({ + url: '/oaWorkflow.queryNextDealUser', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取组织树 +export function listOrgTree(params) { + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询员工信息 +export function queryStaffInfos(params) { + return new Promise((resolve, reject) => { + request({ + url: '/query.staff.infos', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/resource/purchaseApplyManageApi.js b/src/api/resource/purchaseApplyManageApi.js new file mode 100644 index 0000000..a945ac0 --- /dev/null +++ b/src/api/resource/purchaseApplyManageApi.js @@ -0,0 +1,97 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取采购申请列表 +export function listPurchaseApplys(params) { + return new Promise((resolve, reject) => { + request({ + url: '/purchaseApply.listPurchaseApplys', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新采购申请 +export function updatePurchaseApply(data) { + return new Promise((resolve, reject) => { + request({ + url: '/purchaseApply.updatePurchaseApply', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除采购申请 +export function deletePurchaseApply(data) { + return new Promise((resolve, reject) => { + request({ + url: '/purchaseApply.deletePurchaseApply', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作流图片 +export function getWorkflowImage(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workflow.listRunWorkflowImage', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 导出数据 +export function exportData(params) { + return new Promise((resolve, reject) => { + request({ + url: '/export.exportData', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/resource/resourceSupplierManageApi.js b/src/api/resource/resourceSupplierManageApi.js new file mode 100644 index 0000000..45b8fff --- /dev/null +++ b/src/api/resource/resourceSupplierManageApi.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +// 获取供应商列表 +export function listResourceSuppliers(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceSupplier.listResourceSuppliers', + method: 'get', + params + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '获取供应商列表失败')) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 添加供应商 +export function saveResourceSupplier(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceSupplier.saveResourceSupplier', + 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) + }) + }) +} + +// 更新供应商 +export function updateResourceSupplier(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceSupplier.updateResourceSupplier', + 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) + }) + }) +} + +// 删除供应商 +export function deleteResourceSupplier(data) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceSupplier.deleteResourceSupplier', + 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/urgentPurchaseApplyStepApi.js b/src/api/resource/urgentPurchaseApplyStepApi.js new file mode 100644 index 0000000..606e813 --- /dev/null +++ b/src/api/resource/urgentPurchaseApplyStepApi.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +// 获取仓库列表 +export function listStorehouses(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.listStorehouses', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取物品类型列表 +export function listResourceStoreTypes(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStoreType.listResourceStoreTypes', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取物品列表 +export function listResourceStores(params) { + return new Promise((resolve, reject) => { + request({ + url: '/resourceStore.listResourceStores', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 提交紧急采购申请 +export function urgentPurchaseApply(data) { + return new Promise((resolve, reject) => { + request({ + url: '/purchase/urgentPurchaseApply', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/user/userApi.js b/src/api/user/userApi.js new file mode 100644 index 0000000..3a574d8 --- /dev/null +++ b/src/api/user/userApi.js @@ -0,0 +1,17 @@ +export function getUserId() { + const userInfo = JSON.parse(localStorage.getItem('user')) + + return userInfo.userId +} + +export function getUserName() { + const userInfo = JSON.parse(localStorage.getItem('user')) + + return userInfo.name +} + +export function getUserTel() { + const userInfo = JSON.parse(localStorage.getItem('user')) + + return userInfo.tel +} \ No newline at end of file diff --git a/src/components/resource/AddResourceSupplier.vue b/src/components/resource/AddResourceSupplier.vue new file mode 100644 index 0000000..ffd7d7c --- /dev/null +++ b/src/components/resource/AddResourceSupplier.vue @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('addResourceSupplier.cancel') }} + + + {{ $t('addResourceSupplier.save') }} + + + + + + \ No newline at end of file diff --git a/src/components/resource/DeleteResourceSupplier.vue b/src/components/resource/DeleteResourceSupplier.vue new file mode 100644 index 0000000..9a7f7cf --- /dev/null +++ b/src/components/resource/DeleteResourceSupplier.vue @@ -0,0 +1,60 @@ + + + + {{ $t('deleteResourceSupplier.confirmDelete') }} + + + + {{ $t('deleteResourceSupplier.cancel') }} + + + {{ $t('deleteResourceSupplier.confirm') }} + + + + + + \ No newline at end of file diff --git a/src/components/resource/EditResourceSupplier.vue b/src/components/resource/EditResourceSupplier.vue new file mode 100644 index 0000000..803a986 --- /dev/null +++ b/src/components/resource/EditResourceSupplier.vue @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('editResourceSupplier.cancel') }} + + + {{ $t('editResourceSupplier.save') }} + + + + + + \ No newline at end of file diff --git a/src/components/resource/auditDiv.vue b/src/components/resource/auditDiv.vue new file mode 100644 index 0000000..1c5dc4b --- /dev/null +++ b/src/components/resource/auditDiv.vue @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + {{ $t('auditDiv.select') }} + + + + + + {{ $t('common.cancel') }} + {{ $t('common.submit') }} + + + + + \ No newline at end of file diff --git a/src/components/resource/chooseResourceStore2.vue b/src/components/resource/chooseResourceStore2.vue new file mode 100644 index 0000000..04a7203 --- /dev/null +++ b/src/components/resource/chooseResourceStore2.vue @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + {{ $t('common.reset') }} + + + + + + + + + + + + + + + + + + + + {{ scope.row.parentRstName ? scope.row.parentRstName : '-' }} > + {{ scope.row.rstName ? scope.row.rstName : '-' }} + + + + + + {{ scope.row.rssName ? scope.row.rssName : '-' }} + + + + + + + + {{ scope.row.stock }}{{ scope.row.unitCodeName }} + + + + + + + + + + {{ $t('common.submit') }} + + + + {{ $t('common.cancel') }} + + + + + + + + + + \ No newline at end of file diff --git a/src/components/resource/chooseResourceStore4.vue b/src/components/resource/chooseResourceStore4.vue new file mode 100644 index 0000000..f16aa6b --- /dev/null +++ b/src/components/resource/chooseResourceStore4.vue @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + + {{ $t('common.reset') }} + + + + + + + + + + + + + + + + + {{ scope.row.parentRstName || '-' }} > {{ scope.row.rstName || '-' }} + + + + + + + + {{ scope.row.rssName || '-' }} + + + + + + + + + + + + {{ scope.row.stock }}{{ scope.row.unitCodeName }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/resource/deletePurchaseApply.vue b/src/components/resource/deletePurchaseApply.vue new file mode 100644 index 0000000..109bcc0 --- /dev/null +++ b/src/components/resource/deletePurchaseApply.vue @@ -0,0 +1,66 @@ + + + + {{ $t('purchaseApplyManage.delete.confirmText') }} + + + {{ $t('common.cancel') }} + {{ $t('common.confirm') }} + + + + + + + \ No newline at end of file diff --git a/src/components/resource/editPurchaseApply.vue b/src/components/resource/editPurchaseApply.vue new file mode 100644 index 0000000..b4d245b --- /dev/null +++ b/src/components/resource/editPurchaseApply.vue @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + {{ $t('common.cancel') }} + {{ $t('common.save') }} + + + + + \ No newline at end of file diff --git a/src/components/resource/orgTreeShow.vue b/src/components/resource/orgTreeShow.vue new file mode 100644 index 0000000..079b966 --- /dev/null +++ b/src/components/resource/orgTreeShow.vue @@ -0,0 +1,72 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/components/resource/selectStaff.vue b/src/components/resource/selectStaff.vue new file mode 100644 index 0000000..ac7d358 --- /dev/null +++ b/src/components/resource/selectStaff.vue @@ -0,0 +1,160 @@ + + + + + + + + + {{ $t('selectStaff.orgInfo') }} + + + + + + + + {{ $t('selectStaff.staffInfo') }} + + + + + + {{ item.name }} + + {{ item.tel }} + + + + + + + + + + + {{ $t('selectStaff.submitter') }} + + + {{ $t('selectStaff.dynamicAssign') }} + + + + + + + + \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 138d681..a29e99a 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -182,6 +182,12 @@ import { messages as resourceStoreSpecificationManageMessages } from '../views/r import { messages as resourceStoreManageMessages } from '../views/resource/resourceStoreManageLang' import { messages as inspectionPointMessages } from '../views/inspection/inspectionPointLang' import { messages as inspectionRouteMessages } from '../views/inspection/inspectionRouteLang' +import { messages as resourceSupplierManageMessages } from '../views/resource/resourceSupplierManageLang' +import { messages as purchaseApplyManageMessages } from '../views/resource/purchaseApplyManageLang' +import { messages as addPurchaseApplyMessages } from '../views/resource/addPurchaseApplyLang' +import { messages as urgentPurchaseApplyStepMessages } from '../views/resource/urgentPurchaseApplyStepLang' +import { messages as purchaseApplyDetailMessages } from '../views/resource/purchaseApplyDetailLang' + Vue.use(VueI18n) // 合并所有语言配置 @@ -367,6 +373,11 @@ const messages = { ...resourceStoreManageMessages.en, ...inspectionPointMessages.en, ...inspectionRouteMessages.en, + ...resourceSupplierManageMessages.en, + ...purchaseApplyManageMessages.en, + ...addPurchaseApplyMessages.en, + ...urgentPurchaseApplyStepMessages.en, + ...purchaseApplyDetailMessages.en, }, zh: { ...loginMessages.zh, @@ -549,6 +560,11 @@ const messages = { ...resourceStoreManageMessages.zh, ...inspectionPointMessages.zh, ...inspectionRouteMessages.zh, + ...resourceSupplierManageMessages.zh, + ...purchaseApplyManageMessages.zh, + ...addPurchaseApplyMessages.zh, + ...urgentPurchaseApplyStepMessages.zh, + ...purchaseApplyDetailMessages.zh, } } diff --git a/src/router/index.js b/src/router/index.js index 5472187..5a00a24 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -892,15 +892,40 @@ const routes = [ component: () => import('@/views/resource/resourceStoreManageList.vue') }, { - path:'/pages/inspection/inspectionPoint', - name:'/pages/inspection/inspectionPoint', + path: '/pages/inspection/inspectionPoint', + name: '/pages/inspection/inspectionPoint', component: () => import('@/views/inspection/inspectionPointList.vue') - }, - { - path:'/pages/inspection/inspectionRoute', - name:'/pages/inspection/inspectionRoute', - component: () => import('@/views/inspection/inspectionRouteList.vue') - }, + }, + { + path: '/pages/inspection/inspectionRoute', + name: '/pages/inspection/inspectionRoute', + component: () => import('@/views/inspection/inspectionRouteList.vue') + }, + { + path: '/pages/property/resourceSupplierManage', + name: '/pages/property/resourceSupplierManage', + component: () => import('@/views/resource/resourceSupplierManageList.vue') + }, + { + path: '/pages/common/purchaseApplyManage', + name: '/pages/common/purchaseApplyManage', + component: () => import('@/views/resource/purchaseApplyManageList.vue') + }, + { + path: '/views/resource/addPurchaseApply', + name: '/views/resource/addPurchaseApply', + component: () => import('@/views/resource/addPurchaseApplyList.vue') + }, + { + path: '/views/resource/urgentPurchaseApplyStep', + name: '/views/resource/urgentPurchaseApplyStep', + component: () => import('@/views/resource/urgentPurchaseApplyStepList.vue') + }, + { + path: '/views/resource/purchaseApplyDetail', + name: '/views/resource/purchaseApplyDetail', + component: () => import('@/views/resource/purchaseApplyDetailList.vue') + }, // 其他子路由可以在这里添加 ] }, diff --git a/src/views/resource/addPurchaseApplyLang.js b/src/views/resource/addPurchaseApplyLang.js new file mode 100644 index 0000000..7f2665a --- /dev/null +++ b/src/views/resource/addPurchaseApplyLang.js @@ -0,0 +1,126 @@ +export const messages = { + en: { + addPurchaseApply: { + purchaser: 'Purchaser', + return: 'Return', + warehouse: 'Warehouse', + requiredSelectWarehouse: 'Required, please select warehouse', + contact: 'Contact', + requiredContact: 'Required, please enter contact', + phone: 'Phone', + requiredPhone: 'Required, please enter phone', + applyDesc: 'Application Description', + requiredDesc: 'Required, please enter description', + purchaseItems: 'Purchase Items', + select: 'Select', + itemType: 'Item Type', + itemNameCode: 'Item Name(Code)', + itemSpec: 'Item Specification', + price: 'Price', + selectPrice: 'Please select price', + itemStock: 'Item Stock', + applyQuantity: 'Apply Quantity', + requiredQuantity: 'Required, please enter quantity', + remark: 'Remark', + optionalRemark: 'Optional, please enter remark', + operation: 'Operation', + remove: 'Remove', + approver: 'Approver', + requiredApprover: 'Required, please select approver', + submit: 'Submit', + noItemsSelected: 'No items selected!', + sameWarehouseRequired: 'Purchased items must come from the same warehouse!', + selectPriceRequired: 'Please select price!', + quantityRequired: 'Please enter quantity!', + selectWarehouseRequired: 'Please select warehouse!', + contactRequired: 'Please enter contact!', + phoneRequired: 'Please enter phone!', + descRequired: 'Please enter description!' + }, + chooseResourceStore2: { + title: '[Item Collection/Purchase Application/Direct Outbound] Select Items', + selectWarehouse: 'Please select warehouse', + selectItemType: 'Please select item type', + selectSubType: 'Please select sub type', + inputItemName: 'Enter item management name', + warehouse: 'Warehouse', + itemType: 'Item Type', + itemName: 'Item Name', + itemSpec: 'Item Specification', + itemCode: 'Item Code', + fixedItem: 'Fixed Item', + itemPrice: 'Item Price', + itemStock: 'Item Stock', + selectItemsRequired: 'Please select items to purchase' + }, + selectStaff: { + title: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assignment' + } + }, + zh: { + addPurchaseApply: { + purchaser: '采购人', + return: '返回', + warehouse: '仓库', + requiredSelectWarehouse: '必填,请选择仓库', + contact: '联系人', + requiredContact: '必填,请填写联系人', + phone: '联系电话', + requiredPhone: '必填,请填写联系电话', + applyDesc: '申请说明', + requiredDesc: '必填,请填写申请说明', + purchaseItems: '采购物品', + select: '选择', + itemType: '物品类型', + itemNameCode: '物品名称(编码)', + itemSpec: '物品规格', + price: '价格', + selectPrice: '请选择价格', + itemStock: '物品库存', + applyQuantity: '申请数量', + requiredQuantity: '必填,请填写申请数量', + remark: '备注', + optionalRemark: '选填,请填写备注', + operation: '操作', + remove: '移除', + approver: '审批人', + requiredApprover: '必填,请选择审批人', + submit: '提交', + noItemsSelected: '未选择采购物品!', + sameWarehouseRequired: '采购商品需来自同一仓库!', + selectPriceRequired: '请选择价格!', + quantityRequired: '请填写申请数量!', + selectWarehouseRequired: '请选择仓库!', + contactRequired: '请填写联系人!', + phoneRequired: '请填写联系电话!', + descRequired: '请填写申请说明!' + }, + chooseResourceStore2: { + title: '【物品领用/采购申请/直接出库】选择物品', + selectWarehouse: '请选择仓库', + selectItemType: '请选择物品类型', + selectSubType: '请选择二级分类', + inputItemName: '输入物品管理名称', + warehouse: '仓库', + itemType: '物品类型', + itemName: '物品名称', + itemSpec: '物品规格', + itemCode: '物品编码', + fixedItem: '固定物品', + itemPrice: '物品价格', + itemStock: '物品库存', + selectItemsRequired: '请选择需要采购的物品' + }, + selectStaff: { + title: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定' + } + } +} \ No newline at end of file diff --git a/src/views/resource/addPurchaseApplyList.vue b/src/views/resource/addPurchaseApplyList.vue new file mode 100644 index 0000000..b3e2468 --- /dev/null +++ b/src/views/resource/addPurchaseApplyList.vue @@ -0,0 +1,451 @@ + + + + + {{ $t('addPurchaseApply.purchaser') }} + + + + {{ $t('common.back') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('addPurchaseApply.purchaseItems') }} + + + + {{ $t('addPurchaseApply.select') }} + + + + + + + + {{ scope.row.parentRstName ? scope.row.parentRstName : '-' }} > + {{ scope.row.rstName ? scope.row.rstName : '-' }} + + + + + {{ scope.row.resName }}({{ scope.row.resCode }}) + + + + + {{ scope.row.rssName ? scope.row.rssName : '-' }} + + + + + + + + + + + + + + {{ _getTimesStock(scope.row) }}{{ scope.row.unitCodeName }} + + + + + + {{ scope.row.unitCodeName }} + + + + + + + + + + + {{ $t('addPurchaseApply.remove') }} + + + + + + + + + + + + {{ $t('addPurchaseApply.approver') }} + + + + + + + + + + + {{ $t('common.select') }} + + + + + + + + + + + + + {{ $t('addPurchaseApply.submit') }} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/resource/purchaseApplyDetailLang.js b/src/views/resource/purchaseApplyDetailLang.js new file mode 100644 index 0000000..94b9d91 --- /dev/null +++ b/src/views/resource/purchaseApplyDetailLang.js @@ -0,0 +1,152 @@ +export const messages = { + en: { + purchaseApplyDetail: { + applyInfo: 'Application Information', + print: 'Print', + back: 'Back', + applyNo: 'Application No:', + applicant: 'Applicant:', + endUser: 'End User:', + contactPhone: 'Contact Phone:', + applyTime: 'Application Time:', + referenceTotalPrice: 'Reference Total Price:', + approvalStatus: 'Approval Status:', + storageMethod: 'Storage Method', + outboundMethod: 'Outbound Method', + directStorage: 'Direct Storage', + purchaseStorage: 'Purchase Storage', + emergencyPurchase: 'Emergency Purchase', + directOutbound: 'Direct Outbound', + auditOutbound: 'Audit Outbound', + description: 'Description:', + referencePurchaseTotalPrice: 'Reference Purchase Total Price:', + actualPurchaseTotalPrice: 'Actual Purchase Total Price:', + applyMaterials: 'Application Materials', + itemType: 'Item Type', + itemName: 'Item Name', + warehouse: 'Warehouse', + itemSpec: 'Item Specification', + supplier: 'Supplier', + itemCode: 'Item Code', + fixedItem: 'Fixed Item', + referencePrice: 'Reference Price', + originalStock: 'Original Stock', + currentStock: 'Current Stock', + applyQuantity: 'Apply Quantity', + applyRemark: 'Apply Remark', + purchasePrice: 'Purchase Price', + purchaseQuantity: 'Purchase Quantity', + receiveQuantity: 'Receive Quantity', + purchaseRemark: 'Purchase Remark', + receiveRemark: 'Receive Remark', + workOrderFlow: 'Work Order Flow', + serialNumber: 'No.', + handler: 'Handler', + status: 'Status', + handleTime: 'Handle Time', + timeConsuming: 'Time Consuming', + opinion: 'Opinion' + }, + auditDiv: { + workOrderProcessing: 'Work Order Processing', + action: 'Action', + pleaseSelect: 'Please Select', + agree: 'Agree', + return: 'Return', + returnToSubmitter: 'Return to Submitter', + transfer: 'Transfer', + workOrderDescription: 'Work Order Description', + requiredDescription: 'Required, please fill in the work order description', + nextHandler: 'Next Handler', + requiredNextHandler: 'Required, please select the next handler', + select: 'Select', + pleaseSelectStatus: 'Please select status', + pleaseFillDescription: 'Please fill in the description', + pleaseSelectNextHandler: 'Please select next handler', + submitSuccess: 'Submit successfully', + submitFailed: 'Submit failed' + }, + selectStaff: { + selectStaff: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assign' + } + }, + zh: { + purchaseApplyDetail: { + applyInfo: '申请信息', + print: '打印', + back: '返回', + applyNo: '申请单号:', + applicant: '申请人:', + endUser: '使用人:', + contactPhone: '联系电话:', + applyTime: '申请时间:', + referenceTotalPrice: '参考总价:', + approvalStatus: '审批状态:', + storageMethod: '入库方式', + outboundMethod: '出库方式', + directStorage: '直接入库', + purchaseStorage: '采购入库', + emergencyPurchase: '紧急采购', + directOutbound: '直接出库', + auditOutbound: '审核出库', + description: '说明:', + referencePurchaseTotalPrice: '参考采购总价:', + actualPurchaseTotalPrice: '实际采购总价:', + applyMaterials: '申请物资', + itemType: '物品类型', + itemName: '物品名称', + warehouse: '所属仓库', + itemSpec: '物品规格', + supplier: '供应商', + itemCode: '物品编码', + fixedItem: '固定物品', + referencePrice: '参考单价', + originalStock: '原有库存', + currentStock: '现有库存', + applyQuantity: '申请数量', + applyRemark: '申请备注', + purchasePrice: '采购单价', + purchaseQuantity: '采购数量', + receiveQuantity: '领用数量', + purchaseRemark: '采购备注', + receiveRemark: '领用备注', + workOrderFlow: '工单流转', + serialNumber: '序号', + handler: '处理人', + status: '状态', + handleTime: '处理时间', + timeConsuming: '耗时', + opinion: '意见' + }, + auditDiv: { + workOrderProcessing: '工单办理', + action: '动作', + pleaseSelect: '请选择', + agree: '同意', + return: '退回', + returnToSubmitter: '退回至提交者', + transfer: '转单', + workOrderDescription: '工单说明', + requiredDescription: '必填,请填写工单说明', + nextHandler: '下一处理人', + requiredNextHandler: '必填,请选择下一处理人', + select: '选择', + pleaseSelectStatus: '请选择状态', + pleaseFillDescription: '请填写说明', + pleaseSelectNextHandler: '请选择下一节点处理人', + submitSuccess: '提交成功', + submitFailed: '提交失败' + }, + selectStaff: { + selectStaff: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定' + } + } +} \ No newline at end of file diff --git a/src/views/resource/purchaseApplyDetailList.vue b/src/views/resource/purchaseApplyDetailList.vue new file mode 100644 index 0000000..5ffb92c --- /dev/null +++ b/src/views/resource/purchaseApplyDetailList.vue @@ -0,0 +1,338 @@ + + + + + + {{ $t('purchaseApplyDetail.applyInfo') }} + + + + {{ $t('purchaseApplyDetail.print') }} + + + + {{ $t('purchaseApplyDetail.back') }} + + + + + + + + {{ $t('purchaseApplyDetail.applyNo') }} + {{ purchaseApplyDetailInfo.applyOrderId }} + + + + + {{ $t('purchaseApplyDetail.applicant') }} + {{ purchaseApplyDetailInfo.userName }} + + + + + {{ $t('purchaseApplyDetail.endUser') }} + {{ purchaseApplyDetailInfo.endUserName }} + + + + + + + {{ $t('purchaseApplyDetail.contactPhone') }} + {{ purchaseApplyDetailInfo.endUserTel }} + + + + + {{ $t('purchaseApplyDetail.applyTime') }} + {{ purchaseApplyDetailInfo.createTime }} + + + + + {{ $t('purchaseApplyDetail.referenceTotalPrice') }} + ¥{{ purchaseApplyDetailInfo.totalPrice }} + + + + + {{ $t('purchaseApplyDetail.approvalStatus') }} + {{ purchaseApplyDetailInfo.stateName }} + + + + + {{ purchaseApplyDetailInfo.resOrderType == 10000 ? $t('purchaseApplyDetail.storageMethod') : + $t('purchaseApplyDetail.outboundMethod') }} + + {{ purchaseApplyDetailInfo.resOrderType == 10000 ? + (purchaseApplyDetailInfo.warehousingWay == 10000 ? $t('purchaseApplyDetail.directStorage') : + purchaseApplyDetailInfo.warehousingWay == 20000 ? $t('purchaseApplyDetail.purchaseStorage') : + $t('purchaseApplyDetail.emergencyPurchase')) : + (purchaseApplyDetailInfo.warehousingWay == 10000 ? $t('purchaseApplyDetail.directOutbound') : + $t('purchaseApplyDetail.auditOutbound')) }} + + + + + + {{ $t('purchaseApplyDetail.description') }} + {{ purchaseApplyDetailInfo.description }} + + + + + + + {{ $t('purchaseApplyDetail.referencePurchaseTotalPrice') }} + {{ purchaseApplyDetailInfo.totalPrice > 0 ? '¥' + purchaseApplyDetailInfo.totalPrice : '-' }} + + + + + {{ $t('purchaseApplyDetail.actualPurchaseTotalPrice') }} + {{ purchaseApplyDetailInfo.purchaseTotalPrice > 0 ? '¥' + purchaseApplyDetailInfo.purchaseTotalPrice : + '-' }} + + + + + + + + + + {{ $t('purchaseApplyDetail.applyMaterials') }} + + + + + + {{ scope.row.parentRstName }} > {{ scope.row.rstName }} + + + + + + + {{ scope.row.specName || '-' }} + + + + + {{ scope.row.supplierName || '-' }} + + + + + + + {{ scope.row.consultPrice ? '¥' + scope.row.consultPrice : '-' }} + + + + + {{ scope.row.originalStock }}{{ scope.row.unitCodeName }} + + + + + {{ scope.row.stock ? scope.row.stock : '0' }}{{ scope.row.unitCodeName }} + + + + + {{ scope.row.quantity }}{{ scope.row.unitCodeName }} + + + + + + {{ scope.row.purchasePrice ? '¥' + scope.row.purchasePrice : '-' }} + + + + + {{ scope.row.purchaseQuantity ? scope.row.purchaseQuantity + scope.row.unitCodeName : '-' }} + + + + + {{ scope.row.purchaseRemark || '-' }} + + + + + + + + + + {{ $t('purchaseApplyDetail.workOrderFlow') }} + + + + + + + {{ scope.row.userName || scope.row.auditName }} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/resource/purchaseApplyManageLang.js b/src/views/resource/purchaseApplyManageLang.js new file mode 100644 index 0000000..2a7eea6 --- /dev/null +++ b/src/views/resource/purchaseApplyManageLang.js @@ -0,0 +1,106 @@ +export const messages = { + en: { + purchaseApplyManage: { + search: { + title: 'Search Conditions', + applyOrderId: 'Please enter application order number', + name: 'Please enter applicant name', + resName: 'Please enter item name', + startTime: 'Please select start time', + endTime: 'Please select end time' + }, + list: { + title: 'Purchase Application' + }, + table: { + applyOrderId: 'Application Order No.', + userName: 'Applicant', + endUserName: 'User', + createUserName: 'Operator', + resourceNames: 'Item(Specification)', + createTime: 'Application Time', + warehousingWay: 'Purchase Method', + stateName: 'Approval Status' + }, + button: { + purchase: 'Purchase', + urgentPurchase: 'Urgent Purchase', + flowChart: 'Flow Chart', + cancelApply: 'Cancel Application', + export: 'Export' + }, + warehousingWay: { + direct: 'Direct Storage', + purchase: 'Purchase Storage', + urgent: 'Urgent Purchase' + }, + edit: { + title: 'Edit Purchase Application', + state: 'Order Status', + stateRequired: 'Required, please select order status', + stateOption1: 'Area*Unit Price+Surcharge', + stateOption2: 'Fixed Fee', + stateFormatError: 'Order status format error', + applyOrderIdRequired: 'Order number cannot be empty' + }, + delete: { + title: 'Please confirm your operation', + confirmText: 'Are you sure to cancel the application?', + success: 'Cancel application successfully', + error: 'Failed to cancel application' + } + } + }, + zh: { + purchaseApplyManage: { + search: { + title: '查询条件', + applyOrderId: '请输入申请单号', + name: '请填写申请人姓名', + resName: '请填写物品名称', + startTime: '请选择开始时间', + endTime: '请选择结束时间' + }, + list: { + title: '采购申请' + }, + table: { + applyOrderId: '申请单号', + userName: '申请人', + endUserName: '使用人', + createUserName: '操作人', + resourceNames: '物品(规格)', + createTime: '申请时间', + warehousingWay: '采购方式', + stateName: '审批状态' + }, + button: { + purchase: '采购', + urgentPurchase: '紧急采购', + flowChart: '流程图', + cancelApply: '取消申请', + export: '导出' + }, + warehousingWay: { + direct: '直接入库', + purchase: '采购入库', + urgent: '紧急采购' + }, + edit: { + title: '修改采购申请', + state: '订单状态', + stateRequired: '必填,请选择订单状态', + stateOption1: '面积*单价+附加费', + stateOption2: '固定费用', + stateFormatError: '订单状态格式错误', + applyOrderIdRequired: '订单号不能为空' + }, + delete: { + title: '请确认您的操作', + confirmText: '确定取消申请?', + success: '取消申请成功', + error: '取消申请失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/resource/purchaseApplyManageList.vue b/src/views/resource/purchaseApplyManageList.vue new file mode 100644 index 0000000..e536535 --- /dev/null +++ b/src/views/resource/purchaseApplyManageList.vue @@ -0,0 +1,347 @@ + + + + + + + + + + + + {{ item.name }} + + + + + + + + + + {{ $t('purchaseApplyManage.search.title') }} + + + + + + + + + + + + + + + + + + + + {{ $t('common.search') }} + + + {{ $t('common.reset') }} + + + + + + + + {{ $t('purchaseApplyManage.list.title') }} + + + {{ $t('purchaseApplyManage.button.purchase') }} + + + {{ $t('purchaseApplyManage.button.urgentPurchase') }} + + + {{ $t('common.export') }} + + + + + + + + + + + + + {{ + scope.row.warehousingWay == 10000 + ? $t('purchaseApplyManage.warehousingWay.direct') + : scope.row.warehousingWay == 20000 + ? $t('purchaseApplyManage.warehousingWay.purchase') + : $t('purchaseApplyManage.warehousingWay.urgent') + }} + + + + + + + {{ $t('common.view') }} + + + {{ $t('purchaseApplyManage.button.flowChart') }} + + + {{ $t('purchaseApplyManage.button.cancelApply') }} + + + {{ $t('purchaseApplyManage.button.cancelApply') }} + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/resource/resourceSupplierManageLang.js b/src/views/resource/resourceSupplierManageLang.js new file mode 100644 index 0000000..b555d62 --- /dev/null +++ b/src/views/resource/resourceSupplierManageLang.js @@ -0,0 +1,116 @@ +export const messages = { + en: { + resourceSupplierManage: { + searchTitle: 'Search Conditions', + supplierNo: 'Supplier No', + supplierName: 'Supplier Name', + phone: 'Phone', + search: 'Search', + reset: 'Reset', + supplier: 'Supplier', + add: 'Add', + no: 'No', + name: 'Name', + address: 'Address', + contact: 'Contact', + contactName: 'Contact Name', + bank: 'Bank', + account: 'Account', + remark: 'Remark', + operation: 'Operation', + edit: 'Edit', + delete: 'Delete' + }, + addResourceSupplier: { + title: 'Add Supplier', + supplierName: 'Supplier Name', + supplierAddress: 'Supplier Address', + supplierContact: 'Supplier Contact', + contactName: 'Contact Name', + bank: 'Bank', + bankAccount: 'Bank Account', + remark: 'Remark', + required: 'Required', + optional: 'Optional', + save: 'Save', + cancel: 'Cancel' + }, + editResourceSupplier: { + title: 'Edit Supplier', + supplierName: 'Supplier Name', + supplierAddress: 'Supplier Address', + supplierContact: 'Supplier Contact', + contactName: 'Contact Name', + bank: 'Bank', + bankAccount: 'Bank Account', + remark: 'Remark', + required: 'Required', + optional: 'Optional', + save: 'Save', + cancel: 'Cancel' + }, + deleteResourceSupplier: { + title: 'Confirm Operation', + confirmDelete: 'Confirm to delete supplier', + cancel: 'Cancel', + confirm: 'Confirm' + } + }, + zh: { + resourceSupplierManage: { + searchTitle: '查询条件', + supplierNo: '供应商编号', + supplierName: '供应商名称', + phone: '手机号', + search: '查询', + reset: '重置', + supplier: '供应商', + add: '添加', + no: '编号', + name: '名称', + address: '地址', + contact: '联系方式', + contactName: '联系人姓名', + bank: '开户行', + account: '账号', + remark: '备注', + operation: '操作', + edit: '修改', + delete: '删除' + }, + addResourceSupplier: { + title: '添加供应商', + supplierName: '供应商名称', + supplierAddress: '供应商地址', + supplierContact: '供应商联系方式', + contactName: '联系人姓名', + bank: '开户行', + bankAccount: '开户行账号', + remark: '备注', + required: '必填', + optional: '选填', + save: '保存', + cancel: '取消' + }, + editResourceSupplier: { + title: '修改供应商', + supplierName: '供应商名称', + supplierAddress: '供应商地址', + supplierContact: '供应商联系方式', + contactName: '联系人姓名', + bank: '开户行', + bankAccount: '开户行账号', + remark: '备注', + required: '必填', + optional: '选填', + save: '保存', + cancel: '取消' + }, + deleteResourceSupplier: { + title: '请确认您的操作', + confirmDelete: '确定删除供应商', + cancel: '点错了', + confirm: '确认删除' + } + } +} \ No newline at end of file diff --git a/src/views/resource/resourceSupplierManageList.vue b/src/views/resource/resourceSupplierManageList.vue new file mode 100644 index 0000000..3c4fb20 --- /dev/null +++ b/src/views/resource/resourceSupplierManageList.vue @@ -0,0 +1,182 @@ + + + + + + {{ $t('resourceSupplierManage.searchTitle') }} + + + + + + + + + + + + + + + {{ $t('resourceSupplierManage.search') }} + + + + {{ $t('resourceSupplierManage.reset') }} + + + + + + + + + {{ $t('resourceSupplierManage.supplier') }} + + + {{ $t('resourceSupplierManage.add') }} + + + + + + + + + + + + + + + + {{ $t('resourceSupplierManage.edit') }} + + + {{ $t('resourceSupplierManage.delete') }} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/views/resource/urgentPurchaseApplyStepLang.js b/src/views/resource/urgentPurchaseApplyStepLang.js new file mode 100644 index 0000000..3ccdbc7 --- /dev/null +++ b/src/views/resource/urgentPurchaseApplyStepLang.js @@ -0,0 +1,100 @@ +export const messages = { + en: { + urgentPurchaseApplyStep: { + applyInfo: 'Application Information', + warehouse: 'Warehouse', + requiredSelectWarehouse: 'Required, please select warehouse', + contact: 'Contact', + requiredContact: 'Required, please fill in contact', + phone: 'Phone', + requiredPhone: 'Required, please fill in phone number', + applyDesc: 'Application Description', + requiredDesc: 'Required, please fill in application description', + purchaseItems: 'Purchase Items', + select: 'Select', + itemType: 'Item Type', + nameCode: 'Name(Code)', + spec: 'Specification', + referencePrice: 'Reference Price', + stock: 'Stock', + applyQuantity: 'Apply Quantity', + requiredQuantity: 'Required, please fill in quantity', + purchasePrice: 'Purchase Price', + requiredPrice: 'Required, please fill in price', + targetWarehouse: 'Target Warehouse', + requiredTargetWarehouse: 'Required, please select target warehouse', + remark: 'Remark', + optionalRemark: 'Optional, please fill in remark', + operation: 'Operation', + remove: 'Remove', + submit: 'Submit', + requiredSelectItems: 'Please select purchase items', + sameWarehouseRequired: 'Purchased items must come from the same warehouse!' + }, + chooseResourceStore4: { + title: '[Urgent Purchase] Select Items', + selectWarehouse: 'Please select warehouse', + selectItemType: 'Please select item type', + selectSubType: 'Please select sub category', + inputItemName: 'Input item name', + warehouse: 'Warehouse', + itemType: 'Item Type', + itemName: 'Item Name', + spec: 'Specification', + code: 'Code', + fixedItem: 'Fixed Item', + price: 'Price', + stock: 'Stock', + selectItemsRequired: 'Please select items to purchase' + } + }, + zh: { + urgentPurchaseApplyStep: { + applyInfo: '申请信息', + warehouse: '仓库', + requiredSelectWarehouse: '必填,请选择仓库', + contact: '联系人', + requiredContact: '必填,请填写联系人', + phone: '联系电话', + requiredPhone: '必填,请填写联系电话', + applyDesc: '申请说明', + requiredDesc: '必填,请填写申请说明', + purchaseItems: '采购物品', + select: '选择', + itemType: '物品类型', + nameCode: '名称(编码)', + spec: '物品规格', + referencePrice: '参考价格', + stock: '物品库存', + applyQuantity: '申请数量', + requiredQuantity: '必填,请填写申请数量', + purchasePrice: '采购单价', + requiredPrice: '必填,请填写采购单价', + targetWarehouse: '目标仓库', + requiredTargetWarehouse: '必填,请选择目标仓库', + remark: '备注', + optionalRemark: '选填,请填写备注', + operation: '操作', + remove: '移除', + submit: '提交', + requiredSelectItems: '请选择采购物品', + sameWarehouseRequired: '采购商品需来自同一仓库!' + }, + chooseResourceStore4: { + title: '【紧急采购】选择物品', + selectWarehouse: '请选择仓库', + selectItemType: '请选择物品类型', + selectSubType: '请选择二级分类', + inputItemName: '输入物品管理名称', + warehouse: '仓库', + itemType: '物品类型', + itemName: '物品名称', + spec: '物品规格', + code: '物品编码', + fixedItem: '固定物品', + price: '物品价格', + stock: '物品库存', + selectItemsRequired: '请选择需要采购的物品' + } + } +} \ No newline at end of file diff --git a/src/views/resource/urgentPurchaseApplyStepList.vue b/src/views/resource/urgentPurchaseApplyStepList.vue new file mode 100644 index 0000000..293fad1 --- /dev/null +++ b/src/views/resource/urgentPurchaseApplyStepList.vue @@ -0,0 +1,338 @@ + + + + + + {{ $t('urgentPurchaseApplyStep.applyInfo') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('urgentPurchaseApplyStep.purchaseItems') }} + + + {{ $t('urgentPurchaseApplyStep.select') }} + + + + + + + + {{ scope.row.parentRstName || '-' }} > {{ scope.row.rstName || '-' }} + + + + + + {{ scope.row.resName }}({{ scope.row.resCode }}) + + + + + + {{ scope.row.rssName || '-' }} + + + + + + + + {{ scope.row.stock }}{{ scope.row.unitCodeName }} + + + + + + + {{ scope.row.unitCodeName }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ $t('urgentPurchaseApplyStep.remove') }} + + + + + + + + + + + + + + + \ No newline at end of file
{{ $t('deleteResourceSupplier.confirmDelete') }}
{{ $t('purchaseApplyManage.delete.confirmText') }}