Parcourir la source

feat(goods): fixed type error

gemercheung il y a 3 ans
Parent
commit
0ca8d39352
2 fichiers modifiés avec 92 ajouts et 79 suppressions
  1. 65 65
      src/views/product/goodsSpecs.vue
  2. 27 14
      src/views/product/productDrawer.vue

+ 65 - 65
src/views/product/goodsSpecs.vue

@@ -1,18 +1,12 @@
 <template>
 <template>
   <div>
   <div>
-    <BasicForm
-      @register="register"
-      @submit="handleSubmit"
-      @resetFunc="addBut"
-      :submitButtonOptions="{ type: 'default', text: '生成规格明细' }"
-      :resetButtonOptions="{ text: '添加规格项目', onClick: addBut }"
-    >
+    <BasicForm @register="register" @submit="handleSubmit">
       <template #but="{ field }">
       <template #but="{ field }">
         <Icon
         <Icon
           size="20px"
           size="20px"
           v-if="showBut(field, false)"
           v-if="showBut(field, false)"
           icon="ion:remove-circle-outline"
           icon="ion:remove-circle-outline"
-          @click="del(field)"
+          @click="del.bind(null, field)"
         />{{ field }}
         />{{ field }}
       </template>
       </template>
       <template #parentBut="{ field }">
       <template #parentBut="{ field }">
@@ -20,11 +14,11 @@
           size="28px"
           size="28px"
           v-if="showBut(field, true)"
           v-if="showBut(field, true)"
           icon="ion:remove-circle-outline"
           icon="ion:remove-circle-outline"
-          @click="parentDel(field)"
+          @click="parentDel.bind(null, field)"
         />{{ field }}
         />{{ field }}
       </template>
       </template>
       <template #addAttribute="{ field }">
       <template #addAttribute="{ field }">
-        <Button @click="addBut(field)"> 添加属性值 </Button>
+        <a-button @click="addBut.bind(null, field)"> 添加属性值 </a-button>
       </template>
       </template>
     </BasicForm>
     </BasicForm>
   </div>
   </div>
@@ -39,7 +33,7 @@
 
 
   export default defineComponent({
   export default defineComponent({
     components: { BasicForm, Icon },
     components: { BasicForm, Icon },
-    emits: ['setEditData'],
+    emits: ['update'],
     setup(_, { emit }) {
     setup(_, { emit }) {
       let ggList = reactive({
       let ggList = reactive({
         goodsNumber: 1,
         goodsNumber: 1,
@@ -152,20 +146,20 @@
         },
         },
       });
       });
       function del(field) {
       function del(field) {
-        let numbler = Number(field.split('_')[0]);
+        let number = Number(field.split('_')[0]);
         let item = Number(field.split('_')[1]);
         let item = Number(field.split('_')[1]);
-        let { list, value } = ggList.list[numbler];
+        let { list, value } = ggList.list[number];
         console.log(
         console.log(
           item,
           item,
-          'numbler',
-          numbler,
+          'number',
+          number,
           list,
           list,
           value,
           value,
           'listfield',
           'listfield',
           list.filter((ele) => ele !== item),
           list.filter((ele) => ele !== item),
         );
         );
         removeSchemaByFiled([`goodsSn_${field}`, `picUrl_${field}`, `${field}`]);
         removeSchemaByFiled([`goodsSn_${field}`, `picUrl_${field}`, `${field}`]);
-        ggList.list[numbler] = {
+        ggList.list[number] = {
           value: value - 1,
           value: value - 1,
           list: list.filter((ele) => ele !== value - 1),
           list: list.filter((ele) => ele !== value - 1),
         };
         };
@@ -190,25 +184,25 @@
         let specsNumber = ggList.specsNumber;
         let specsNumber = ggList.specsNumber;
         if (typeof val == 'string') {
         if (typeof val == 'string') {
           console.log('addBut');
           console.log('addBut');
-          let numbler = Number(val.split('_')[1]);
-          let { value, list } = ggList.list[numbler];
+          let number = Number(val.split('_')[1]);
+          let { value, list } = ggList.list[number];
           value++;
           value++;
           console.log(
           console.log(
             'addBut',
             'addBut',
             list,
             list,
             value,
             value,
-            'numbler',
-            numbler,
+            'number',
+            number,
             'ggList.goodsNumber.list',
             'ggList.goodsNumber.list',
-            ggList.list[numbler].value,
+            ggList.list[number].value,
           );
           );
           list.push(value);
           list.push(value);
-          let filed = numbler + '_' + ggList.list[numbler].value;
-          ggList.list[numbler] = {
+          let filed = number + '_' + ggList.list[number].value;
+          ggList.list[number] = {
             value,
             value,
             list,
             list,
           };
           };
-          let listSchemas = addSchemas(numbler, goodsNumber + 1, false).reverse();
+          let listSchemas = addSchemas(number, goodsNumber + 1, false).reverse();
           console.log('addButlist', filed, list, ggList);
           console.log('addButlist', filed, list, ggList);
           listSchemas.map((ele) => {
           listSchemas.map((ele) => {
             appendSchemaByField(ele, filed);
             appendSchemaByField(ele, filed);
@@ -236,10 +230,10 @@
         if (type) {
         if (type) {
           //父级
           //父级
           key = Number(item[1]);
           key = Number(item[1]);
-          let arry = Object.keys(ggList.list || []);
-          console.log('item', arry);
-          console.log('item', item, show, ggList.list, 'arry', arry);
-          if (!(arry && arry.length > 1)) return false;
+          let array = Object.keys(ggList.list || []);
+          console.log('item', array);
+          console.log('item', item, show, ggList.list, 'array', array);
+          if (!(array && array.length > 1)) return false;
         } else {
         } else {
           //子集
           //子集
           key = Number(item[0]);
           key = Number(item[0]);
@@ -253,45 +247,51 @@
         let getData = await getFieldsValue();
         let getData = await getFieldsValue();
         console.log('getData', val, data, getData);
         console.log('getData', val, data, getData);
       }
       }
+
+      async function handleSubmit() {
+        let data = await validate();
+        let getData = await getFieldsValue();
+        let goodsSpecificationList = [],
+          productList = [];
+        console.log('ggList', ggList.list, data);
+        for (let index = 0; index < ggList.specsNumber; index++) {
+          let ele = ggList.list[index + 1];
+          let name = getData[`name_${index + 1}`];
+          let val = [];
+          ele.list.map((element) => {
+            console.log('element', getData, `picUrl_${index + 1}_${element}`);
+            val.push({
+              name: getData[`goodsSn_${index + 1}_${element}`],
+              picUrl: getData[`picUrl_${index + 1}_${element}`][0],
+              uuid: `${index + 1}-${element}`,
+            });
+          });
+          console.log('ggList', val, specsObj.value);
+          let item = {
+            name: name,
+            specificationId: specsObj.value[name],
+            val,
+          };
+          goodsSpecificationList.push(item);
+          productList.push({
+            goodsNumber: null,
+            goodsSn: null,
+            marketPrice: null,
+            retailPrice: null,
+            uuidLink: '1-1',
+          });
+        }
+        console.log('update', { goodsSpecificationList, productList });
+        emit('update', { goodsSpecificationList, productList });
+        createMessage.success('click search,values:' + JSON.stringify(values));
+      }
+
+      // const submitButtonOptions = { type: 'default', text: '生成规格明细' } as UseButtonProps;
+      // const resetButtonOptions = { text: '添加规格项目', onClick: addBut } as UseButtonProps;
+
       return {
       return {
         register,
         register,
-        handleSubmit: async (values: any) => {
-          let data = await validate();
-          let getData = await getFieldsValue();
-          let goodsSpecificationList = [],
-            productList = [];
-          console.log('ggList', ggList.list, data);
-          for (let index = 0; index < ggList.specsNumber; index++) {
-            let ele = ggList.list[index + 1];
-            let name = getData[`name_${index + 1}`];
-            let val = [];
-            ele.list.map((element) => {
-              console.log('element', getData, `picUrl_${index + 1}_${element}`);
-              val.push({
-                name: getData[`goodsSn_${index + 1}_${element}`],
-                picUrl: getData[`picUrl_${index + 1}_${element}`][0],
-                uuid: `${index + 1}-${element}`,
-              });
-            });
-            console.log('ggList', val, specsObj.value);
-            let item = {
-              name: name,
-              specificationId: specsObj.value[name],
-              val,
-            };
-            goodsSpecificationList.push(item);
-            productList.push({
-              goodsNumber: null,
-              goodsSn: null,
-              marketPrice: null,
-              retailPrice: null,
-              uuidLink: '1-1',
-            });
-          }
-          console.log('setEditData', { goodsSpecificationList, productList });
-          emit('setEditData', { goodsSpecificationList, productList });
-          createMessage.success('click search,values:' + JSON.stringify(values));
-        },
+        handleSubmit,
         addSchemas,
         addSchemas,
         setProps,
         setProps,
         ggList,
         ggList,

+ 27 - 14
src/views/product/productDrawer.vue

@@ -9,7 +9,7 @@
   >
   >
     <BasicForm @register="registerForm">
     <BasicForm @register="registerForm">
       <template #goodsgg>
       <template #goodsgg>
-        <goodsSpecs @setEditData="setEditData" ref="goodsRef" />
+        <goodsSpecs @update="setEditData" ref="goodsRef" />
       </template>
       </template>
       <template #detailed>
       <template #detailed>
         <table class="detailed">
         <table class="detailed">
@@ -35,14 +35,14 @@
           </tbody>
           </tbody>
         </table>
         </table>
       </template>
       </template>
-      <template #formItem>
+      <!-- <template #formItem>
         <BasicForm @register="itemRegister" @submit="handleSubmit">
         <BasicForm @register="itemRegister" @submit="handleSubmit">
           <template #add="{ field }">
           <template #add="{ field }">
-            <Button v-if="Number(field) === 0" @click="add">+</Button>
-            <Button v-if="field > 0" @click="del(field)">-</Button>
+            <a-button v-if="Number(field) === 0" @click="add">+</a-button>
+            <a-button v-if="field > 0" @click="del.bind(null, field)">-</a-button>
           </template>
           </template>
         </BasicForm>
         </BasicForm>
-      </template>
+      </template> -->
     </BasicForm>
     </BasicForm>
   </BasicDrawer>
   </BasicDrawer>
 </template>
 </template>
@@ -56,9 +56,22 @@
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   // import { getMenuList } from '/@/api/system/system';
   // import { getMenuList } from '/@/api/system/system';
-  import { makeTree } from '/@/utils/treeUtils';
+  import { makeTree, TreeNode } from '/@/utils/treeUtils';
   import { categoryApi } from '/@/api/product/category';
   import { categoryApi } from '/@/api/product/category';
 
 
+  interface EditDataType {
+    categoryName: string;
+    productList: ProductListItem[];
+  }
+
+  interface ProductListItem {
+    uuidLink: string;
+    goodsNumber?: string;
+    goodsSn: string;
+    retailPrice: string;
+    marketPrice: string;
+  }
+
   export default defineComponent({
   export default defineComponent({
     name: 'ProductDrawer',
     name: 'ProductDrawer',
     components: { BasicDrawer, BasicForm, goodsSpecs },
     components: { BasicDrawer, BasicForm, goodsSpecs },
@@ -68,7 +81,12 @@
       const goodsRef = ref();
       const goodsRef = ref();
       const { createMessage } = useMessage();
       const { createMessage } = useMessage();
       const { t } = useI18n();
       const { t } = useI18n();
-      let editData = ref({});
+
+      let editData = ref<EditDataType>({
+        categoryName: '',
+        productList: [],
+      });
+
       const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
       const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
         labelWidth: 120,
         labelWidth: 120,
         schemas: formSchema,
         schemas: formSchema,
@@ -83,8 +101,8 @@
             label: '规格名',
             label: '规格名',
             component: 'ApiTreeSelect',
             component: 'ApiTreeSelect',
             componentProps: {
             componentProps: {
-              api: async () => {
-                const res = await categoryApi();
+              api: async (params) => {
+                const res = (await categoryApi(params)) as any as TreeNode[];
                 const treeData = makeTree(res);
                 const treeData = makeTree(res);
                 return treeData;
                 return treeData;
               },
               },
@@ -133,11 +151,6 @@
             steamRoom: data.record?.steamRoom?.name,
             steamRoom: data.record?.steamRoom?.name,
           });
           });
         }
         }
-        // const treeData = await getMenuList();
-        // updateSchema({
-        //   field: 'steamRoom',
-        //   componentProps: { treeData },
-        // });
       });
       });
       function setEditData(value) {
       function setEditData(value) {
         console.log('setEditData', value);
         console.log('setEditData', value);