Przeglądaj źródła

feat: 资料清单模板增加文件编辑功能

lanjianrong 2 lat temu
rodzic
commit
56aca5b16c

+ 1 - 1
config/config.ts

@@ -25,7 +25,7 @@ export default defineConfig({
   mfsu: {},
   fastRefresh: true,
   unocss: {
-    watch: ['src/pages/**/*.{jsx,tsx,less}', 'src/components/**/*.{jsx,tsx,less}'] // 添加其他包含 unocss 的 classname 的文件目录
+    watch: ['src/{pages,components}/**/*.{jsx,tsx,less}'] // 添加其他包含 unocss 的 classname 的文件目录
   },
   // Fast Refresh 热更新
   theme: {},

+ 20 - 12
src/pages/Business/Inventory/hooks/useRowScript.tsx

@@ -1,5 +1,5 @@
 import {
-  createTemplateFile,
+  saveTemplateFile,
   createTemplateFolder,
   delProfileTemplate,
   moveTemplate,
@@ -17,7 +17,7 @@ import { message, Modal, TreeNodeProps } from 'antd'
 import consts from '@/utils/consts'
 interface IState {
   list?: API.ProfileTemplateItem[]
-  record?: API.ProfileTemplateItem
+  record?: Nullable<API.ProfileTemplateItem>
 }
 
 /** 格式化树表数据 */
@@ -70,7 +70,7 @@ export function useRowScript(modal: ModalAction) {
   const [state, setState] = useState<IState>({})
   const { refresh, loading } = useRequest(queryProfileTemplateList, {
     onSuccess: (result?: API.ProfileTemplateItem[]) => {
-      setState({ ...state, list: formatTreeTable(result) || [] })
+      setState({ ...state, list: formatTreeTable(result) || [], record: null })
     }
   })
 
@@ -131,21 +131,32 @@ export function useRowScript(modal: ModalAction) {
   }
 
   /** 新建文件 */
-  const addFile = () => {
+  const addFile = (mode?: 'add' | 'update' = 'add') => {
+    console.log(mode)
+
     modal.open({
-      title: '新增文件',
+      title: mode === 'add' ? '新增文件' : '编辑文件',
       okText: '确认',
       type: 'form',
       cancelText: '取消',
-      initialValues: { parentID: state.record?.ID, enable: 0, required: 1 },
+      initialValues:
+        mode === 'add'
+          ? { parentID: state.record?.ID, enable: 0, required: 1 }
+          : {
+              ...state.record,
+              enable: Number(!!state.record?.enable),
+              required: Number(!!state.record?.required)
+            },
       children: (
         <ProForm submitter={false} layout="horizontal" labelCol={{ span: 4 }} isKeyPressSubmit>
           <ProFormTreeSelect
             name="parentID"
             label="父节点"
             fieldProps={{ options: formatTreeNode(state.list) }}
+            hidden={mode === 'update'}
             rules={[{ required: true, message: '请选择目录节点' }]}
           />
+          <ProFormTreeSelect name="ID" label="父节点" hidden />
           <ProFormText name="name" label="名称" rules={[{ required: true, message: '请输入目录名称' }]} />
           <ProFormRadio.Group
             options={[
@@ -157,10 +168,7 @@ export function useRowScript(modal: ModalAction) {
             rules={[{ required: true, message: '请选择' }]}
           />
           <ProFormRadio.Group
-            options={[
-              { label: '是', value: 1 },
-              { label: '否', value: 0 }
-            ]}
+            options={[{ label: '是', value: 1 }, -{ label: '否', value: 0 }]}
             name="required"
             label="是否必填"
             rules={[{ required: true, message: '请选择' }]}
@@ -177,13 +185,13 @@ export function useRowScript(modal: ModalAction) {
         </ProForm>
       ),
       onOk: async (values: any) => {
-        const { code = -1 } = await createTemplateFile({
+        const { code = -1 } = await saveTemplateFile({
           ...values,
           required: !!values.required,
           enable: !!values.enable
         })
         if (code === consts.RET_CODE.SUCCESS) {
-          message.success('新增文件成功')
+          message.success(`${mode === 'add' ? '新增' : '编辑'}文件成功`)
           modal.close()
           refresh()
         }

+ 10 - 2
src/pages/Business/Inventory/index.tsx

@@ -122,7 +122,12 @@ const Inventory = () => {
                 <Button icon={<FolderAddOutlined />} size="small" type="primary" ghost onClick={addFolder}>
                   新建目录
                 </Button>
-                <Button icon={<FileAddOutlined />} size="small" type="primary" ghost onClick={addFile}>
+                <Button
+                  icon={<FileAddOutlined />}
+                  size="small"
+                  type="primary"
+                  ghost
+                  onClick={() => addFile()}>
                   新建文件
                 </Button>
                 <Button
@@ -130,7 +135,10 @@ const Inventory = () => {
                   size="small"
                   type="primary"
                   ghost
-                  onClick={editFolder}
+                  onClick={() => {
+                    record?.folder && editFolder()
+                    !record?.folder && addFile('update')
+                  }}
                   disabled={!record}>
                   编辑
                 </Button>

+ 3 - 3
src/services/api/business.ts

@@ -13,11 +13,11 @@ export async function createTemplateFolder(params: { name: string; parentID: str
   })
 }
 
-/** 清单模板 创建文件 */
-export async function createTemplateFile(
+/** 清单模板 创建/更新文件 */
+export async function saveTemplateFile(
   params: Required<Omit<API.ProfileTemplateItem, 'ID' | 'sort' | 'folder' | 'children'>>
 ) {
-  return request('/form/v1/profile/template/file/create', {
+  return request('/form/v1/profile/template/file/save', {
     method: 'POST',
     data: params
   })