From 98d4db97d3c21f9b31f978249c5572fdae948088 Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期三, 09 四月 2025 13:21:22 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-admin/src/page/task/TaskList.jsx                                                    |   33 ++--
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java          |    2 
 rsf-admin/src/page/task/TaskEdit.jsx                                                    |  238 ++++++++++++---------------------
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java    |   10 +
 rsf-admin/src/page/taskItem/TaskItemList.jsx                                            |    8 
 rsf-admin/src/page/login/Login.jsx                                                      |    7 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java |    7 
 rsf-admin/src/page/purchase/PurchaseList.jsx                                            |    2 
 rsf-admin/src/page/task/TaskPanel.jsx                                                   |   84 +----------
 rsf-admin/src/App.jsx                                                                   |    3 
 rsf-admin/src/page/task/index.jsx                                                       |    1 
 rsf-server/src/main/resources/application-dev.yml                                       |    2 
 12 files changed, 145 insertions(+), 252 deletions(-)

diff --git a/rsf-admin/src/App.jsx b/rsf-admin/src/App.jsx
index 9efadba..f3fbe6b 100644
--- a/rsf-admin/src/App.jsx
+++ b/rsf-admin/src/App.jsx
@@ -60,9 +60,6 @@
     getSystemInfo().then((data) => {
       localStorage.setItem("system", JSON.stringify(data));
     })
-    getSystemDicts().then(data => {
-      localStorage.setItem('sys_dicts', JSON.stringify(data));
-    })
   }, []);
 
   return (
diff --git a/rsf-admin/src/page/login/Login.jsx b/rsf-admin/src/page/login/Login.jsx
index 536a6ad..186f09a 100644
--- a/rsf-admin/src/page/login/Login.jsx
+++ b/rsf-admin/src/page/login/Login.jsx
@@ -14,8 +14,10 @@
 import {
     useTranslate,
     useLogin,
+    localStorageStore,
     useNotify,
 } from 'react-admin';
+import { getSystemDicts } from "@/api/auth";
 import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
 import ProviderChoices from "./ProviderChoices";
 import Visibility from '@mui/icons-material/Visibility';
@@ -36,7 +38,7 @@
     const username = watch('username');
     const password = watch('password');
     const tenantId = watch('tenantId');
-
+    
     useEffect(() => {
         if (tenantList.length > 0 && !tenantId) {
             const rememberTenantId = localStorage.getItem('remember_tenantId');
@@ -49,6 +51,9 @@
     }, [tenantList, setValue]);
 
     const onSubmit = (data) => {
+        getSystemDicts().then(data => {
+            localStorage.setItem('sys_dicts', JSON.stringify(data));
+        })
         setLoading(true);
         login(
             data,
diff --git a/rsf-admin/src/page/purchase/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx
index adc1921..ffdb648 100644
--- a/rsf-admin/src/page/purchase/PurchaseList.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseList.jsx
@@ -123,7 +123,7 @@
         <StyledDatagrid
           preferenceKey='purchase'
           bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
-          rowClick={(id, resource, record) => false}
+          rowClick={'edit'}
           expand={() => <PurchasePanel />}
           expandSingle={true}
           omit={['id', 'createTime', 'createBy', 'memo']}
diff --git a/rsf-admin/src/page/task/TaskEdit.jsx b/rsf-admin/src/page/task/TaskEdit.jsx
index ab88ff1..bca87b3 100644
--- a/rsf-admin/src/page/task/TaskEdit.jsx
+++ b/rsf-admin/src/page/task/TaskEdit.jsx
@@ -2,180 +2,120 @@
 import {
     Edit,
     SimpleForm,
-    FormDataConsumer,
     useTranslate,
     TextInput,
     NumberInput,
-    BooleanInput,
-    DateInput,
-    SelectInput,
-    ReferenceInput,
-    ReferenceArrayInput,
-    AutocompleteInput,
     SaveButton,
     Toolbar,
-    Labeled,
-    NumberField,
-    required,
-    useRecordContext,
-    DeleteButton,
 } from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
+import { useWatch, useFormContext, useForm } from "react-hook-form";
+import { Stack, Grid, Box, Typography, Card } from '@mui/material';
 import * as Common from '@/utils/common';
 import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
 import EditBaseAside from "../components/EditBaseAside";
 import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
+import TaskItemList from "./TaskItemList";
 
 const FormToolbar = () => {
     const { getValues } = useFormContext();
-
     return (
-        <Toolbar sx={{ justifyContent: 'space-between' }}>
+        <Toolbar sx={{ justifyContent: 'end' }}>
             <SaveButton />
-            <DeleteButton mutationMode="optimistic" />
+            {/* <DeleteButton mutationMode="optimistic" /> */}
         </Toolbar>
     )
 }
 
 const TaskEdit = () => {
     const translate = useTranslate();
-
     return (
-        <Edit
-            redirect="list"
-            mutationMode={EDIT_MODE}
-            actions={<CustomerTopToolBar />}
-            aside={<EditBaseAside />}
-        >
-            <SimpleForm
-                shouldUnregister
-                warnWhenUnsavedChanges
-                toolbar={<FormToolbar />}
-                mode="onTouched"
-                defaultValues={{}}
-            // validate={(values) => { }}
+        <>
+            <Edit
+                redirect="list"
+                mutationMode={EDIT_MODE}
+                actions={<CustomerTopToolBar />}
+                aside={<EditBaseAside />}
             >
-                <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
-                    <Grid item xs={12} md={8}>
-                        <Typography variant="h6" gutterBottom>
-                            {translate('common.edit.title.main')}
-                        </Typography>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.taskCode"
-                                source="taskCode"
-                                parse={v => v}
-                                autoFocus
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.task.taskStatus"
-                                source="taskStatus"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.task.taskType"
-                                source="taskType"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.orgLoc"
-                                source="orgLoc"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.orgSite"
-                                source="orgSite"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.targLoc"
-                                source="targLoc"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.targSite"
-                                source="targSite"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.barcode"
-                                source="barcode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.robotCode"
-                                source="robotCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.task.exceStatus"
-                                source="exceStatus"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.expDesc"
-                                source="expDesc"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <NumberInput
-                                label="table.field.task.sort"
-                                source="sort"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <TextInput
-                                label="table.field.task.expCode"
-                                source="expCode"
-                                parse={v => v}
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <DateInput
-                                label="table.field.task.startTime"
-                                source="startTime"
-                            />
-                        </Stack>
-                        <Stack direction='row' gap={2}>
-                            <DateInput
-                                label="table.field.task.endTime"
-                                source="endTime"
-                            />
-                        </Stack>
-
+                <SimpleForm
+                    shouldUnregister
+                    warnWhenUnsavedChanges
+                    toolbar={<FormToolbar />}
+                    mode="onTouched"
+                    defaultValues={{}}
+                >
+                    <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+                        <Grid item xs={24} md={16}>
+                            <Typography variant="h6" gutterBottom>
+                                {translate('common.edit.title.main')}
+                            </Typography>
+                            <Stack direction='row' gap={2}>
+                                <TextInput
+                                    label="table.field.task.taskCode"
+                                    source="taskCode"
+                                    readOnly
+                                    parse={v => v}
+                                    autoFocus
+                                />
+                                <TextInput
+                                    label="table.field.task.taskStatus"
+                                    readOnly
+                                    source="taskStatus$"
+                                />
+                                <TextInput
+                                    label="table.field.task.taskType"
+                                    source="taskType$"
+                                    readOnly
+                                />
+                                <TextInput
+                                    label="table.field.task.orgLoc"
+                                    source="orgLoc"
+                                    readOnly
+                                    parse={v => v}
+                                />
+                                <TextInput
+                                    label="table.field.task.targLoc"
+                                    source="targLoc"
+                                    readOnly
+                                    parse={v => v}
+                                />
+                                <TextInput
+                                    label="table.field.task.orgSite"
+                                    source="orgSite"
+                                    readOnly
+                                    parse={v => v}
+                                />
+                            </Stack>
+                            <Stack direction='row' gap={2}>
+                                <TextInput
+                                    label="table.field.task.targSite"
+                                    source="targSite"
+                                    readOnly
+                                    parse={v => v}
+                                />
+                                <TextInput
+                                    label="table.field.task.barcode"
+                                    source="barcode"
+                                    readOnly
+                                    parse={v => v}
+                                />
+                                <NumberInput
+                                    label="table.field.task.sort"
+                                    source="sort"
+                                />
+                            </Stack>
+                        </Grid>
                     </Grid>
-                    <Grid item xs={12} md={4}>
-                        <Typography variant="h6" gutterBottom>
-                            {translate('common.edit.title.common')}
-                        </Typography>
-                        <StatusSelectInput />
-                        <Box mt="2em" />
-                        <MemoInput />
-                    </Grid>
+                </SimpleForm>
+            </Edit >
+            <Card sx={{ marginTop: '1em', }}>
+                <Grid item xs={24} md={16} sx={{ margin: '1em' }}>
+                    <Typography variant="h6" gutterBottom >
+                        {translate('common.edit.title.common')}
+                    </Typography>
+                    <TaskItemList />
                 </Grid>
-            </SimpleForm>
-        </Edit >
+            </Card>
+        </>
     )
 }
 
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 86afa4c..dc8eceb 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -18,6 +18,7 @@
     useTranslate,
     useNotify,
     useRefresh,
+    useDataProvider,
     useListContext,
     FunctionField,
     TextField,
@@ -36,7 +37,7 @@
     DeleteButton,
     Button,
 } from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
+import { Box, Typography, Card, Stack, Drawer } from '@mui/material';
 import { styled } from '@mui/material/styles';
 import TaskCreate from "./TaskCreate";
 import TaskPanel from "./TaskPanel";
@@ -62,14 +63,14 @@
     '& .column-name': {
     },
     '& .opt': {
-        width: 200
+        width: 248
     },
 }));
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
-    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
-    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
+    <DateInput label='common.time.after' source="timeStart" />,
+    <DateInput label='common.time.before' source="timeEnd" />,
     <TextInput source="taskCode" label="table.field.task.taskCode" />,
     <NumberInput source="taskStatus" label="table.field.task.taskStatus" />,
     <NumberInput source="taskType" label="table.field.task.taskType" />,
@@ -101,7 +102,7 @@
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
-
+    const [data, setData] = useState([]);    
     return (
         <Box display="flex">
             <List
@@ -120,16 +121,13 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                         <SelectColumnsButton preferenceKey='task' />
-                        {/* <MyExportButton /> */}
                     </TopToolbar>
                 )}
                 perPage={DEFAULT_PAGE_SIZE}
             >
                 <StyledDatagrid
                     preferenceKey='task'
-                    // bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                     bulkActionButtons={
                         <>
                             <BulkResortButton />
@@ -137,10 +135,10 @@
                             <BulkDeleteButton mutationMode={OPERATE_MODE} />
                         </>
                     }
-                    rowClick={(id, resource, record) => false}
-                    expand={() => <TaskPanel />}
+                    rowClick={'edit'}
+                    expand={false}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'createBy', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'sort']}
+                    omit={['id', 'createTime', 'createBy', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status', 'sort']}
                 >
                     <NumberField source="id" />
                     <TextField source="taskCode" label="table.field.task.taskCode" />
@@ -156,18 +154,13 @@
                     <TextField source="expDesc" label="table.field.task.expDesc" />
                     <NumberField source="sort" label="table.field.task.sort" />
                     <TextField source="expCode" label="table.field.task.expCode" />
-                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
-                        <TextField source="nickname" />
-                    </ReferenceField>
+                    <TextField source="updateBy$" label="common.field.updateBy"/>
+                    <TextField source="createBy$" label="common.field.createBy"/>
                     <DateField source="updateTime" label="common.field.updateTime" showTime />
-                    <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
-                        <TextField source="nickname" />
-                    </ReferenceField>
                     <DateField source="createTime" label="common.field.createTime" showTime />
-                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+                    {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */}
                     <TextField source="memo" label="common.field.memo" sortable={false} />
                     <WrapperField cellClassName="opt" label="common.field.opt">
-                        {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
                         <DoneButton sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton>
                         <CancelButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                         <SetTopButton sx={{ padding: '1px', fontSize: '.75rem' }} ></SetTopButton>
@@ -185,6 +178,8 @@
 }
 
 export default TaskList;
+
+
 /**
  * 瀹屾垚鎿嶄綔
  * @returns 
diff --git a/rsf-admin/src/page/task/TaskPanel.jsx b/rsf-admin/src/page/task/TaskPanel.jsx
index dd7db7f..a207d24 100644
--- a/rsf-admin/src/page/task/TaskPanel.jsx
+++ b/rsf-admin/src/page/task/TaskPanel.jsx
@@ -1,36 +1,15 @@
 import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
+import { Box } from '@mui/material';
 import {
     List,
     DatagridConfigurable,
-    SearchInput,
-    TopToolbar,
-    SelectColumnsButton,
-    EditButton,
-    FilterButton,
-    CreateButton,
-    ExportButton,
-    BulkDeleteButton,
-    WrapperField,
     useRecordContext,
     useTranslate,
-    useNotify,
-    useListContext,
-    FunctionField,
     TextField,
     NumberField,
     DateField,
     BooleanField,
     ReferenceField,
-    TextInput,
-    DateTimeInput,
-    DateInput,
-    SelectInput,
-    NumberInput,
-    ReferenceInput,
-    ReferenceArrayInput,
-    AutocompleteInput,
-    DeleteButton,
 } from 'react-admin';
 import { styled } from '@mui/material/styles';
 import PageDrawer from "../components/PageDrawer";
@@ -51,43 +30,15 @@
     },
 }));
 
-const filters = [
-    <SearchInput source="condition" alwaysOn />,
-    <DateInput label='common.time.after' source="timeStart"  />,
-    <DateInput label='common.time.before' source="timeEnd" />,
-    <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
-    <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
-    <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
-    <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
-    <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
-    <TextInput source="maktx" label="table.field.taskItem.maktx" />,
-    <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
-    <TextInput source="unit" label="table.field.taskItem.unit" />,
-    <NumberInput source="anfme" label="table.field.taskItem.anfme" />,
-    <TextInput source="batch" label="table.field.taskItem.batch" />,
-    <TextInput source="spec" label="table.field.taskItem.spec" />,
-    <TextInput source="model" label="table.field.taskItem.model" />,
-    <TextInput label="common.field.memo" source="memo" />,
-    <SelectInput
-        label="common.field.status"
-        source="status"
-        choices={[
-            { id: '1', name: 'common.enums.statusTrue' },
-            { id: '0', name: 'common.enums.statusFalse' },
-        ]}
-        resettable
-    />,
-]
-
 const TaskPanel = () => {
+    const record = useRecordContext();
     const translate = useTranslate();
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
-
     return (
         <>
             <Box display="flex">
-                <List
+                <List resource="taskItem"
                     sx={{
                         flexGrow: 1,
                         transition: (theme) =>
@@ -96,22 +47,17 @@
                             }),
                         marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                     }}
+                    filter={{ taskId: record.id }}
                     title={"menu.taskItem"}
+                    pagination={false}
                     empty={false}
-                    filters={filters}
-                    sort={{ field: "create_time", order: "desc" }}
-                    actions={(
-                        <TopToolbar>
-                            <FilterButton />
-                        </TopToolbar>
-                    )}
-                    perPage={DEFAULT_PAGE_SIZE}
+                    actions={false}
                 >
                     <StyledDatagrid
                         preferenceKey='taskItem'
                         bulkActionButtons={false}
-                        rowClick={(id, resource, record) => false}
-                        expandSingle={true}
+                        rowClick={false}
+                        expandSingle
                         omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']}
                     >
                         <NumberField source="id" />
@@ -127,24 +73,14 @@
                         <TextField source="batch" label="table.field.taskItem.batch" />
                         <TextField source="spec" label="table.field.taskItem.spec" />
                         <TextField source="model" label="table.field.taskItem.model" />
-                        <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
-                            <TextField source="nickname" />
-                        </ReferenceField>
+                        <TextField source="updateBy$" label="common.field.updateBy"/>
+                        <TextField source="createBy$" label="common.field.createBy"/>
                         <DateField source="updateTime" label="common.field.updateTime" showTime />
-                        <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
-                            <TextField source="nickname" />
-                        </ReferenceField>
                         <DateField source="createTime" label="common.field.createTime" showTime />
                         <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                         <TextField source="memo" label="common.field.memo" sortable={false} />
                     </StyledDatagrid>
                 </List>
-                <PageDrawer
-                    title='TaskItem Detail'
-                    drawerVal={drawerVal}
-                    setDrawerVal={setDrawerVal}
-                >
-                </PageDrawer>
             </Box>
         </>
     );
diff --git a/rsf-admin/src/page/task/index.jsx b/rsf-admin/src/page/task/index.jsx
index 85c3ffe..1a48e09 100644
--- a/rsf-admin/src/page/task/index.jsx
+++ b/rsf-admin/src/page/task/index.jsx
@@ -9,7 +9,6 @@
 import TaskEdit from "./TaskEdit";
 
 export default {
-    
     list: TaskList,
     edit: TaskEdit,
     show: ShowGuesser,
diff --git a/rsf-admin/src/page/taskItem/TaskItemList.jsx b/rsf-admin/src/page/taskItem/TaskItemList.jsx
index d146e6d..e137031 100644
--- a/rsf-admin/src/page/taskItem/TaskItemList.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -38,6 +38,8 @@
 import MyField from "../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
 import * as Common from '@/utils/common';
+import MyCreateButton from "../components/MyCreateButton";
+import TaskItemCreate from "../task/TaskItemCreate";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -104,7 +106,7 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
+                        <MyCreateButton onClick={() => { setCreateDialog(true) }} />
                         <SelectColumnsButton preferenceKey='taskItem' />
                         {/* <MyExportButton /> */}
                     </TopToolbar>
@@ -132,7 +134,6 @@
                     <TextField source="batch" label="table.field.taskItem.batch" />
                     <TextField source="spec" label="table.field.taskItem.spec" />
                     <TextField source="model" label="table.field.taskItem.model" />
-
                     <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                         <TextField source="nickname" />
                     </ReferenceField>
@@ -145,6 +146,9 @@
                     <TextField source="memo" label="common.field.memo" sortable={false} />
                 </StyledDatagrid>
             </List>
+            <TaskItemCreate
+                open={createDialog}
+                setOpen={setCreateDialog} />
             <PageDrawer
                 title='TaskItem Detail'
                 drawerVal={drawerVal}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index 3b2dbe6..72da8c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -243,4 +243,14 @@
         return mobileService.taskGetLocs(code);
     }
 
+    @ApiOperation("涓�閿敹璐�")
+    @PostMapping("/complete/{id}")
+    @PreAuthorize("hasAuthority('manager:asnOrder:update')")
+    public R completeOrder(@PathVariable Long id) {
+        if (Objects.isNull(id)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return mobileService.completeOrder(id, getLoginUserId());
+    }
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index 7b624a4..a1c2e6f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -57,4 +57,6 @@
     R taskToStock(String code);
 
     R taskGetLocs(String code) throws Exception;
+
+    R completeOrder(Long id, Long loginUserId);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index ea767f7..ae44e15 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -317,7 +317,7 @@
 //            //鏃ュ織琛ㄦ搷浣�
 //            operateOrderLogs(asnOrder);
 //        }
-        return R.ok("鎿嶄綔鎴愬姛");
+        return R.ok(asnOrder);
     }
 
     /**
@@ -723,6 +723,11 @@
         return R.ok();
     }
 
+    @Override
+    public R completeOrder(Long id, Long loginUserId) {
+      return  asnOrderMapper.completeOrder(id, loginUserId);
+    }
+
     /**
      * 鑾峰彇ReceiptDetlsDtos
      */
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 1afc3c5..2fa0bcc 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
 #    username: root
-#    url: jdbc:mysql://localhost:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+#    url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: rsf
     password: 34821015
     type: com.alibaba.druid.pool.DruidDataSource

--
Gitblit v1.9.1