diff --git a/src/api/oa/copyWorkApi.js b/src/api/oa/copyWorkApi.js new file mode 100644 index 0000000..5e5d3e9 --- /dev/null +++ b/src/api/oa/copyWorkApi.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +/** + * 查询抄送工单列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function queryCopyWork(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.queryCopyWork', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +/** + * 提交抄送工单处理结果 + * @param {Object} data 处理数据 + * @returns {Promise} + */ +export function finishWorkCopy(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.finishWorkCopy', + 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/oa/doWorkApi.js b/src/api/oa/doWorkApi.js new file mode 100644 index 0000000..e724395 --- /dev/null +++ b/src/api/oa/doWorkApi.js @@ -0,0 +1,20 @@ +import request from '@/utils/request' + +// 查询工单列表 +export function queryTaskWork(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.queryTaskWork', + method: 'get', + params + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/workDeductionApi.js b/src/api/oa/workDeductionApi.js new file mode 100644 index 0000000..e258c28 --- /dev/null +++ b/src/api/oa/workDeductionApi.js @@ -0,0 +1,89 @@ +import request from '@/utils/request' + +/** + * 获取工单扣款列表 + * @param {Object} params 查询参数 + * @returns {Promise} + */ +export function listWorkDeduction(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.listWorkDeduction', + method: 'get', + params + }) + .then(response => { + const res = response.data + resolve(res) + }) + .catch(error => { + reject(error) + }) + }) +} + +/** + * 添加工单扣款 + * @param {Object} data 扣款数据 + * @returns {Promise} + */ +export function addWorkDeduction(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.saveWorkDeduction', + method: 'post', + data + }) + .then(response => { + const res = response.data + resolve(res) + }) + .catch(error => { + reject(error) + }) + }) +} + +/** + * 更新工单扣款 + * @param {Object} data 扣款数据 + * @returns {Promise} + */ +export function updateWorkDeduction(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.updateWorkDeduction', + method: 'post', + data + }) + .then(response => { + const res = response.data + resolve(res) + }) + .catch(error => { + reject(error) + }) + }) +} + +/** + * 删除工单扣款 + * @param {String} workId 工单ID + * @returns {Promise} + */ +export function deleteWorkDeduction(workId) { + return new Promise((resolve, reject) => { + request({ + url: '/work.deleteWorkDeduction', + method: 'post', + data: { workId } + }) + .then(response => { + const res = response.data + resolve(res) + }) + .catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/workPoolApi.js b/src/api/oa/workPoolApi.js new file mode 100644 index 0000000..0b0e3e6 --- /dev/null +++ b/src/api/oa/workPoolApi.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +// 获取工作单池列表 +export function listWorkTask(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.listWorkTask', + 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/i18n/oaI18n.js b/src/i18n/oaI18n.js index aa3423b..669ce13 100644 --- a/src/i18n/oaI18n.js +++ b/src/i18n/oaI18n.js @@ -42,6 +42,10 @@ import { messages as startWorkMessages } from '../views/oa/startWorkLang' import { messages as addWorkMessages } from '../views/oa/addWorkLang' import { messages as editWorkMessages } from '../views/oa/editWorkLang' import { messages as workDetailMessages } from '../views/oa/workDetailLang' +import { messages as doWorkMessages } from '../views/oa/doWorkLang' +import { messages as copyWorkMessages } from '../views/oa/copyWorkLang' +import { messages as workPoolMessages } from '../views/oa/workPoolLang' +import { messages as workDeductionMessages } from '../views/oa/workDeductionLang' export const messages ={ en:{ ...activitiesTypeManageMessages.en, @@ -87,6 +91,10 @@ export const messages ={ ...addWorkMessages.en, ...editWorkMessages.en, ...workDetailMessages.en, + ...doWorkMessages.en, + ...copyWorkMessages.en, + ...workPoolMessages.en, + ...workDeductionMessages.en, }, zh:{ ...activitiesTypeManageMessages.zh, @@ -132,5 +140,9 @@ export const messages ={ ...addWorkMessages.zh, ...editWorkMessages.zh, ...workDetailMessages.zh, + ...doWorkMessages.zh, + ...copyWorkMessages.zh, + ...workPoolMessages.zh, + ...workDeductionMessages.zh, } } \ No newline at end of file diff --git a/src/router/oaRouter.js b/src/router/oaRouter.js index 16679a7..b731934 100644 --- a/src/router/oaRouter.js +++ b/src/router/oaRouter.js @@ -199,4 +199,24 @@ export default [ name: '/views/oa/workDetail', component: () => import('@/views/oa/workDetailList.vue') }, + { + path: '/pages/oa/doWork', + name: '/pages/oa/doWork', + component: () => import('@/views/oa/doWorkList.vue') + }, + { + path: '/pages/oa/copyWork', + name: '/pages/oa/copyWork', + component: () => import('@/views/oa/copyWorkList.vue') + }, + { + path: '/pages/oa/workPool', + name: '/pages/oa/workPool', + component: () => import('@/views/oa/workPoolList.vue') + }, + { + path: '/pages/oa/workDeduction', + name: '/pages/oa/workDeduction', + component: () => import('@/views/oa/workDeductionList.vue') + }, ] \ No newline at end of file diff --git a/src/views/oa/copyWorkLang.js b/src/views/oa/copyWorkLang.js new file mode 100644 index 0000000..71a6c0a --- /dev/null +++ b/src/views/oa/copyWorkLang.js @@ -0,0 +1,86 @@ +export const messages = { + en: { + copyWork: { + search: { + title: 'Search Conditions', + workName: 'Work Order Name', + createUser: 'Creator', + startTime: 'Start Time', + endTime: 'End Time' + }, + list: { + title: 'Work Orders Copied to Me' + }, + table: { + id: 'ID', + workName: 'Work Order Name', + typeName: 'Type Name', + workCycle: 'Cycle', + startTime: 'Start Time', + endTime: 'End Time', + createUser: 'Creator', + handler: 'Handler', + copyUser: 'Copy To', + status: 'Status', + createTime: 'Create Time' + }, + state: { + all: 'All', + W: 'Pending', + C: 'Processed' + }, + cycle: { + once: 'One-time', + periodic: 'Periodic' + }, + audit: { + title: 'Read Note', + message: 'Note', + messagePlaceholder: 'Required, please fill in the note' + }, + fetchError: 'Failed to fetch work orders' + } + }, + zh: { + copyWork: { + search: { + title: '查询条件', + workName: '工单名称', + createUser: '发起人', + startTime: '开始时间', + endTime: '结束时间' + }, + list: { + title: '抄送我的工作单' + }, + table: { + id: '编号', + workName: '工单名称', + typeName: '类型名称', + workCycle: '标识', + startTime: '开始时间', + endTime: '结束时间', + createUser: '发起人', + handler: '处理人', + copyUser: '抄送人', + status: '状态', + createTime: '创建时间' + }, + state: { + all: '全部', + W: '待处理', + C: '已处理' + }, + cycle: { + once: '一次性工单', + periodic: '周期性工单' + }, + audit: { + title: '已阅说明', + message: '说明', + messagePlaceholder: '必填,请填写说明' + }, + fetchError: '获取工单列表失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/copyWorkList.vue b/src/views/oa/copyWorkList.vue new file mode 100644 index 0000000..3480fa3 --- /dev/null +++ b/src/views/oa/copyWorkList.vue @@ -0,0 +1,369 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/doWorkLang.js b/src/views/oa/doWorkLang.js new file mode 100644 index 0000000..ad550f3 --- /dev/null +++ b/src/views/oa/doWorkLang.js @@ -0,0 +1,72 @@ +export const messages = { + en: { + doWork: { + search: { + title: 'Search Conditions', + workNameLike: 'Work Order Name', + staffNameLike: 'Processor', + queryStartTime: 'Start Time', + queryEndTime: 'End Time' + }, + table: { + title: 'Work Order List', + workId: 'ID', + workName: 'Work Order Name', + typeName: 'Type Name', + workCycle: 'Type', + startTime: 'Start Time', + endTime: 'End Time', + createUserName: 'Creator', + curStaffName: 'Processor', + curCopyName: 'CC', + stateName: 'Status', + createTime: 'Create Time' + }, + state: { + all: 'All', + pending: 'Pending', + processed: 'Processed' + }, + workCycle: { + once: 'One-time Work Order', + periodic: 'Periodic Work Order' + }, + fetchError: 'Failed to fetch work orders' + }, + }, + zh: { + doWork: { + search: { + title: '查询条件', + workNameLike: '工单名称', + staffNameLike: '处理人', + queryStartTime: '开始时间', + queryEndTime: '结束时间' + }, + table: { + title: '工单列表', + workId: '编号', + workName: '工单名称', + typeName: '类型名称', + workCycle: '类型', + startTime: '开始时间', + endTime: '结束时间', + createUserName: '发起人', + curStaffName: '处理人', + curCopyName: '抄送人', + stateName: '状态', + createTime: '创建时间' + }, + state: { + all: '全部', + pending: '待处理', + processed: '已处理' + }, + workCycle: { + once: '一次性工单', + periodic: '周期性工单' + }, + fetchError: '获取工单列表失败' + }, + } +} \ No newline at end of file diff --git a/src/views/oa/doWorkList.vue b/src/views/oa/doWorkList.vue new file mode 100644 index 0000000..bdd6e87 --- /dev/null +++ b/src/views/oa/doWorkList.vue @@ -0,0 +1,339 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/workDeductionLang.js b/src/views/oa/workDeductionLang.js new file mode 100644 index 0000000..b53b8b6 --- /dev/null +++ b/src/views/oa/workDeductionLang.js @@ -0,0 +1,64 @@ +export const messages = { + en: { + workDeduction: { + search: { + title: 'Search Conditions', + staffNameLike: 'Please enter handler', + deductionPersonNameLike: 'Please enter deduction person' + }, + list: { + title: 'Work Order Deduction' + }, + table: { + staffName: 'Staff Name', + timeRange: 'Time Range', + content: 'Content', + finishTime: 'Completion Time', + state: 'Status', + remark: 'Remark', + score: 'Score', + deductionMoney: 'Deduction Amount', + deductionReason: 'Deduction Reason', + deductionPersonName: 'Deduction Person', + createTime: 'Time' + }, + state: { + W: 'Pending', + C: 'Handler Completed', + CC: 'Copier Completed' + }, + fetchError: 'Failed to fetch work deduction data' + } + }, + zh: { + workDeduction: { + search: { + title: '查询条件', + staffNameLike: '请输入处理人', + deductionPersonNameLike: '请输入扣款人' + }, + list: { + title: '工单扣款' + }, + table: { + staffName: '员工名称', + timeRange: '时间段', + content: '内容', + finishTime: '完成时间', + state: '状态', + remark: '说明', + score: '评分', + deductionMoney: '扣款金额', + deductionReason: '扣款说明', + deductionPersonName: '扣款人', + createTime: '时间' + }, + state: { + W: '待处理', + C: '处理人已办理', + CC: '抄送人已办理' + }, + fetchError: '获取工单扣款数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/workDeductionList.vue b/src/views/oa/workDeductionList.vue new file mode 100644 index 0000000..621cbec --- /dev/null +++ b/src/views/oa/workDeductionList.vue @@ -0,0 +1,230 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/workPoolLang.js b/src/views/oa/workPoolLang.js new file mode 100644 index 0000000..16c5dc4 --- /dev/null +++ b/src/views/oa/workPoolLang.js @@ -0,0 +1,76 @@ +export const messages = { + en: { + workPool: { + search: { + title: 'Search Conditions', + workName: 'Work Order Name', + createUser: 'Creator', + staffName: 'Processor', + startTime: 'Start Time', + endTime: 'End Time' + }, + list: { + title: 'Work Order Pool' + }, + table: { + id: 'ID', + workName: 'Work Name', + typeName: 'Type Name', + workCycle: 'Cycle Type', + once: 'One-time', + cycle: 'Periodic', + createUser: 'Creator', + staffName: 'Processor', + timeRange: 'Time Range', + status: 'Status', + createTime: 'Create Time', + finishTime: 'Finish Time', + timeout: 'Timeout' + }, + state: { + all: 'All', + pending: 'Pending', + completed: 'Completed', + timeout: 'Timeout Work Orders' + }, + fetchError: 'Failed to fetch work orders' + } + }, + zh: { + workPool: { + search: { + title: '查询条件', + workName: '请输入工单名称', + createUser: '请输入发起人', + staffName: '请输入处理人', + startTime: '请输入开始时间', + endTime: '请输入结束时间' + }, + list: { + title: '工作单池' + }, + table: { + id: '编号', + workName: '工单名称', + typeName: '类型名称', + workCycle: '标识', + once: '一次性工单', + cycle: '周期性工单', + createUser: '发起人', + staffName: '处理人', + timeRange: '时间段', + status: '状态', + createTime: '创建时间', + finishTime: '完成时间', + timeout: '超时' + }, + state: { + all: '全部', + pending: '待处理', + completed: '处理完成', + timeout: '超时工作单' + }, + fetchError: '获取工作单列表失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/workPoolList.vue b/src/views/oa/workPoolList.vue new file mode 100644 index 0000000..05c7379 --- /dev/null +++ b/src/views/oa/workPoolList.vue @@ -0,0 +1,326 @@ + + + + + \ No newline at end of file