|
|
@@ -92,6 +92,7 @@ const isCheckedStock = computed(() => {
|
|
|
});
|
|
|
|
|
|
const currentChannel = ref<any>();
|
|
|
+const selectedChannelForSearch = ref<any>();
|
|
|
|
|
|
const rules: FormRules = {
|
|
|
memberName: {
|
|
|
@@ -236,21 +237,18 @@ const columns: DataTableColumns<ProductItem> = [
|
|
|
width: 120,
|
|
|
render: (row: any) => {
|
|
|
return (
|
|
|
- console.log(currentChannel.value, 'currentChannel'),
|
|
|
- (
|
|
|
- <div>
|
|
|
- {row.channelVOS.map((it: Api.government.ChannelVO) => {
|
|
|
- if (it.channelId == currentChannel.value?.id) {
|
|
|
- return (
|
|
|
- <div>
|
|
|
- {it.channelName}:¥{it.price}
|
|
|
- </div>
|
|
|
- );
|
|
|
- }
|
|
|
- return null;
|
|
|
- })}
|
|
|
- </div>
|
|
|
- )
|
|
|
+ <div>
|
|
|
+ {row.channelVOS.map((it: Api.government.ChannelVO) => {
|
|
|
+ if (it.channelId == currentChannel.value?.id) {
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ {it.channelName}:¥{it.price}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
);
|
|
|
}
|
|
|
},
|
|
|
@@ -265,78 +263,87 @@ const columns: DataTableColumns<ProductItem> = [
|
|
|
}
|
|
|
];
|
|
|
|
|
|
-const [registerModalTable, { refresh, getTableCheckedRowKeys, getTableData, setFieldsValue, setTableCheckedRowKeys }] =
|
|
|
- useTable({
|
|
|
- searchFormConfig: {
|
|
|
- schemas: [
|
|
|
- // {
|
|
|
- // label: '销售渠道',
|
|
|
- // component: 'ApiSelect',
|
|
|
- // field: 'channelNo',
|
|
|
- // componentProps: {
|
|
|
- // api: fetchFirstChannel,
|
|
|
- // resultFeild: 'data',
|
|
|
- // labelFeild: 'channelName',
|
|
|
- // valueFeild: 'channelNo'
|
|
|
- // }
|
|
|
- // },
|
|
|
- {
|
|
|
- label: '销售渠道',
|
|
|
- component: 'NSelect',
|
|
|
- field: 'channelNo',
|
|
|
- render: form => {
|
|
|
- return (
|
|
|
- <NSelect
|
|
|
- v-model:value={form.model.channelNo}
|
|
|
- placeholder="请选择销售渠道"
|
|
|
- options={channelOptions.value}
|
|
|
- on-update:value={changeChannel}
|
|
|
- ></NSelect>
|
|
|
- );
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '门店名称',
|
|
|
- component: 'ApiSelect',
|
|
|
- field: 'shopId',
|
|
|
- componentProps: {
|
|
|
- api: fetchGetStoreList,
|
|
|
- resultFeild: 'data.list',
|
|
|
- labelFeild: 'shopName',
|
|
|
- valueFeild: 'shopId'
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '商品名称',
|
|
|
- component: 'NInput',
|
|
|
- field: 'skuName',
|
|
|
- componentProps: {
|
|
|
- placeholder: '请输入商品名称'
|
|
|
+const [
|
|
|
+ registerModalTable,
|
|
|
+ { refresh, getTableCheckedRowKeys, getTableData, setFieldsValue, setTableCheckedRowKeys, getSeachForm }
|
|
|
+] = useTable({
|
|
|
+ searchFormConfig: {
|
|
|
+ schemas: [
|
|
|
+ // {
|
|
|
+ // label: '销售渠道',
|
|
|
+ // component: 'ApiSelect',
|
|
|
+ // field: 'channelNo',
|
|
|
+ // componentProps: {
|
|
|
+ // api: fetchFirstChannel,
|
|
|
+ // resultFeild: 'data',
|
|
|
+ // labelFeild: 'channelName',
|
|
|
+ // valueFeild: 'channelNo'
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ label: '销售渠道',
|
|
|
+ component: 'NSelect',
|
|
|
+ field: 'channelNo',
|
|
|
+ render: form => {
|
|
|
+ return (
|
|
|
+ <NSelect
|
|
|
+ v-model:value={form.model.channelNo}
|
|
|
+ placeholder="请选择销售渠道"
|
|
|
+ options={channelOptions.value}
|
|
|
+ on-update:value={changeChannel}
|
|
|
+ ></NSelect>
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '门店名称',
|
|
|
+ component: 'ApiSelect',
|
|
|
+ field: 'shopId',
|
|
|
+ componentProps: {
|
|
|
+ api: fetchGetStoreList,
|
|
|
+ clearable: false,
|
|
|
+ resultFeild: 'data.list',
|
|
|
+ labelFeild: 'shopName',
|
|
|
+ valueFeild: 'shopId',
|
|
|
+ getOptions: (options: any) => {
|
|
|
+ setFieldsValue({
|
|
|
+ shopId: options[0]?.shopId || ''
|
|
|
+ });
|
|
|
}
|
|
|
- },
|
|
|
- {
|
|
|
- label: '商品ID',
|
|
|
- component: 'NInput',
|
|
|
- field: 'keywords'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '商品编码',
|
|
|
- component: 'NInput',
|
|
|
- field: 'skuCode'
|
|
|
}
|
|
|
- ],
|
|
|
- inline: false,
|
|
|
- size: 'small',
|
|
|
- labelPlacement: 'left',
|
|
|
- isFull: false
|
|
|
- },
|
|
|
- tableConfig: {
|
|
|
- keyField: 'skuId',
|
|
|
- title: '商品列表',
|
|
|
- showAddButton: false,
|
|
|
- minHeight: 650
|
|
|
- }
|
|
|
- });
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '商品名称',
|
|
|
+ component: 'NInput',
|
|
|
+ field: 'skuName',
|
|
|
+ componentProps: {
|
|
|
+ placeholder: '请输入商品名称'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '商品ID',
|
|
|
+ component: 'NInput',
|
|
|
+ field: 'keywords'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '商品编码',
|
|
|
+ component: 'NInput',
|
|
|
+ field: 'skuCode'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ inline: false,
|
|
|
+ size: 'small',
|
|
|
+ labelPlacement: 'left',
|
|
|
+ isFull: false
|
|
|
+ },
|
|
|
+ tableConfig: {
|
|
|
+ keyField: 'skuId',
|
|
|
+ title: '商品列表',
|
|
|
+ showAddButton: false,
|
|
|
+ minHeight: 650,
|
|
|
+ defaultParamsNotReset: ['channelNo', 'shopId']
|
|
|
+ }
|
|
|
+});
|
|
|
|
|
|
const [registerModal, { openModal, closeModal, setModalProps }] = useModal({
|
|
|
title: `商品选择(已选${model.value.giftConfigJson.length}项)`,
|
|
|
@@ -356,7 +363,9 @@ function changeChannel(value: string, opt: any) {
|
|
|
channelNo: value
|
|
|
});
|
|
|
console.log(11111111111, value, opt);
|
|
|
- currentChannel.value = opt;
|
|
|
+ // currentChannel.value = opt;
|
|
|
+ // 修改:不直接更新currentChannel,而是更新待搜索的渠道
|
|
|
+ selectedChannelForSearch.value = opt;
|
|
|
}
|
|
|
function getChannel() {
|
|
|
fetchFirstChannel().then(res => {
|
|
|
@@ -369,7 +378,7 @@ function getChannel() {
|
|
|
});
|
|
|
currentChannel.value = channelOptions.value[0];
|
|
|
|
|
|
- console.log(res);
|
|
|
+ console.log(222222222, res);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -543,18 +552,28 @@ async function handleAdd(type: string) {
|
|
|
setFieldsValue({
|
|
|
channelNo: channelOptions.value[0]?.value
|
|
|
});
|
|
|
- console.log(11111111111, channelOptions.value[0]?.value);
|
|
|
|
|
|
await nextTick();
|
|
|
- setTimeout(() => {
|
|
|
- refresh();
|
|
|
- }, 1000);
|
|
|
+ // setTimeout(() => {
|
|
|
+ // refresh();
|
|
|
+ // }, 1000);
|
|
|
+ fetchRefresh();
|
|
|
if (model.value.giftConfigJson.length) {
|
|
|
const selectedKeys = model.value.giftConfigJson.map((item: any) => item.skuId);
|
|
|
setTableCheckedRowKeys(selectedKeys);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+// 确保商店已选择再刷新
|
|
|
+function fetchRefresh() {
|
|
|
+ setTimeout(() => {
|
|
|
+ if (getSeachForm().shopId) {
|
|
|
+ refresh();
|
|
|
+ } else {
|
|
|
+ fetchRefresh();
|
|
|
+ }
|
|
|
+ }, 500);
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* 商品项去重:根据 skuId + shopId 唯一判断
|
|
|
@@ -623,6 +642,13 @@ function handleCheckedChange(checked: boolean) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function handleSearch() {
|
|
|
+ console.log('handleSearch');
|
|
|
+ if (selectedChannelForSearch.value) {
|
|
|
+ currentChannel.value = selectedChannelForSearch.value;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
if (route.query.id) {
|
|
|
if (route.query.mode === 'detail') {
|
|
|
@@ -1030,8 +1056,8 @@ onMounted(() => {
|
|
|
:columns="columns"
|
|
|
:api="fetchGoodsList"
|
|
|
:default-params="{ channelCode: 'XSB' }"
|
|
|
- default-params-not-reset="channelNo"
|
|
|
@register="registerModalTable"
|
|
|
+ @search="handleSearch"
|
|
|
></ZTable>
|
|
|
</LayoutTable>
|
|
|
</BasicModal>
|