|
@@ -1,40 +1,74 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <BasicForm @register="register" @submit="handleSubmit">
|
|
|
+ <BasicForm
|
|
|
+ @register="register"
|
|
|
+ :showResetButton="false"
|
|
|
+ :showSubmitButton="false"
|
|
|
+ @submit="handleSubmit"
|
|
|
+ >
|
|
|
<template #but="{ field }">
|
|
|
<Icon
|
|
|
size="20px"
|
|
|
v-if="showBut(field, false)"
|
|
|
icon="ion:remove-circle-outline"
|
|
|
- @click="del.bind(null, field)"
|
|
|
- />{{ field }}
|
|
|
+ @click="del(field)"
|
|
|
+ />
|
|
|
</template>
|
|
|
<template #parentBut="{ field }">
|
|
|
<Icon
|
|
|
size="28px"
|
|
|
v-if="showBut(field, true)"
|
|
|
icon="ion:remove-circle-outline"
|
|
|
- @click="parentDel.bind(null, field)"
|
|
|
- />{{ field }}
|
|
|
+ @click="parentDel(field)"
|
|
|
+ />
|
|
|
</template>
|
|
|
<template #addAttribute="{ field }">
|
|
|
- <a-button @click="addBut.bind(null, field)"> 添加属性值 </a-button>
|
|
|
+ <a-button @click="addBut(field)"> 添加属性值 </a-button>
|
|
|
+ </template>
|
|
|
+ <template #formFooter>
|
|
|
+ <div>
|
|
|
+ <a-button style="margin-right: 30px" @click="addBut">添加规格项目</a-button>
|
|
|
+ <a-button @click="handleSubmit">生成规格明细</a-button>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</BasicForm>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script lang="ts">
|
|
|
- import { defineComponent, ref, reactive } from 'vue';
|
|
|
+ import { defineComponent, ref, reactive, onMounted } 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 { useMessage } from '/@/hooks/web/useMessage';
|
|
|
import { queryAll } from '/@/api/product/list';
|
|
|
|
|
|
+ interface valList {
|
|
|
+ name: string;
|
|
|
+ picUrl: string;
|
|
|
+ uuid: string;
|
|
|
+ }
|
|
|
+ interface ProductListItem {
|
|
|
+ uuidLink: string;
|
|
|
+ goodsNumber?: string;
|
|
|
+ goodsSn?: string;
|
|
|
+ retailPrice?: string;
|
|
|
+ marketPrice?: string;
|
|
|
+ }
|
|
|
+ interface EditDataType {
|
|
|
+ name: string;
|
|
|
+ specificationId: string;
|
|
|
+ val: valList[];
|
|
|
+ }
|
|
|
export default defineComponent({
|
|
|
components: { BasicForm, Icon },
|
|
|
- emits: ['update'],
|
|
|
- setup(_, { emit }) {
|
|
|
+ props: {
|
|
|
+ editdata: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {},
|
|
|
+ },
|
|
|
+ },
|
|
|
+ emits: ['update', 'editdata'],
|
|
|
+ setup(props, { emit }) {
|
|
|
let ggList = reactive({
|
|
|
goodsNumber: 1,
|
|
|
specsNumber: 1,
|
|
@@ -46,6 +80,9 @@
|
|
|
},
|
|
|
});
|
|
|
let specsObj = ref({});
|
|
|
+ onMounted(() => {
|
|
|
+ initialize();
|
|
|
+ });
|
|
|
const addSchemas = (number = ggList.specsNumber, val = 1, type = true) => {
|
|
|
console.log('addButlist', number + '_' + val, ggList);
|
|
|
let parentList: FormSchema[] = [
|
|
@@ -131,20 +168,65 @@
|
|
|
console.log('parentList', type, concatList, 'list', list);
|
|
|
return type ? concatList : list;
|
|
|
};
|
|
|
- const { createMessage } = useMessage();
|
|
|
const [
|
|
|
register,
|
|
|
- { setProps, removeSchemaByFiled, appendSchemaByField, validate, getFieldsValue },
|
|
|
+ {
|
|
|
+ setProps,
|
|
|
+ setFieldsValue,
|
|
|
+ removeSchemaByFiled,
|
|
|
+ appendSchemaByField,
|
|
|
+ validate,
|
|
|
+ getFieldsValue,
|
|
|
+ },
|
|
|
] = useForm({
|
|
|
labelWidth: 120,
|
|
|
schemas: addSchemas(ggList.specsNumber, ggList.goodsNumber, true),
|
|
|
baseColProps: {
|
|
|
span: 16,
|
|
|
},
|
|
|
- actionColOptions: {
|
|
|
- span: 12,
|
|
|
- },
|
|
|
});
|
|
|
+ function initialize() {
|
|
|
+ //初始化组装数据
|
|
|
+ let goodsgg = [],
|
|
|
+ setVlaue: {};
|
|
|
+ if (props.editdata.guigeArr) {
|
|
|
+ let guigeArr = JSON.parse(props.editdata.guigeArr);
|
|
|
+ guigeArr.map((ele, index) => {
|
|
|
+ if (index == 0) {
|
|
|
+ if (ele.val.length == 1) {
|
|
|
+ //不需要新增form item 可直接赋值
|
|
|
+ setVlaue = {
|
|
|
+ ...setVlaue,
|
|
|
+ name_1: ele.specificationId,
|
|
|
+ goodsSn_1_1: ele.val[0].name,
|
|
|
+ picUrl_1_1: [ele.val[0].picUrl],
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ //新增一个属性值item
|
|
|
+ setVlaue[`name_${index}`] = ele.specificationId;
|
|
|
+ for (var valIndex = 1; valIndex < ele.val.length; valIndex++) {
|
|
|
+ addBut(`add_${valIndex}`);
|
|
|
+ setVlaue[`goodsSn_${index}_${valIndex}`] = ele.val[valIndex].name;
|
|
|
+ setVlaue[`picUrl_${index}_${valIndex}`] = ele.val[valIndex].picUrl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ setVlaue[`name_${index}`] = ele.specificationId;
|
|
|
+ for (var valIndex = 1; valIndex < ele.val.length; valIndex++) {
|
|
|
+ addBut(`add_${valIndex}`);
|
|
|
+ setVlaue[`goodsSn_${index}_${valIndex}`] = ele.val[valIndex].name;
|
|
|
+ setVlaue[`picUrl_${index}_${valIndex}`] = ele.val[valIndex].picUrl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setFieldsValue(setVlaue);
|
|
|
+ console.log('index', index, ele, setVlaue);
|
|
|
+ });
|
|
|
+ console.log('初始化数据', guigeArr, 'props', props.editdata, goodsgg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function setForm() {
|
|
|
+ 0;
|
|
|
+ }
|
|
|
function del(field) {
|
|
|
let number = Number(field.split('_')[0]);
|
|
|
let item = Number(field.split('_')[1]);
|
|
@@ -183,19 +265,9 @@
|
|
|
let goodsNumber = ggList.goodsNumber;
|
|
|
let specsNumber = ggList.specsNumber;
|
|
|
if (typeof val == 'string') {
|
|
|
- console.log('addBut');
|
|
|
let number = Number(val.split('_')[1]);
|
|
|
let { value, list } = ggList.list[number];
|
|
|
value++;
|
|
|
- console.log(
|
|
|
- 'addBut',
|
|
|
- list,
|
|
|
- value,
|
|
|
- 'number',
|
|
|
- number,
|
|
|
- 'ggList.goodsNumber.list',
|
|
|
- ggList.list[number].value,
|
|
|
- );
|
|
|
list.push(value);
|
|
|
let filed = number + '_' + ggList.list[number].value;
|
|
|
ggList.list[number] = {
|
|
@@ -203,7 +275,6 @@
|
|
|
list,
|
|
|
};
|
|
|
let listSchemas = addSchemas(number, goodsNumber + 1, false).reverse();
|
|
|
- console.log('addButlist', filed, list, ggList);
|
|
|
listSchemas.map((ele) => {
|
|
|
appendSchemaByField(ele, filed);
|
|
|
});
|
|
@@ -216,7 +287,6 @@
|
|
|
list: [1],
|
|
|
};
|
|
|
let list = addSchemas(specsNumber, 1, true);
|
|
|
- console.log('addSchemasList', list, await getFieldsValue());
|
|
|
list.map((ele) => {
|
|
|
appendSchemaByField(ele, '');
|
|
|
});
|
|
@@ -251,19 +321,26 @@
|
|
|
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 = [];
|
|
|
+ let goodsSpecificationList: EditDataType[] = [],
|
|
|
+ productList: ProductListItem[] = [];
|
|
|
+ console.log('ggList', ggList.list, data, ggList.specsNumber);
|
|
|
+ for (let index = 1; index < ggList.specsNumber + 1; index++) {
|
|
|
+ let ele = ggList.list[index];
|
|
|
+ let name = getData[`name_${index}`];
|
|
|
+ let val: valList[] = [];
|
|
|
ele.list.map((element) => {
|
|
|
- console.log('element', getData, `picUrl_${index + 1}_${element}`);
|
|
|
+ console.log('element', getData, `picUrl_${index}_${element}`);
|
|
|
val.push({
|
|
|
- name: getData[`goodsSn_${index + 1}_${element}`],
|
|
|
- picUrl: getData[`picUrl_${index + 1}_${element}`][0],
|
|
|
- uuid: `${index + 1}-${element}`,
|
|
|
+ name: getData[`goodsSn_${index}_${element}`],
|
|
|
+ picUrl: getData[`picUrl_${index}_${element}`][0],
|
|
|
+ uuid: `${index}-${element}`,
|
|
|
+ });
|
|
|
+ productList.push({
|
|
|
+ goodsNumber: '',
|
|
|
+ goodsSn: '',
|
|
|
+ marketPrice: '',
|
|
|
+ retailPrice: '',
|
|
|
+ uuidLink: `${index}_${element}`,
|
|
|
});
|
|
|
});
|
|
|
console.log('ggList', val, specsObj.value);
|
|
@@ -273,22 +350,11 @@
|
|
|
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));
|
|
|
+ // createMessage.success('click search,values:' + JSON.stringify(values));
|
|
|
}
|
|
|
-
|
|
|
- // const submitButtonOptions = { type: 'default', text: '生成规格明细' } as UseButtonProps;
|
|
|
- // const resetButtonOptions = { text: '添加规格项目', onClick: addBut } as UseButtonProps;
|
|
|
-
|
|
|
return {
|
|
|
register,
|
|
|
handleSubmit,
|
|
@@ -301,6 +367,8 @@
|
|
|
showBut,
|
|
|
getData,
|
|
|
specsObj,
|
|
|
+ initialize,
|
|
|
+ setForm,
|
|
|
};
|
|
|
},
|
|
|
});
|