diff --git a/src/api/oa/addWorkApi.js b/src/api/oa/addWorkApi.js new file mode 100644 index 0000000..773e440 --- /dev/null +++ b/src/api/oa/addWorkApi.js @@ -0,0 +1,91 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 保存工作单 +export function saveWorkPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.saveWorkPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作单类型列表 +export function listWorkType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.listWorkType', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取组织树 +export function listOrgTree() { + return new Promise((resolve, reject) => { + request({ + url: '/org.listOrgTree', + method: 'get', + 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 uploadFile(data) { + return new Promise((resolve, reject) => { + request({ + url: '/upload', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + resolve(response.data) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/editWorkApi.js b/src/api/oa/editWorkApi.js new file mode 100644 index 0000000..822fb2c --- /dev/null +++ b/src/api/oa/editWorkApi.js @@ -0,0 +1,168 @@ +import request from '@/utils/request' + +// 获取工作单类型列表 +export function listWorkType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.listWorkType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询工作单详情 +export function queryStartWork(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.queryStartWork', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作单处理人列表 +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) + }) + }) +} + +// 获取工作单抄送人列表 +export function listWorkCopy(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.listWorkCopy', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取工作单周期信息 +export function listWorkCycle(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workCycle.listWorkCycle', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新工作单 +export function updateWorkPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.updateWorkPool', + method: 'post', + data + }).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 + }).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 + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传文件 +export function uploadFile(data, config) { + return new Promise((resolve, reject) => { + request({ + url: '/upload', + method: 'post', + data, + onUploadProgress: config.onUploadProgress, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传图片 +export function uploadImage(data) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadImage', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-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/startWorkApi.js b/src/api/oa/startWorkApi.js new file mode 100644 index 0000000..c5702f4 --- /dev/null +++ b/src/api/oa/startWorkApi.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询发起工作单列表 +export function queryStartWork(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.queryStartWork', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve({ + data: res.data, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除工作单 +export function deleteWorkPool(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.deleteWorkPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg)) + } + }).catch(error => { + reject(error) + }) + }) +} + +// 启动/停止工作单 +export function updateWorkState(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.startOrStopWorkPool', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).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/oa/workTypeApi.js b/src/api/oa/workTypeApi.js new file mode 100644 index 0000000..dc510ec --- /dev/null +++ b/src/api/oa/workTypeApi.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +// 获取工作单类型列表 +export function listWorkType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.listWorkType', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加工作单类型 +export function saveWorkType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.saveWorkType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新工作单类型 +export function updateWorkType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.updateWorkType', + method: 'post', + data + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除工作单类型 +export function deleteWorkType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/workType.deleteWorkType', + 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/system/paymentPoolApi.js b/src/api/system/paymentPoolApi.js index ceab43d..0157fc5 100644 --- a/src/api/system/paymentPoolApi.js +++ b/src/api/system/paymentPoolApi.js @@ -153,7 +153,7 @@ export function listFeeConfigs(params) { export function uploadFile(data, config) { return new Promise((resolve, reject) => { request({ - url: '/uploadVedio/upload', + url: '/callComponent/upload/uploadVedio/upload', method: 'post', data, headers: { diff --git a/src/components/oa/addWorkType.vue b/src/components/oa/addWorkType.vue new file mode 100644 index 0000000..d607327 --- /dev/null +++ b/src/components/oa/addWorkType.vue @@ -0,0 +1,147 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/deleteWork.vue b/src/components/oa/deleteWork.vue new file mode 100644 index 0000000..2f3eb46 --- /dev/null +++ b/src/components/oa/deleteWork.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/deleteWorkType.vue b/src/components/oa/deleteWorkType.vue new file mode 100644 index 0000000..5dae1ec --- /dev/null +++ b/src/components/oa/deleteWorkType.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/editWorkType.vue b/src/components/oa/editWorkType.vue new file mode 100644 index 0000000..ec50493 --- /dev/null +++ b/src/components/oa/editWorkType.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/orgTreeShow.vue b/src/components/oa/orgTreeShow.vue index 79c453f..2c7421e 100644 --- a/src/components/oa/orgTreeShow.vue +++ b/src/components/oa/orgTreeShow.vue @@ -1,78 +1,85 @@ \ No newline at end of file diff --git a/src/components/oa/textarea.vue b/src/components/oa/textarea.vue new file mode 100644 index 0000000..167f382 --- /dev/null +++ b/src/components/oa/textarea.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/uploadFile.vue b/src/components/oa/uploadFile.vue new file mode 100644 index 0000000..8ca7d6d --- /dev/null +++ b/src/components/oa/uploadFile.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/components/system/uploadFile.vue b/src/components/upload/uploadFile.vue index 58078ed..55e1873 100644 --- a/src/components/system/uploadFile.vue +++ b/src/components/upload/uploadFile.vue @@ -71,7 +71,7 @@ export default { } } - const { data } = await uploadFile(formData, config) + const data = await uploadFile(formData, config) this.progress = 100 this.realFileName = data.realFileName this.$emit('notify', data) diff --git a/src/i18n/oaI18n.js b/src/i18n/oaI18n.js index b14d0b3..75cd158 100644 --- a/src/i18n/oaI18n.js +++ b/src/i18n/oaI18n.js @@ -37,7 +37,10 @@ import { messages as addAttendanceClassesStaffMessages } from '../views/oa/addAt import { messages as monthAttendanceManageMessages } from '../views/oa/monthAttendanceManageLang' import { messages as staffAttendanceManageMessages } from '../views/oa/staffAttendanceManageLang' import { messages as attendanceLogManageMessages } from '../views/oa/attendanceLogManageLang' - +import { messages as workTypeMessages } from '../views/oa/workTypeLang' +import { messages as startWorkMessages } from '../views/oa/startWorkLang' +import { messages as addWorkMessages } from '../views/oa/addWorkLang' +import { messages as editWorkMessages } from '../views/oa/editWorkLang' export const messages ={ en:{ ...activitiesTypeManageMessages.en, @@ -78,6 +81,10 @@ export const messages ={ ...monthAttendanceManageMessages.en, ...staffAttendanceManageMessages.en, ...attendanceLogManageMessages.en, + ...workTypeMessages.en, + ...startWorkMessages.en, + ...addWorkMessages.en, + ...editWorkMessages.en, }, zh:{ ...activitiesTypeManageMessages.zh, @@ -118,5 +125,9 @@ export const messages ={ ...monthAttendanceManageMessages.zh, ...staffAttendanceManageMessages.zh, ...attendanceLogManageMessages.zh, + ...workTypeMessages.zh, + ...startWorkMessages.zh, + ...addWorkMessages.zh, + ...editWorkMessages.zh, } } \ No newline at end of file diff --git a/src/router/oaRouter.js b/src/router/oaRouter.js index f568e02..bce5950 100644 --- a/src/router/oaRouter.js +++ b/src/router/oaRouter.js @@ -165,13 +165,33 @@ export default [ component: () => import('@/views/oa/monthAttendanceManageList.vue') }, { - path:'/pages/property/staffAttendanceManage', - name:'/pages/property/staffAttendanceManage', + path: '/pages/property/staffAttendanceManage', + name: '/pages/property/staffAttendanceManage', component: () => import('@/views/oa/staffAttendanceManageList.vue') + }, + { + path: '/pages/property/attendanceLogManage', + name: '/pages/property/attendanceLogManage', + component: () => import('@/views/oa/attendanceLogManageList.vue') + }, + { + path: '/pages/oa/workType', + name: '/pages/oa/workType', + component: () => import('@/views/oa/workTypeList.vue') + }, + { + path: '/pages/oa/startWork', + name: '/pages/oa/startWork', + component: () => import('@/views/oa/startWorkList.vue') + }, + { + path:'/views/oa/addWork', + name:'/views/oa/addWork', + component: () => import('@/views/oa/addWorkList.vue') }, { - path:'/pages/property/attendanceLogManage', - name:'/pages/property/attendanceLogManage', - component: () => import('@/views/oa/attendanceLogManageList.vue') + path:'/views/oa/editWork', + name:'/views/oa/editWork', + component: () => import('@/views/oa/editWorkList.vue') }, ] \ No newline at end of file diff --git a/src/views/oa/addWorkLang.js b/src/views/oa/addWorkLang.js new file mode 100644 index 0000000..1ecfd5e --- /dev/null +++ b/src/views/oa/addWorkLang.js @@ -0,0 +1,114 @@ +export const messages = { + en: { + addWork: { + title: 'Create Work Order', + workName: 'Title', + workNamePlaceholder: 'Required, please enter title', + workType: 'Work Order Type', + workTypePlaceholder: 'Required, please select work order type', + processor: 'Processor', + cc: 'CC', + choose: 'Choose', + workCycle: 'Work Order Flag', + workCyclePlaceholder: 'Required, please select work order flag', + onceWork: 'One-time Work Order', + periodWork: 'Periodic Work Order', + attachment: 'Attachment', + startTime: 'Start Time', + startTimePlaceholder: 'Required, please enter start time', + endTime: 'End Time', + endTimePlaceholder: 'Required, please enter end time', + period: 'Period', + periodPlaceholder: 'Required, please select task period', + monthDay: 'Month/Day', + week: 'By Week', + hours: 'Work Order', + hoursPlaceholder: 'Required, please enter hours', + hoursUnit: 'hours to complete', + month: 'Month', + monthUnit: 'Month', + day: 'Day', + dayUnit: 'Day', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday', + content: 'Content', + contentPlaceholder: 'Required, please enter content', + addContent: 'Add', + deleteContent: 'Delete' + }, + uploadFile: { + upload: 'Upload Attachment', + sizeLimit: 'File size cannot exceed 20MB', + success: 'File uploaded successfully', + failed: 'File upload failed' + }, + selectStaff: { + title: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assignment' + } + }, + zh: { + addWork: { + title: '发起工作单', + workName: '标题', + workNamePlaceholder: '必填,请填写标题', + workType: '工作单类型', + workTypePlaceholder: '必填,请选择工作单类型', + processor: '处理人', + cc: '抄送人', + choose: '选择', + workCycle: '工作单标识', + workCyclePlaceholder: '必填,请选择工作单标识', + onceWork: '一次性工单', + periodWork: '周期性工单', + attachment: '附件', + startTime: '开始时间', + startTimePlaceholder: '必填,请填写开始时间', + endTime: '结束时间', + endTimePlaceholder: '必填,请填写结束时间', + period: '周期', + periodPlaceholder: '必填,请选择任务周期', + monthDay: '月/天', + week: '按周', + hours: '工作单', + hoursPlaceholder: '必填,请输入小时数', + hoursUnit: '小时内完成', + month: '月', + monthUnit: '月', + day: '日', + dayUnit: '日', + monday: '星期一', + tuesday: '星期二', + wednesday: '星期三', + thursday: '星期四', + friday: '星期五', + saturday: '星期六', + sunday: '星期日', + content: '内容', + contentPlaceholder: '必填,请输入内容', + addContent: '添加', + deleteContent: '删除' + }, + uploadFile: { + upload: '上传附件', + sizeLimit: '文件大小不能超过20MB', + success: '文件上传成功', + failed: '文件上传失败' + }, + selectStaff: { + title: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定' + } + } +} \ No newline at end of file diff --git a/src/views/oa/addWorkList.vue b/src/views/oa/addWorkList.vue new file mode 100644 index 0000000..840057b --- /dev/null +++ b/src/views/oa/addWorkList.vue @@ -0,0 +1,367 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/editWorkLang.js b/src/views/oa/editWorkLang.js new file mode 100644 index 0000000..4c32dce --- /dev/null +++ b/src/views/oa/editWorkLang.js @@ -0,0 +1,122 @@ +export const messages = { + en: { + editWork: { + title: 'Edit Work Order', + workName: 'Title', + workNamePlaceholder: 'Required, please enter title', + workType: 'Work Order Type', + workTypePlaceholder: 'Required, please select work order type', + processor: 'Processor', + ccPerson: 'CC Person', + choose: 'Choose', + workSign: 'Work Order Sign', + workSignPlaceholder: 'Required, please select work order sign', + onceWork: 'One-time Work Order', + cycleWork: 'Periodic Work Order', + attachment: 'Attachment', + startTime: 'Start Time', + startTimePlaceholder: 'Required, please enter start time', + endTime: 'End Time', + endTimePlaceholder: 'Required, please enter end time', + period: 'Period', + periodPlaceholder: 'Required, please select task period', + monthDay: 'Month/Day', + byWeek: 'By Week', + workHours: 'Work Hours', + workHoursPlaceholder: 'Required, please enter hours', + hoursComplete: 'hours to complete', + month: 'Month', + monthUnit: 'Month', + day: 'Day', + dayUnit: 'Day', + week: 'Week', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday', + content: 'Content', + add: 'Add', + delete: 'Delete' + }, + uploadFile: { + upload: 'Upload Attachment', + sizeLimit: 'File size cannot exceed 20MB', + success: 'File uploaded successfully', + failed: 'File upload failed' + }, + textarea: { + placeholder: 'Required, please enter content', + uploadFailed: 'Image upload failed' + }, + selectStaff: { + title: 'Select Staff', + orgInfo: 'Organization Information', + staffInfo: 'Staff Information', + submitter: 'Submitter', + dynamicAssign: 'Dynamic Assign' + } + }, + zh: { + editWork: { + title: '修改工作单', + workName: '标题', + workNamePlaceholder: '必填,请填写标题', + workType: '工作单类型', + workTypePlaceholder: '必填,请选择工作单类型', + processor: '处理人', + ccPerson: '抄送人', + choose: '选择', + workSign: '工作单标识', + workSignPlaceholder: '必填,请选择工作单标识', + onceWork: '一次性工单', + cycleWork: '周期性工单', + attachment: '附件', + startTime: '开始时间', + startTimePlaceholder: '必填,请填写开始时间', + endTime: '结束时间', + endTimePlaceholder: '必填,请填写结束时间', + period: '周期', + periodPlaceholder: '必填,请选择任务周期', + monthDay: '月/天', + byWeek: '按周', + workHours: '工作单', + workHoursPlaceholder: '必填,请输入小时数', + hoursComplete: '小时内完成', + month: '月', + monthUnit: '月', + day: '日', + dayUnit: '日', + week: '周', + monday: '星期一', + tuesday: '星期二', + wednesday: '星期三', + thursday: '星期四', + friday: '星期五', + saturday: '星期六', + sunday: '星期日', + content: '内容', + add: '添加', + delete: '删除' + }, + uploadFile: { + upload: '上传附件', + sizeLimit: '文件大小不能超过20MB', + success: '文件上传成功', + failed: '文件上传失败' + }, + textarea: { + placeholder: '必填,请输入内容', + uploadFailed: '图片上传失败' + }, + selectStaff: { + title: '选择员工', + orgInfo: '组织信息', + staffInfo: '员工信息', + submitter: '提交者', + dynamicAssign: '动态指定' + } + } +} \ No newline at end of file diff --git a/src/views/oa/editWorkList.vue b/src/views/oa/editWorkList.vue new file mode 100644 index 0000000..ccf31e0 --- /dev/null +++ b/src/views/oa/editWorkList.vue @@ -0,0 +1,450 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/startWorkLang.js b/src/views/oa/startWorkLang.js new file mode 100644 index 0000000..2cf3bd2 --- /dev/null +++ b/src/views/oa/startWorkLang.js @@ -0,0 +1,98 @@ +export const messages = { + en: { + startWork: { + state: { + all: 'All', + W: 'Pending', + D: 'Processing', + C: 'Completed' + }, + search: { + title: 'Search Conditions', + workName: 'Work Order Name', + staffName: 'Handler', + startTime: 'Start Time', + endTime: 'End Time' + }, + list: { + title: 'Work Order List', + draft: 'Draft' + }, + table: { + workId: 'ID', + workName: 'Work Order Name', + typeName: 'Type Name', + workCycle: 'Cycle', + startTime: 'Start Time', + endTime: 'End Time', + createUser: 'Creator', + handler: 'Handler', + ccUser: 'CC User', + state: 'Status', + createTime: 'Create Time' + }, + cycle: { + once: 'One-time', + periodic: 'Periodic' + }, + operation: { + stop: 'Stop', + start: 'Start' + }, + delete: { + title: 'Confirm Operation', + confirm: 'Are you sure to delete this work order?', + success: 'Delete successfully', + error: 'Delete failed' + } + }, + }, + zh: { + startWork: { + state: { + all: '全部', + W: '待处理', + D: '处理中', + C: '处理完成' + }, + search: { + title: '查询条件', + workName: '工单名称', + staffName: '处理人', + startTime: '开始时间', + endTime: '结束时间' + }, + list: { + title: '发起工作单', + draft: '起草' + }, + table: { + workId: '编号', + workName: '工单名称', + typeName: '类型名称', + workCycle: '标识', + startTime: '开始时间', + endTime: '结束时间', + createUser: '发起人', + handler: '处理人', + ccUser: '抄送人', + state: '状态', + createTime: '创建时间' + }, + cycle: { + once: '一次性工单', + periodic: '周期性工单' + }, + operation: { + stop: '停止', + start: '启用' + }, + delete: { + title: '请确认您的操作', + confirm: '确定删除工作单', + success: '删除成功', + error: '删除失败' + } + } + } +} \ No newline at end of file diff --git a/src/views/oa/startWorkList.vue b/src/views/oa/startWorkList.vue new file mode 100644 index 0000000..e8da3a2 --- /dev/null +++ b/src/views/oa/startWorkList.vue @@ -0,0 +1,288 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/workTypeLang.js b/src/views/oa/workTypeLang.js new file mode 100644 index 0000000..8308d65 --- /dev/null +++ b/src/views/oa/workTypeLang.js @@ -0,0 +1,132 @@ +export const messages = { + en: { + workType: { + search: { + title: 'Search Conditions', + typeName: 'Type Name' + }, + list: { + title: 'Work Order Types' + }, + table: { + typeName: 'Type Name', + deduction: 'Deduction', + smsWay: 'Notification Method', + createTime: 'Create Time', + remark: 'Remark' + }, + form: { + typeName: 'Type Name', + deduction: 'Deduction', + smsWay: 'Notification Method', + remark: 'Remark' + }, + placeholder: { + typeName: 'Please enter type name', + deduction: 'Please select deduction', + smsWay: 'Please select notification method', + remark: 'Optional, please enter remark' + }, + validate: { + typeName: 'Type name is required', + typeNameMax: 'Type name cannot exceed 200 characters', + deduction: 'Deduction is required', + smsWay: 'Notification method is required', + wtId: 'ID is required' + }, + tip: { + deduction: 'After selecting deduction, the copy recipient will deduct money according to the task completion!', + wechat: 'Need to configure the official account in the system, the official account is a certified service account, and the employee has done employee certification', + aliSms: 'Need to configure Alibaba Cloud SMS information in the system community configuration, the template is work order pending template and work order completion template' + }, + yes: 'Yes', + no: 'No', + wechat: 'WeChat', + aliSms: 'Ali SMS', + workLicense: 'Employee License', + unknown: 'Unknown', + add: { + title: 'Add Work Order Type', + success: 'Add success', + error: 'Add failed' + }, + edit: { + title: 'Edit Work Order Type', + success: 'Edit success', + error: 'Edit failed' + }, + delete: { + title: 'Delete Confirmation', + confirm: 'Are you sure to delete this work order type?', + success: 'Delete success', + error: 'Delete failed' + }, + fetchError: 'Failed to fetch work order types' + } + }, + zh: { + workType: { + search: { + title: '查询条件', + typeName: '类型名称' + }, + list: { + title: '工作单类型' + }, + table: { + typeName: '类型名称', + deduction: '扣款', + smsWay: '通知方式', + createTime: '创建时间', + remark: '备注' + }, + form: { + typeName: '类型名称', + deduction: '扣款', + smsWay: '通知方式', + remark: '备注' + }, + placeholder: { + typeName: '请输入类型名称', + deduction: '请选择扣款', + smsWay: '请选择通知方式', + remark: '选填,请输入备注' + }, + validate: { + typeName: '类型名称不能为空', + typeNameMax: '类型名称不能超过200个字符', + deduction: '扣款不能为空', + smsWay: '通知方式不能为空', + wtId: '编号不能为空' + }, + tip: { + deduction: '选择扣款后,抄送人会根据任务完成情况,相应的扣款!', + wechat: '需要在系统下公众号中配置公众号,公众号为认证过的服务号,并且员工做了员工认证', + aliSms: '需要在系统下小区配置中配置阿里云短信信息,模版为工单待处理模版和工单完成模版' + }, + yes: '是', + no: '否', + wechat: '微信', + aliSms: '阿里短信', + workLicense: '员工工牌', + unknown: '未知', + add: { + title: '添加工作单类型', + success: '添加成功', + error: '添加失败' + }, + edit: { + title: '修改工作单类型', + success: '修改成功', + error: '修改失败' + }, + delete: { + title: '删除确认', + confirm: '确定删除此工作单类型吗?', + success: '删除成功', + error: '删除失败' + }, + fetchError: '获取工作单类型失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/workTypeList.vue b/src/views/oa/workTypeList.vue new file mode 100644 index 0000000..3cf6d1a --- /dev/null +++ b/src/views/oa/workTypeList.vue @@ -0,0 +1,183 @@ + + + + + \ No newline at end of file