|
@@ -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>
|