diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/balance.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/balance.js index 8db82447..3acc7956 100644 --- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/balance.js +++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/balance.js @@ -14,10 +14,9 @@ export default { const onCommand = async (item, rows) => { console.log(item.path, item, rows); }; - let notify = null; - const showMessage = (data) => { - notify?.close(); - notify = ElNotification({ + const showMessage = async (data) => { + await ElNotification.closeAll(); + ElNotification({ position: "bottom-right", title: "提示", message: `待同步库存数量: ${data}`, diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/log.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/log.js index ac06dd0c..40ca2b0b 100644 --- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/log.js +++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/views/vmi/log.js @@ -1,10 +1,11 @@ import AppList from "../../../components/list/index.js"; import html from "html"; import useConfig from "../../../models/vmi/log.js"; -import { ref } from "vue"; +import { ref, onMounted, onUnmounted } from "vue"; import { schemaToModel } from "../../utils/index.js"; import AppForm from "../../../components/form/index.js"; import AppTable from "../../components/table/index.js"; +import { ElNotification } from "element-plus"; import request, { getUrl } from "../../request/index.js"; export default { @@ -79,6 +80,28 @@ export default { addDialogVisible.value = true; console.log(item.path, item, rows); }; + const showMessage = async (data) => { + await ElNotification.closeAll(); + ElNotification({ + position: "bottom-right", + title: "提示", + message: `待同步库存数量: ${data}`, + duration: 0, + }); + }; + const event = "VmiBalance"; + onMounted(async () => { + const result = await request("settleaccount/vmi-async-message/get-message-count", null, { method: "POST" }); + if (!result.errors) { + showMessage(result.data); + } + PubSub.subscribe(event, async (_, data) => { + if (route.path === "/vmi/log") { + showMessage(data); + } + }); + }); + onUnmounted(() => PubSub.unsubscribe(event)); return { appListRef, loading, diff --git a/code/src/Shared/Win.Sfs.Shared/Filter/FilterExtensions.cs b/code/src/Shared/Win.Sfs.Shared/Filter/FilterExtensions.cs index 5518ea1a..5dd3e149 100644 --- a/code/src/Shared/Win.Sfs.Shared/Filter/FilterExtensions.cs +++ b/code/src/Shared/Win.Sfs.Shared/Filter/FilterExtensions.cs @@ -78,7 +78,6 @@ namespace Win.Sfs.Shared.Filter //var constant = Expression.Constant(filterCondition.Value);//创建常数 ConstantExpression constant = null; - if (filterCondition.Action != EnumFilterAction.In && filterCondition.Action != EnumFilterAction.NotIn) { constant = CreateConstantExpression(member.Type, filterCondition.Value); @@ -152,13 +151,12 @@ namespace Win.Sfs.Shared.Filter if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) { - var type = propertyType.GetGenericArguments()[0]; - var objValue = type.IsEnum ? (Enum)Enum.Parse(type, value, true) : Convert.ChangeType(value, type); - constant = Expression.Constant(new NullableConverter(propertyType).ConvertFrom(objValue)); + var objValue = new NullableConverter(propertyType).ConvertFromString(value); + constant = Expression.Constant(objValue, propertyType); } else if (propertyType.IsEnum) { - var enumValue = (Enum?)Enum.Parse(propertyType, value, true); + var enumValue = (Enum)Enum.Parse(propertyType, value, true); constant = Expression.Constant(enumValue); } else @@ -177,11 +175,7 @@ namespace Win.Sfs.Shared.Filter return constant; } - public static T? CreateNullable(this T item) where T : struct - { - T? v = (T?)(new NullableConverter(typeof(T?))).ConvertFrom(item); - return v; - } + private static Expression> GetExpressionLikeMethod(string methodName, FilterCondition filterCondition) {