From 07895c65b99fa43f8e54f5054bd8351a71158143 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期四, 17 十月 2024 21:17:28 +0800
Subject: [PATCH] 工艺路线绑定优化

---
 src/views/demo/form/AppendForm.vue |  308 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 189 insertions(+), 119 deletions(-)

diff --git a/src/views/demo/form/AppendForm.vue b/src/views/demo/form/AppendForm.vue
index d35eaa0..80ba3e0 100644
--- a/src/views/demo/form/AppendForm.vue
+++ b/src/views/demo/form/AppendForm.vue
@@ -1,133 +1,203 @@
 <template>
   <PageWrapper title="琛ㄥ崟澧炲垹绀轰緥">
-    <CollapseContainer title="琛ㄥ崟澧炲垹">
+    <CollapseContainer title="琛ㄥ崟椤瑰鍒�">
       <BasicForm @register="register" @submit="handleSubmit">
         <template #add="{ field }">
-          <Button v-if="Number(field) === 0" @click="add">+</Button>
-          <Button class="ml-2" v-if="Number(field) === 0" @click="batchAdd">
+          <a-button v-if="Number(field) === 0" @click="add">+</a-button>
+          <a-button class="ml-2" v-if="Number(field) === 0" @click="batchAdd">
             鎵归噺娣诲姞琛ㄥ崟閰嶇疆
-          </Button>
-          <Button v-if="field > 0" @click="del(field)">-</Button>
+          </a-button>
+          <a-button v-if="Number(field) > 0" @click="() => del(field)">-</a-button>
         </template>
       </BasicForm>
     </CollapseContainer>
+    <CollapseContainer title="琛ㄥ崟缁勫鍒�" class="my-3">
+      <a-button @click="setGroup">璁剧疆鍒濆鍊�</a-button>
+      <a-button class="m-2" @click="addGroup"> 鎵归噺娣诲姞琛ㄥ崟 </a-button>
+      <a-button @click="delGroup">鎵归噺鍑忓皯琛ㄥ崟</a-button>
+      <BasicForm @register="registerGroup" @submit="handleSubmitGroup" />
+    </CollapseContainer>
   </PageWrapper>
 </template>
-<script lang="ts">
-  import { defineComponent, ref } from 'vue';
-  import { BasicForm, useForm } from '/@/components/Form/index';
-  import { CollapseContainer } from '/@/components/Container';
-  import { Input } from 'ant-design-vue';
-  import { PageWrapper } from '/@/components/Page';
-  import { Button } from '/@/components/Button';
+<script lang="ts" setup>
+  import { ref } from 'vue';
+  import { BasicForm, useForm } from '@/components/Form';
+  import { CollapseContainer } from '@/components/Container';
+  import { PageWrapper } from '@/components/Page';
 
-  export default defineComponent({
-    components: { BasicForm, CollapseContainer, PageWrapper, [Input.name]: Input, Button },
-    setup() {
-      const [register, { appendSchemaByField, removeSchemaByField, validate }] = useForm({
-        schemas: [
-          {
-            field: 'field0a',
-            component: 'Input',
-            label: '瀛楁0',
-            required: true,
-          },
-          {
-            field: 'field0b',
-            component: 'Input',
-            label: '瀛楁0',
-            required: true,
-          },
-          {
-            field: '0',
-            component: 'Input',
-            label: ' ',
-            slot: 'add',
-          },
-        ],
-        labelWidth: 100,
-        actionColOptions: { span: 24 },
-        baseColProps: { span: 8 },
-      });
+  import { useMessage } from '@/hooks/web/useMessage';
 
-      async function handleSubmit() {
-        try {
-          const data = await validate();
-          console.log(data);
-        } catch (e) {
-          console.log(e);
-        }
-      }
-
-      const n = ref(1);
-
-      function add() {
-        appendSchemaByField(
-          {
-            field: `field${n.value}a`,
-            component: 'Input',
-            label: '瀛楁' + n.value,
-            required: true,
-          },
-          '',
-        );
-        appendSchemaByField(
-          {
-            field: `field${n.value}b`,
-            component: 'Input',
-            label: '瀛楁' + n.value,
-            required: true,
-          },
-          '',
-        );
-
-        appendSchemaByField(
-          {
-            field: `${n.value}`,
-            component: 'Input',
-            label: ' ',
-            slot: 'add',
-          },
-          '',
-        );
-        n.value++;
-      }
-      /**
-       * @description: 鎵归噺娣诲姞
-       */
-      function batchAdd() {
-        appendSchemaByField(
-          [
-            {
-              field: `field${n.value}a`,
-              component: 'Input',
-              label: '瀛楁' + n.value,
-              required: true,
-            },
-            {
-              field: `field${n.value}b`,
-              component: 'Input',
-              label: '瀛楁' + n.value,
-              required: true,
-            },
-            {
-              field: `${n.value}`,
-              component: 'Input',
-              label: ' ',
-              slot: 'add',
-            },
-          ],
-          '',
-        );
-        n.value++;
-      }
-
-      function del(field) {
-        removeSchemaByField([`field${field}a`, `field${field}b`, `${field}`]);
-        n.value--;
-      }
-
-      return { register, handleSubmit, add, del, batchAdd };
-    },
+  const { createMessage } = useMessage();
+  const count = ref(0);
+  const [register, { appendSchemaByField, removeSchemaByField, validate }] = useForm({
+    schemas: [
+      {
+        field: 'field0a',
+        component: 'Input',
+        label: '瀛楁0',
+        required: true,
+      },
+      {
+        field: 'field0b',
+        component: 'Input',
+        label: '瀛楁0',
+        required: true,
+      },
+      {
+        field: '0',
+        label: ' ',
+        slot: 'add',
+      },
+    ],
+    labelWidth: 100,
+    actionColOptions: { span: 24 },
+    baseColProps: { span: 8 },
   });
+
+  async function handleSubmit() {
+    try {
+      const data = await validate();
+      createMessage.success('璇峰墠寰�鎺у埗鍙版煡鐪嬭緭鍑�');
+      console.log(data);
+    } catch (e) {
+      console.log(e);
+    }
+  }
+
+  const n = ref(1);
+
+  function add() {
+    appendSchemaByField(
+      {
+        field: `field${n.value}a`,
+        component: 'Input',
+        label: '瀛楁' + n.value,
+        required: true,
+      },
+      '',
+    );
+    appendSchemaByField(
+      {
+        field: `field${n.value}b`,
+        component: 'Input',
+        label: '瀛楁' + n.value,
+        required: true,
+      },
+      '',
+    );
+
+    appendSchemaByField(
+      {
+        field: `${n.value}`,
+        component: 'Input',
+        label: ' ',
+        slot: 'add',
+      },
+      '',
+    );
+    n.value++;
+  }
+  /**
+   * @description: 鎵归噺娣诲姞
+   */
+  function batchAdd() {
+    appendSchemaByField(
+      [
+        {
+          field: `field${n.value}a`,
+          component: 'Input',
+          label: '瀛楁' + n.value,
+          required: true,
+        },
+        {
+          field: `field${n.value}b`,
+          component: 'Input',
+          label: '瀛楁' + n.value,
+          required: true,
+        },
+        {
+          field: `${n.value}`,
+          component: 'Input',
+          label: ' ',
+          slot: 'add',
+        },
+      ],
+      '',
+    );
+    n.value++;
+  }
+
+  function del(field: string) {
+    removeSchemaByField([`field${field}a`, `field${field}b`, `${field}`]);
+    n.value--;
+  }
+  const [
+    registerGroup,
+    {
+      appendSchemaByField: appendSchemaByFieldGroup,
+      removeSchemaByField: removeSchemaByFieldGroup,
+      getFieldsValue: getFieldsValueGroup,
+      setFieldsValue,
+    },
+  ] = useForm({
+    schemas: [
+      {
+        field: `field[${count.value}].a`,
+        component: 'Input',
+        label: '瀛楁a',
+        colProps: { span: 9 },
+      },
+      {
+        field: `field[${count.value}].b`,
+        colProps: { span: 9 },
+        component: 'Input',
+        label: '瀛楁b',
+      },
+    ],
+    labelWidth: 100,
+    actionColOptions: { span: 24 },
+    baseColProps: { span: 8 },
+  });
+
+  function addGroup() {
+    count.value++;
+    appendSchemaByFieldGroup(
+      [
+        {
+          field: `field[${count.value}].a`,
+          component: 'Input',
+          colProps: { span: 9 },
+          label: '瀛楁a',
+        },
+        {
+          field: `field[${count.value}].b`,
+          component: 'Input',
+          colProps: { span: 9 },
+          label: '瀛楁b',
+        },
+      ],
+      '',
+    );
+  }
+
+  function delGroup() {
+    removeSchemaByFieldGroup([`field[${count.value}].a`, `field[${count.value}].b`]);
+    count.value--;
+  }
+
+  function setGroup() {
+    setFieldsValue({
+      field: [
+        {
+          a: '榛樿a',
+          b: '榛樿b',
+        },
+      ],
+    });
+  }
+
+  function handleSubmitGroup() {
+    createMessage.success('璇峰墠寰�鎺у埗鍙版煡鐪嬭緭鍑�');
+    console.log(getFieldsValueGroup());
+  }
 </script>

--
Gitblit v1.9.3