|
@@ -7,7 +7,38 @@
|
|
|
:title="getTitle"
|
|
|
@ok="handleSubmit"
|
|
|
>
|
|
|
- <BasicForm @register="registerForm" />
|
|
|
+ <BasicForm @register="registerForm">
|
|
|
+ <template #detailed>
|
|
|
+ <table class="detailed">
|
|
|
+ <thead>
|
|
|
+ <tr style="">
|
|
|
+ <th style="min-width: 130px">{{ editData.categoryName }}</th>
|
|
|
+ <th>库存</th>
|
|
|
+ <th>规格编码</th>
|
|
|
+ <th>市场价</th>
|
|
|
+ <th>销售价</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr>
|
|
|
+ <td>{{ editData.goodsNumber }}</td>
|
|
|
+ <td><input type="text" id="name" v-model="editData.goodsNumber" /></td>
|
|
|
+ <td><input type="text" id="age" v-model="editData.isNew" /></td>
|
|
|
+ <td><input type="text" id="school" v-model="editData.marketPrice" /></td>
|
|
|
+ <td><input type="text" id="school" v-model="editData.retailPrice" /></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </template>
|
|
|
+ <template #formItem>
|
|
|
+ <BasicForm @register="itemRegister" @submit="handleSubmit">
|
|
|
+ <template #add="{ field }">
|
|
|
+ <Button v-if="Number(field) === 0" @click="add">+</Button>
|
|
|
+ <Button v-if="field > 0" @click="del(field)">-</Button>
|
|
|
+ </template>
|
|
|
+ </BasicForm>
|
|
|
+ </template>
|
|
|
+ </BasicForm>
|
|
|
</BasicDrawer>
|
|
|
</template>
|
|
|
<script lang="ts">
|
|
@@ -15,8 +46,12 @@
|
|
|
import { BasicForm, useForm } from '/@/components/Form/index';
|
|
|
import { formSchema } from './drawer.data';
|
|
|
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
|
|
|
-
|
|
|
+ import { InfoApi, UpdateSaleApi } from '/@/api/product/list';
|
|
|
+ import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
+ import { useI18n } from '/@/hooks/web/useI18n';
|
|
|
// import { getMenuList } from '/@/api/system/system';
|
|
|
+ import { makeTree } from '/@/utils/treeUtils';
|
|
|
+ import { categoryApi } from '/@/api/product/category';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'ProductDrawer',
|
|
@@ -24,22 +59,70 @@
|
|
|
emits: ['success', 'register'],
|
|
|
setup(_, { emit }) {
|
|
|
const isUpdate = ref(true);
|
|
|
-
|
|
|
+ const { createMessage } = useMessage();
|
|
|
+ const { t } = useI18n();
|
|
|
+ let editData = ref({});
|
|
|
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
|
|
|
labelWidth: 120,
|
|
|
schemas: formSchema,
|
|
|
showActionButtonGroup: false,
|
|
|
baseColProps: { lg: 18, md: 18, offset: 1 },
|
|
|
});
|
|
|
-
|
|
|
+ const [itemRegister, {}] = useForm({
|
|
|
+ // formItemValue :validate appendSchemaByField, removeSchemaByFiled,
|
|
|
+ schemas: [
|
|
|
+ {
|
|
|
+ field: 'goodsId',
|
|
|
+ label: '规格名',
|
|
|
+ component: 'ApiTreeSelect',
|
|
|
+ componentProps: {
|
|
|
+ api: async () => {
|
|
|
+ const res = await categoryApi();
|
|
|
+ const treeData = makeTree(res);
|
|
|
+ return treeData;
|
|
|
+ },
|
|
|
+ fieldNames: {
|
|
|
+ label: 'name',
|
|
|
+ key: 'id',
|
|
|
+ value: 'id',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'goodsSn',
|
|
|
+ component: 'Input',
|
|
|
+ label: '字段0',
|
|
|
+ colProps: {
|
|
|
+ span: 8,
|
|
|
+ },
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: '0',
|
|
|
+ component: 'Input',
|
|
|
+ label: ' ',
|
|
|
+ colProps: {
|
|
|
+ span: 8,
|
|
|
+ },
|
|
|
+ slot: 'add',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ labelWidth: 100,
|
|
|
+ actionColOptions: { span: 24 },
|
|
|
+ });
|
|
|
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
|
|
resetFields();
|
|
|
setDrawerProps({ confirmLoading: false });
|
|
|
isUpdate.value = !!data?.isUpdate;
|
|
|
-
|
|
|
+ console.log('setFieldsValue', data.record);
|
|
|
if (unref(isUpdate)) {
|
|
|
+ let res = await InfoApi(data.record.id);
|
|
|
+ editData.value = res;
|
|
|
+ console.log('setFieldsValueres', res, formItemvalue);
|
|
|
setFieldsValue({
|
|
|
- ...data.record,
|
|
|
+ ...res,
|
|
|
+ listPicUrl: [encodeURI(res.listPicUrl.split('?')[0])],
|
|
|
+ primaryPicUrl: [encodeURI(res.primaryPicUrl.split('?')[0])],
|
|
|
steamRoom: data.record?.steamRoom?.name,
|
|
|
});
|
|
|
}
|
|
@@ -55,9 +138,16 @@
|
|
|
async function handleSubmit() {
|
|
|
try {
|
|
|
const values = await validate();
|
|
|
+ console.log('values', values);
|
|
|
+ let subData = await UpdateSaleApi({
|
|
|
+ ...editData.value,
|
|
|
+ ...values,
|
|
|
+ });
|
|
|
+ console.log('setFieldsValue', subData);
|
|
|
setDrawerProps({ confirmLoading: true });
|
|
|
// TODO custom api
|
|
|
console.log(values);
|
|
|
+ createMessage.success(t('common.optSuccess'));
|
|
|
closeDrawer();
|
|
|
emit('success');
|
|
|
} finally {
|
|
@@ -65,7 +155,31 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return { registerDrawer, registerForm, getTitle, handleSubmit };
|
|
|
+ return { registerDrawer, registerForm, itemRegister, getTitle, editData, handleSubmit };
|
|
|
},
|
|
|
});
|
|
|
</script>
|
|
|
+
|
|
|
+<style scoped lang="less">
|
|
|
+ :deep(.detailed) {
|
|
|
+ .title {
|
|
|
+ display: flex;
|
|
|
+ span,
|
|
|
+ input,
|
|
|
+ div {
|
|
|
+ flex-grow: 1;
|
|
|
+ }
|
|
|
+ input {
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+ .name {
|
|
|
+ flex-grow: 2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tr {
|
|
|
+ th {
|
|
|
+ font-weight: 500;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|