Browse Source

fix(router): 修改商品列表编辑

tangning 3 years ago
parent
commit
aa1584b49f

+ 1 - 1
.env.development

@@ -7,7 +7,7 @@ VITE_PUBLIC_PATH = /
 # Cross-domain proxy, you can configure multiple
 # Please note that no line breaks
 # http://192.168.0.38:8190/shop
-VITE_PROXY = [["/basic-api","http://192.168.0.47:8190"],["/upload","http://localhost:3300/upload"],["/zfb-api","http://192.168.0.47:7081"]]
+VITE_PROXY = [["/basic-api","https://cszfb.4dkankan.com/basic-api"],["/upload","http://localhost:3300/upload"],["/zfb-api","https://cszfb.4dkankan.com"]]
 #["/zfb-api","http://192.168.0.47:7081"]]
 # VITE_PROXY=[["/api","https://vvbin.cn/test"]]
 

+ 10 - 0
src/api/product/list.ts

@@ -10,12 +10,22 @@ enum Api {
   delete = '/basic-api/goods/delete',
   info = '/basic-api/goods/info/',
   update = '/basic-api/goods/update',
+  queryAll = '/basic-api/specification/queryAll',
 }
 
 /**
  * @description: Get sample list value
  */
 
+export const queryAll = (params?: PageParams) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.queryAll,
+    params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
 export const ListApi = (params: PageParams) =>
   defHttp.post<RentListGetResultModel>({
     url: Api.pageList,

+ 6 - 0
src/views/product/drawer.data.ts

@@ -78,6 +78,12 @@ export const formSchema: FormSchema[] = [
     ],
   },
   {
+    field: 'goodsgg',
+    label: '商品规格',
+    slot: 'goodsgg',
+    component: 'Input',
+  },
+  {
     field: 'detailed',
     label: '规格明细',
     slot: 'detailed',

+ 129 - 0
src/views/product/goodsSpecs.vue

@@ -0,0 +1,129 @@
+<template>
+  <div>
+    <BasicForm
+      @register="register"
+      @submit="handleSubmit"
+      @resetFunc="addBut"
+      :submitButtonOptions="{ type: 'default', text: '生成规格明细' }"
+      :resetButtonOptions="{ text: '添加规格项目' }"
+    >
+      <template #but>
+        <Button v-if="ggList.number > 1" icon="ci:close-big" @click="del">
+          <Icon icon="ci:close-big" />
+        </Button>
+      </template>
+    </BasicForm>
+  </div>
+</template>
+<script lang="ts">
+  import { defineComponent, ref } from 'vue';
+  import { Icon } from '/@/components/Icon';
+  import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
+  import { uploadApi } from '/@/api/advertisement/list';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { queryAll } from '/@/api/product/list';
+
+  export default defineComponent({
+    components: { BasicForm, Icon },
+    setup() {
+      const addSchemas = (val = 1) => {
+        return [
+          {
+            field: 'goodsSn' + val,
+            label: '规格值',
+            component: 'Input',
+            colProps: {
+              span: 8,
+            },
+          },
+          {
+            field: 'listPicUrl' + val,
+            component: 'Upload',
+            label: '规格图',
+            colProps: {
+              span: 10,
+            },
+            componentProps: {
+              api: uploadApi,
+              maxNumber: 15,
+              afterFetch: function (data) {
+                Reflect.set(data, 'url', data.message);
+                return data;
+              },
+            },
+            required: true,
+          },
+          {
+            field: 'but' + val,
+            label: '',
+            slot: 'but',
+            component: 'Input',
+            colProps: {
+              span: 4,
+            },
+          },
+        ];
+      };
+      const schemas: FormSchema[] = [
+        {
+          field: 'specsId',
+          label: '规格名',
+          component: 'ApiTreeSelect',
+          colProps: {
+            span: 18,
+          },
+          componentProps: {
+            api: queryAll,
+            fieldNames: {
+              label: 'name',
+              key: 'id',
+              value: 'id',
+            },
+          },
+        },
+      ];
+      const { createMessage } = useMessage();
+      const [register, { setProps, removeSchemaByFiled, appendSchemaByField }] = useForm({
+        labelWidth: 120,
+        schemas: schemas.concat(addSchemas(1)),
+        baseColProps: {
+          span: 16,
+        },
+        actionColOptions: {
+          span: 12,
+        },
+      });
+
+      let ggList = ref({
+        number: 1,
+        list: [],
+      });
+      function del(field) {
+        removeSchemaByFiled([`field${field}a`, `field${field}b`, `${field}`]);
+        ggList.value.number--;
+      }
+      function addBut() {
+        console.log('addBut');
+        let number = ggList.value.number + 1;
+        let list = addSchemas(number);
+        console.log('list', list);
+        list.map((ele) => {
+          appendSchemaByField(ele, '');
+        });
+        ggList.value.number = number;
+      }
+      return {
+        register,
+        schemas,
+        handleSubmit: (values: any) => {
+          createMessage.success('click search,values:' + JSON.stringify(values));
+        },
+        addSchemas,
+        setProps,
+        ggList,
+        del,
+        addBut,
+      };
+    },
+  });
+</script>

+ 16 - 3
src/views/product/productDrawer.vue

@@ -8,6 +8,9 @@
     @ok="handleSubmit"
   >
     <BasicForm @register="registerForm">
+      <template #goodsgg>
+        <goodsSpecs ref="goodsRef" />
+      </template>
       <template #detailed>
         <table class="detailed">
           <thead>
@@ -46,6 +49,7 @@
   import { BasicForm, useForm } from '/@/components/Form/index';
   import { formSchema } from './drawer.data';
   import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
+  import goodsSpecs from './goodsSpecs.vue';
   import { InfoApi, UpdateSaleApi } from '/@/api/product/list';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useI18n } from '/@/hooks/web/useI18n';
@@ -55,10 +59,11 @@
 
   export default defineComponent({
     name: 'ProductDrawer',
-    components: { BasicDrawer, BasicForm },
+    components: { BasicDrawer, BasicForm, goodsSpecs },
     emits: ['success', 'register'],
     setup(_, { emit }) {
       const isUpdate = ref(true);
+      const goodsRef = ref();
       const { createMessage } = useMessage();
       const { t } = useI18n();
       let editData = ref({});
@@ -118,7 +123,7 @@
         if (unref(isUpdate)) {
           let res = await InfoApi(data.record.id);
           editData.value = res;
-          console.log('setFieldsValueres', res, formItemvalue);
+          console.log('setFieldsValueres', res);
           setFieldsValue({
             ...res,
             listPicUrl: [encodeURI(res.listPicUrl.split('?')[0])],
@@ -155,7 +160,15 @@
         }
       }
 
-      return { registerDrawer, registerForm, itemRegister, getTitle, editData, handleSubmit };
+      return {
+        goodsRef,
+        registerDrawer,
+        registerForm,
+        itemRegister,
+        getTitle,
+        editData,
+        handleSubmit,
+      };
     },
   });
 </script>