diff --git a/package-lock.json b/package-lock.json index cc8a0c823..91734769c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "markmap-view": "^0.16.0", "min-dash": "^4.1.1", "mitt": "^3.0.1", + "moment": "^2.30.1", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", @@ -13064,6 +13065,15 @@ "saxen": "^8.1.2" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/mpd-parser": { "version": "0.22.1", "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.22.1.tgz", diff --git a/package.json b/package.json index 0bb52dd6e..a945aaf01 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "markmap-view": "^0.16.0", "min-dash": "^4.1.1", "mitt": "^3.0.1", + "moment": "^2.30.1", "nprogress": "^0.2.0", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", diff --git a/src/api/task/briefWork/index.ts b/src/api/task/briefWork/index.ts index f4f9a7828..0942b8635 100644 --- a/src/api/task/briefWork/index.ts +++ b/src/api/task/briefWork/index.ts @@ -24,6 +24,11 @@ export const BriefWorkApi = { return await request.get({ url: `/tts/brief-work/page`, params }) }, + // 查询工作简报分页-根据周报查询 + getBriefWorkTimePage: async (params: any) => { + return await request.get({ url: `/tts/brief-work/page`, params }) + }, + // 查询工作简报详情 getBriefWork: async (params: any) => { return await request.get({ url: `/tts/brief-work/get`, params}) diff --git a/src/components/UploadFile/src/UploadFile.vue b/src/components/UploadFile/src/UploadFile.vue index 9d0a904ee..c2270ed8e 100644 --- a/src/components/UploadFile/src/UploadFile.vue +++ b/src/components/UploadFile/src/UploadFile.vue @@ -133,7 +133,8 @@ const handleFileSuccess: UploadProps['onSuccess'] = (res: any): void => { // 删除自身 const index = fileList.value.findIndex((item) => item.response?.data === res.data) fileList.value.splice(index, 1) - uploadList.value.push({ name: res.data, url: res.data }) + console.log('%csrc/components/UploadFile/src/UploadFile.vue:136 res', 'color: #007acc;', res); + uploadList.value.push({ url: res.data }) if (uploadList.value.length == uploadNumber.value) { fileList.value.push(...uploadList.value) uploadList.value = [] diff --git a/src/components/customer/index.vue b/src/components/customer/index.vue index 841c49306..f25212bff 100644 --- a/src/components/customer/index.vue +++ b/src/components/customer/index.vue @@ -94,10 +94,10 @@ const queryParams = reactive({ const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 /** 打开弹窗 */ -const open = async (data: [], id) => { +const open = async (data: []) => { dialogVisible.value = true multipleSelection.value = data - queryParams.customerId = id + // queryParams.customerId = id await getList() await setSelections() diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index c34e7256c..e5f98f7cb 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -803,7 +803,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/project' }, - component: () => import('@/views/task/project/ProjectForm.vue') + component: () => import('@/views/project/project/ProjectForm.vue') }, { path: 'project/ProjectFormEdit', @@ -814,7 +814,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/project' }, - component: () => import('@/views/task/project/ProjectForm.vue') + component: () => import('@/views/project/project/ProjectForm.vue') }, { path: 'project/ProjectDetail', @@ -825,7 +825,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/project' }, - component: () => import('@/views/task/project/ProjectDetail.vue') + component: () => import('@/views/project/project/ProjectDetail.vue') }, { path: 'components/TaskDetail', @@ -836,7 +836,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/project' }, - component: () => import('@/views/task/project/components/TaskDetail.vue') + component: () => import('@/views/project/project/components/TaskDetail.vue') }, { path: 'components/ProjectTaskForm', @@ -847,7 +847,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/project' }, - component: () => import('@/views/task/project/components/ProjectTaskForm.vue') + component: () => import('@/views/project/project/components/ProjectTaskForm.vue') }, { path: 'online/OnlineApplicationForm', @@ -858,7 +858,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/online' }, - component: () => import('@/views/task/online/OnlineApplicationForm.vue') + component: () => import('@/views/project/online/OnlineApplicationForm.vue') }, { path: 'online/OnlineApplicationEdit', @@ -869,7 +869,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/online' }, - component: () => import('@/views/task/online/OnlineApplicationForm.vue') + component: () => import('@/views/project/online/OnlineApplicationForm.vue') }, { path: 'online/OnlineApplicationDetail', @@ -880,7 +880,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/online' }, - component: () => import('@/views/task/online/OnlineApplicationDetail.vue') + component: () => import('@/views/project/online/OnlineApplicationDetail.vue') }, { path: 'briefWork/BriefWorkDetail', @@ -891,7 +891,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/briefWork' }, - component: () => import('@/views/task/briefWork/BriefWorkDetail.vue') + component: () => import('@/views/project/briefWork/BriefWorkDetail.vue') }, { path: 'briefWork/BriefWorkForm', @@ -902,7 +902,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/briefWork' }, - component: () => import('@/views/task/briefWork/BriefWorkForm.vue') + component: () => import('@/views/project/briefWork/BriefWorkForm.vue') }, { path: 'briefWeekWork/BriefworkWeekDetail', @@ -913,7 +913,7 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/bridfWeekWork' }, - component: () => import('@/views/task/briefWeekWork/BriefWorkWeekDetail.vue') + component: () => import('@/views/project/briefWeekWork/BriefWorkWeekDetail.vue') }, { path: 'briefWeekWork/BriefWorkWeekForm', @@ -924,7 +924,29 @@ const remainingRouter: AppRouteRecordRaw[] = [ hidden: true, activeMenu: '/project/bridfWeekWork' }, - component: () => import('@/views/task/briefWeekWork/BriefWorkWeekForm.vue') + component: () => import('@/views/project/briefWeekWork/BriefWorkWeekForm.vue') + }, + { + path: 'briefMonthWork/BriefWorkMonthDetail', + name: 'MonthReportDetail', + meta: { + title: '月报详情', + noCache: true, + hidden: true, + activeMenu: '/project/bridfWeekWork' + }, + component: () => import('@/views/project/briefMonthWork/BriefMonthWorkDetail.vue') + }, + { + path: 'briefMonthWork/BriefWorkMonthForm', + name: 'MonthReportAdd', + meta: { + title: '月报新增', + noCache: true, + hidden: true, + activeMenu: '/project/bridfWeekWork' + }, + component: () => import('@/views/project/briefMonthWork/BriefWorkMonthForm.vue') }, ] }, diff --git a/src/views/project/briefMonthWork/BriefMonthWorkDetail.vue b/src/views/project/briefMonthWork/BriefMonthWorkDetail.vue new file mode 100644 index 000000000..5be469d2a --- /dev/null +++ b/src/views/project/briefMonthWork/BriefMonthWorkDetail.vue @@ -0,0 +1,176 @@ + + \ No newline at end of file diff --git a/src/views/project/briefMonthWork/BriefWorkMonthForm.vue b/src/views/project/briefMonthWork/BriefWorkMonthForm.vue new file mode 100644 index 000000000..510bca0ef --- /dev/null +++ b/src/views/project/briefMonthWork/BriefWorkMonthForm.vue @@ -0,0 +1,223 @@ + + \ No newline at end of file diff --git a/src/views/project/briefMonthWork/index.vue b/src/views/project/briefMonthWork/index.vue new file mode 100644 index 000000000..1f8bf4e54 --- /dev/null +++ b/src/views/project/briefMonthWork/index.vue @@ -0,0 +1,281 @@ + + + \ No newline at end of file diff --git a/src/views/project/briefWeekWork/BriefWorkWeekDetail.vue b/src/views/project/briefWeekWork/BriefWorkWeekDetail.vue new file mode 100644 index 000000000..95453a93e --- /dev/null +++ b/src/views/project/briefWeekWork/BriefWorkWeekDetail.vue @@ -0,0 +1,208 @@ + + \ No newline at end of file diff --git a/src/views/task/briefWeekWork/BriefWorkWeekForm.vue b/src/views/project/briefWeekWork/BriefWorkWeekForm.vue similarity index 88% rename from src/views/task/briefWeekWork/BriefWorkWeekForm.vue rename to src/views/project/briefWeekWork/BriefWorkWeekForm.vue index e8cd1b13a..a90dfcbc9 100644 --- a/src/views/task/briefWeekWork/BriefWorkWeekForm.vue +++ b/src/views/project/briefWeekWork/BriefWorkWeekForm.vue @@ -42,15 +42,15 @@ 选择客户 - + 选择任务 - + 日报信息 - + @@ -87,6 +87,7 @@ import { useUserStore } from '@/store/modules/user' import CustomerForm from './components/selectCustomer.vue' import TaskForm from './components/selectTask.vue' import DayReportForm from './components/selectDayReport.vue' +import * as UserApi from '@/api/system/user' /** 工作简报 表单 */ defineOptions({ name: 'BriefWorkForm' }) @@ -115,10 +116,11 @@ const formData = ref({ }) const formRules = reactive({ briefStartDate: [{ required: true, message: '简报日期不能为空', trigger: 'blur' }], - workComplate: [{ required: true, message: '本日期完成工作不能为空', trigger: 'blur' }], - workPlan: [{ required: true, message: '明日工作计划不能为空', trigger: 'blur' }] + workComplate: [{ required: true, message: '本周期完成工作不能为空', trigger: 'blur' }], + workPlan: [{ required: true, message: '下周工作计划不能为空', trigger: 'blur' }] }) +const userOptions = ref([]) // 用户列表 const formRef = ref() // 表单 Ref const customerFormRef = ref() // 表单 Ref const taskFormRef = ref() // 表单 Ref @@ -132,12 +134,12 @@ const submitForm = async () => { formLoading.value = true try { const data = formData.value as unknown as BriefWorkVO - let customerData = customerFormRef.value.getData() - console.log('%csrc/views/task/briefWeekWork/BriefWorkWeekForm.vue:136 customerData', 'color: #007acc;', customerData); + if(customerFormRef.value.getData()) { + let customerData = customerFormRef.value.getData() + data.customerIds = customerData.map( v=> v.id) + } let taskData = taskFormRef.value.getData() let dayReportData = dayReportFormRef.value.getData() - data.customerIds = customerData.map( v=> v.id) - console.log('%csrc/views/task/briefWeekWork/BriefWorkWeekForm.vue:139 data', 'color: #007acc;', data.customerIds); data.taskIds = taskData.map( v=> v.id) // data.taskIds = dayReportData.map( v=> v.id) if (!formType.value) { @@ -199,7 +201,10 @@ onMounted(async () => { formData.value.briefStartDate = monday.toISOString().slice(0, 10); // 输出格式为 YYYY-MM-DD formData.value.briefEndDate = sunday.toISOString().slice(0, 10); // 输出格式为 YYYY-MM-DD + console.log('%csrc/views/project/briefWeekWork/BriefWorkWeekForm.vue:202 formData.value.briefStartDate ', 'color: #007acc;', formData.value.briefStartDate ); time.value = [formData.value.briefStartDate + ' 00:00:00', formData.value.briefEndDate + ' 23:59:59'] + // 获得用户列表 + userOptions.value = await UserApi.getSimpleUserList() // formType.value = props.id || route.query.id diff --git a/src/views/task/briefWeekWork/components/selectCustomer.vue b/src/views/project/briefWeekWork/components/selectCustomer.vue similarity index 81% rename from src/views/task/briefWeekWork/components/selectCustomer.vue rename to src/views/project/briefWeekWork/components/selectCustomer.vue index 5e565c0fc..39ecd669d 100644 --- a/src/views/task/briefWeekWork/components/selectCustomer.vue +++ b/src/views/project/briefWeekWork/components/selectCustomer.vue @@ -5,10 +5,18 @@ - + + + - - + + + + - - + + - + + +