liaoxujun@qq.com
2024-02-23 6e831c9dd9a46a1dbd727f5f06068c10aef99b46
no message
5个文件已修改
49个文件已添加
5660 ■■■■■ 已修改文件
cy_scdz.DataAccess/DataContext.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.Model/Order/OrderInfo.cs 702 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.Model/Set/PriceSetting.cs 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.Test/OrderInfoControllerTest.cs 537 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.Test/OrderProductionControllerTest.cs 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.Test/PriceSettingControllerTest.cs 658 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoBatchVM.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoImportVM.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoListVM.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoSearcher.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoVM.cs 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionBatchVM.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionImportVM.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionListVM.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionSearcher.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionVM.cs 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingBatchVM.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingImportVM.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingListVM.cs 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingSearcher.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingVM.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.ViewModel/dictionary/DictionaryVMs/DictionaryVM.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Controllers/OrderInfoController.cs 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/BatchDelete.cshtml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/BatchEdit.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/CompleteProduction.cshtml 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Create.cshtml 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Delete.cshtml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Details.cshtml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Edit.cshtml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Import.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/BidOrder/Views/OrderInfo/Index.cshtml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Controllers/OrderProductionController.cs 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/BatchDelete.cshtml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/BatchEdit.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Create.cshtml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Delete.cshtml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Details.cshtml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Edit.cshtml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Import.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Order/Views/OrderProduction/Index.cshtml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Controllers/PriceSettingController.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Controllers/SettingController.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/BatchDelete.cshtml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/BatchEdit.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Create.cshtml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Delete.cshtml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Details.cshtml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Edit.cshtml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Import.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/PriceSetting/Index.cshtml 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/Areas/Setting/Views/Setting/index.cshtml 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/StringExtensions.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cy_scdz.DataAccess/DataContext.cs
@@ -11,6 +11,7 @@
using WalkingTec.Mvvm.Core.Models;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using cy_scdz.Model.Set;
using cy_scdz.Model.Oder;
namespace cy_scdz.DataAccess
{
@@ -20,6 +21,13 @@
        public DbSet<FrameworkUserRole> FrameworkUserRoles { get; set; }
        public DbSet<FrameworkUserGroup> FrameworkUserGroups { get; set; }
        public DbSet<Dictionary> Dictionary { get; set; }
        public DbSet<OderSure> OderSure { get; set; }
        public DbSet<OrderInfo> BidOder { get; set; }
        public DbSet<PriceSetting> PriceSettings { get; set; }
        public DbSet<OrderReceivables> OrderReceivables { get; set; }
        public DbSet<AdvancePayment> AdvancePayment { get; set; }
        public DbSet<OrderProduction> orderProductions { get; set; }
        public DataContext(CS cs)
             : base(cs)
        {
cy_scdz.Model/Order/OrderInfo.cs
New file
@@ -0,0 +1,702 @@
using cy_scdz.Model.Set;
using Microsoft.EntityFrameworkCore;
using NPOI.HPSF;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
namespace cy_scdz.Model.Oder
{
    /// <summary>
    /// 订单详情
    /// </summary>
    public class OrderInfo:BasePoco
    {
        #region 项目一般情况
        /// <summary>
        /// 项目名称
        /// </summary>
        [Display(Name = "项目名称")]
        [Required]
        [Comment("项目名称")]
        public string Title { get; set; }
        /// <summary>
        /// 中标时间
        /// </summary>
        [Display(Name = "中标时间")]
        [Required]
        [Comment("中标时间")]
        public DateTime WinBidTime { get; set; }
        /// <summary>
        /// 初始供货时间
        /// </summary>
        [Display(Name = "初始供货")]
        [Comment("初始供货")]
        public DateTime InitialDeliveryTime { get; set; }
        /// <summary>
        /// 春秋季
        /// </summary>
        [Display(Name = "初始供货季节")]
        [Comment("初始供货季节")]
        public chunqiue Chunqiuji { get; set; }
        /// <summary>
        /// 初始供货时间
        /// 关联字典供货学期选择 父级为key===ghxqi 默认为2学期
        /// </summary>
        [Display(Name = "供货学期")]
        [Comment("供货学期")]
        public Dictionary Semester { get; set; }
        /// <summary>
        /// 供货学期
        /// 供货学期 父级为key===ghxqi 默认为2
        /// </summary>
        [Display(Name = "供货学期")]
        [Required]
        [Comment("供货学期")]
        public Guid SemesterId { get; set; }
        /// <summary>
        /// 中标价格
        /// </summary>
        [Display(Name = "中标价格")]
        [Required]
        [Comment("中标价格")]
        public decimal BidMoney { get; set; } = 0;
        /// <summary>
        /// 供应商       对应父级key为zbgys
        /// </summary>
        [Display(Name = "中标供应商")]
        public Dictionary? Supplier { get; set; }
        /// <summary>
        /// 供应商
        /// </summary>
        [Display(Name = "中标供应商")]
        [Comment("中标供应商")]
        public Guid? SupplierId { get; set; }
        /// <summary>
        /// 订单类别       对应父级key为ddnb
        /// </summary>
        [Display(Name = "订单类别")]
        public Dictionary? BidType { get; set; }
        /// <summary>
        /// 订单类别
        /// </summary>
        [Display(Name = "订单类别")]
        [Comment("订单类别")]
        public Guid? BidTypeId { get; set; }
        /// <summary>
        /// 招标代理费
        /// </summary>
        [Display(Name = "招标代理费")]
        [Comment("招标代理费")]
        public decimal TenderAgentFee { get; set; } = 0;
        #endregion
        #region 收款情况
        /// <summary>
        /// 收款情况
        /// </summary>
        [Display(Name = "收款情况")]
        public List<OrderReceivables> OrderReceivablesStatus { get; set; }
        #endregion
        #region 印刷要求
        #region 作业本
        /// <summary>
        /// 作业本封面纸张       对应父级key为fmzz
        /// </summary>
        [Display(Name = "封面纸张")]
        public Dictionary? WorkbookCoverPaperType { get; set; }
        /// <summary>
        /// 作业本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        [Comment("封面纸张")]
        public Guid? WorkbookCoverPaperTypeId { get; set; }
        /// <summary>
        /// 作业本内页纸张       对应父级key为nyzz
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? WorkbookInnerPaperType { get; set; }
        /// <summary>
        /// 作业本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        [Comment("内页纸张")]
        public Guid? WorkbookInnerPaperTypeId { get; set; }
        /// <summary>
        /// 作业本内页颜色       对应父级key为nyys
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? WorkbookColorType { get; set; }
        /// <summary>
        /// 作业本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        [Comment("内页颜色")]
        public Guid? WorkbookColorTypeId { get; set; }
        /// <summary>
        /// 作业本装订方式       对应父级key为zdfs
        /// </summary>
        [Display(Name = "装订方式")]
        public Dictionary? WorkbookBindingType { get; set; }
        /// <summary>
        /// 作业本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        [Comment("装订方式")]
        public Guid? WorkbookBindingTypeId { get; set; }
        /// <summary>
        /// 内页页码       对应父级key为nyym
        /// </summary>
        [Display(Name = "内页页码")]
        public Dictionary? WorkbookInnerPageCode { get; set; }
        /// <summary>
        /// 内页页码
        /// </summary>
        [Display(Name = "页数")]
        [Comment("内页页码")]
        public Guid? WorkbookInnerPageCodeId { get; set; }
        #endregion
        #region 图画本
        /// <summary>
        /// 图画本封面纸张       对应父级key为fmzz
        /// </summary>
        [Display(Name = "封面纸张")]
        public Dictionary? PictureBookCoverPaperType { get; set; }
        /// <summary>
        /// 图画本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        [Comment("封面纸张")]
        public Guid? PictureBookCoverPaperTypeId { get; set; }
        /// <summary>
        /// 图画本内页纸张       对应父级key为nyzz
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? PictureBookInnerPaperType { get; set; }
        /// <summary>
        /// 图画本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        [Comment("内页纸张")]
        public Guid? PictureBookInnerPaperTypeId { get; set; }
        /// <summary>
        /// 图画本内页颜色       对应父级key为nyys
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? PictureBookColorType { get; set; }
        /// <summary>
        /// 图画本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        [Comment("内页颜色")]
        public Guid? PictureBookColorTypeId { get; set; }
        /// <summary>
        /// 图画本装订方式       对应父级key为zdfs
        /// </summary>
        [Display(Name = "装订方式")]
        public Dictionary? PictureBookBindingType { get; set; }
        /// <summary>
        /// 图画本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        [Comment("装订方式")]
        public Guid? PictureBookBindingTypeId { get; set; }
        /// <summary>
        /// 图画本页码       对应父级key为nyym
        /// </summary>
        [Display(Name = "图画本页码")]
        public Dictionary? PictureBookInnerPageCode { get; set; }
        /// <summary>
        /// 图画本内页页码
        /// </summary>
        [Display(Name = "页数")]
        [Comment("图画本内页页码")]
        public Guid? PictureBookInnerPageCodeId { get; set; }
        #endregion
        #region 大字本
        /// <summary>
        /// 大字本封面纸张       对应父级key为fmzz
        /// </summary>
        [Display(Name = "封面纸张")]
        public Dictionary? LargeCharacterBookCoverPaperType { get; set; }
        /// <summary>
        /// 大字本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        [Comment("封面纸张")]
        public Guid? LargeCharacterBookCoverPaperTypeId { get; set; }
        /// <summary>
        /// 大字本内页纸张       对应父级key为nyzz
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? LargeCharacterBookInnerPaperType { get; set; }
        /// <summary>
        /// 大字本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        [Comment("内页纸张")]
        public Guid? LargeCharacterBookInnerPaperTypeId { get; set; }
        /// <summary>
        /// 大字本内页颜色       对应父级key为nyys
        /// </summary>
        [Display(Name = "内页纸张")]
        public Dictionary? LargeCharacterBookColorType { get; set; }
        /// <summary>
        /// 大字本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        [Comment("内页颜色")]
        public Guid? LargeCharacterBookColorTypeId { get; set; }
        /// <summary>
        /// 大字本装订方式       对应父级key为zdfs
        /// </summary>
        [Display(Name = "装订方式")]
        public Dictionary? LargeCharacterBookBindingType { get; set; }
        /// <summary>
        /// 大字本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        [Comment("装订方式")]
        public Guid? LargeCharacterBookBindingTypeId { get; set; }
        /// <summary>
        /// 大字本内页页码       对应父级key为nyym
        /// </summary>
        [Display(Name = "大字本内页页码")]
        public Dictionary? LargeCharacterBookInnerPageCode { get; set; }
        /// <summary>
        /// 大字本内页页码
        /// </summary>
        [Display(Name = "页数")]
        [Comment("大字本内页页码")]
        public Guid? LargeCharacterBookInnerPageCodeId { get; set; }
        #endregion
        #endregion
        #region 订单数量
        /// <summary>
        /// 订单数量
        /// </summary>
        [Display(Name ="订单数量")]
       public List<OrderProduction> Productions { get; set; }
        #endregion
        #region 确认时间
        /// <summary>
        /// 确认列表
        /// </summary>
        [Display(Name ="确认")]
       public List<OderSure> Sures { get; set; }
        #endregion
        #region 垫资情况
        /// <summary>
        /// 垫资表
        /// </summary>
        [Display(Name = "垫资")]
        public List<AdvancePayment> AdvancePayments { get; set; }
        #endregion
    }
    /// <summary>
    /// 项目收款情况
    /// </summary>
    public class OrderReceivables: BasePoco
    {
        /// <summary>
        /// 项目ID
        /// </summary>
        [Display(Name = "项目ID")]
        [Required]
        [Comment("项目ID")]
        public Guid OderId { get; set; }
        /// <summary>
        /// 项目
        /// </summary>
        [Display(Name = "项目")]
        [Required]
        [Comment("项目")]
        public OrderInfo  Oder { get; set; }
        /// <summary>
        /// 回款时间
        /// </summary>
        [Display(Name = "回款时间")]
        [Required]
        [Comment("回款时间")]
        public DateTime Time { get; set; }
        /// <summary>
        /// 回款金额
        /// </summary>
        [Display(Name = "回款金额")]
        [Required]
        [Comment("回款金额")]
        public decimal ReceivablesMoney { get; set; }
        /// <summary>
        /// 回款名称 例如 2024 年第一学期
        /// </summary>
        [Display(Name = "回款名称")]
        [Required]
        [Comment("回款名称")]
        public string ReceivablesName { get; set; }
    }
    /// <summary>
    /// 订单确认表
    /// </summary>
    public class OderSure: BasePoco
    {
        /// <summary>
        /// 项目ID
        /// </summary>
        [Display(Name = "项目ID")]
        [Required]
        [Comment("项目ID")]
        public Guid OderId { get; set; }
        /// <summary>
        /// 项目
        /// </summary>
        [Display(Name = "项目")]
        [Comment("项目")]
        public OrderInfo Oder { get; set; }
        /// <summary>
        /// 用户ID
        /// </summary>
        [Display(Name = "用户ID")]
        [Required]
        [Comment("用户ID")]
        public Guid UserID { get; set; }
        /// <summary>
        /// 用户
        /// </summary>
        [Display(Name = "用户")]
        public FrameworkUser User { get; set; }
        /// <summary>
        /// 确认时间
        /// </summary>
        [Display(Name = "确认时间")]
        [Comment("确认时间")]
        public DateTime SureTime { get; set; }
        /// <summary>
        /// 标注
        /// </summary>
        [Display(Name = "标注")]
        [Comment("标注")]
        public string Mark { get; set; }
    }
    /// <summary>
    /// 垫资费用表
    /// </summary>
    public class AdvancePayment:BasePoco
    {
        /// <summary>
        /// 项目ID
        /// </summary>
        [Display(Name = "项目ID")]
        [Required]
        [Comment("项目ID")]
        public Guid OderId { get; set; }
        /// <summary>
        /// 项目
        /// </summary>
        [Display(Name = "项目")]
        public OrderInfo Oder { get; set; }
        /// <summary>
        /// 用户ID
        /// </summary>
        [Display(Name = "用户ID")]
        [Required]
        [Comment("用户ID")]
        public Guid UserID { get; set; }
        /// <summary>
        /// 用户
        /// </summary>
        [Display(Name = "用户")]
        public FrameworkUser User { get; set; }
        /// <summary>
        /// 标注
        /// </summary>
        [Display(Name = "标注")]
        [Comment("标注")]
        public string Mark { get; set; }
        /// <summary>
        /// 金额
        /// </summary>
        [Display(Name = "金额")]
        [Comment("金额")]
        public decimal Money { get; set; }
    }
    /// <summary>
    /// 生产单
    /// </summary>
    public class OrderProduction: BasePoco
    {
        /// <summary>
        /// 项目ID
        /// </summary>
        [Display(Name = "项目ID")]
        [Required]
        [Comment("项目ID")]
        public Guid OderId { get; set; }
        /// <summary>
        /// 项目
        /// </summary>
        [Display(Name = "项目")]
        public OrderInfo Oder { get; set; }
        /// <summary>
        /// 16K作业本数量
        /// </summary>
        [Display(Name = "16K作业本")]
        [Comment("16K作业本数量")]
        public int Workbook16KCount { get; set; } = 0;
        /// <summary>
        /// 16K作业本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("16K作业本单价")]
        public decimal Workbook16KPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? Workbook16KManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===ghxqi 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string Workbook16KManufacturerId { get; set; }
        /// <summary>
        /// 32K作业本数量
        /// </summary>
        [Display(Name = "32K作业本")]
        [Comment("32K作业本数量")]
        public int Workbook32KCount { get; set; } = 0;
        /// <summary>
        /// 16K作业本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("16K作业本单价")]
        public decimal Workbook32KPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择 父级为key===sccs 默认为2学期
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? Workbook32KManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===ghxqi 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string Workbook32KManufacturerId { get; set; }
        /// <summary>
        /// 16K图画本数量
        /// </summary>
        [Display(Name = "16K图画本")]
        [Comment("16K图画本数量")]
        public int PictureBook16KCount { get; set; } = 0;
        /// <summary>
        /// 16K作业本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("16K作业本单价")]
        public decimal PictureBook16KPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择 父级为key===sccs 默认为2学期
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? PictureBook16KManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===ghxqi 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string PictureBook16KManufacturerId { get; set; }
        /// <summary>
        /// 32K图画本数量
        /// </summary>
        [Display(Name = "32K图画本")]
        [Comment("32K图画本数量")]
        public int PictureBook32KCount { get; set; } = 0;
        /// <summary>
        /// 32K图画本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("32K图画本单价")]
        public decimal PictureBook32KPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择 父级为key===sccs 默认为2学期
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? PictureBook32KManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===ghxqi 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string PictureBook32KManufacturerId { get; set; }
        /// <summary>
        /// A4图画本数量
        /// </summary>
        [Display(Name = "A4图画本")]
        [Comment("A4图画本数量")]
        public int PictureBookA4Count { get; set; } = 0;
        /// <summary>
        /// 16K作业本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("16K作业本单价")]
        public decimal PictureBookA4KPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择 父级为key===sccs 默认为2学期
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? PictureBookA4KManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===yscs 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string PictureBookA4KManufacturerId { get; set; }
        /// <summary>
        /// 大字本数量
        /// </summary>
        [Display(Name = "大字本")]
        [Comment("大字本数量")]
        public int LargeCharacterBookCount { get; set; } = 0;
        /// <summary>
        /// 大字本单价
        /// </summary>
        [Display(Name = "中标单价")]
        [Comment("大字本单价")]
        public decimal LargeCharacterPrice { get; set; } = 0;
        ///// <summary>
        ///// 生产厂商
        ///// 关联字典生产厂商选择 父级为key===sccs 默认为2学期
        ///// </summary>
        //[Display(Name = "生产厂商")]
        //public Dictionary? LargeCharacterManufacturer { get; set; }
        /// <summary>
        /// 生产厂商ID组合,用,分割
        /// 关联字典生产厂商选择 父级为key===yscs 默认为2
        /// </summary>
        [Display(Name = "生产厂商")]
        [Comment("生产厂商ID,用,分割")]
        public string LargeCharacterManufacturerIds { get; set; }
        /// <summary>
        /// 标注
        /// </summary>
        [Display(Name = "标注")]
        [Comment("标注")]
        public string Mark { get; set; }
        /// <summary>
        /// 初始供货时间
        /// </summary>
        [Display(Name = "供货年份")]
        [Comment("供货年份")]
        public DateTime DeliveryTime { get; set; }
        /// <summary>
        /// 春秋季
        /// </summary>
        [Display(Name = "供货学期")]
        [Comment("供货学期")]
        public chunqiue Chunqiuji { get; set; }
        /// <summary>
        /// 是否完结
        /// </summary>
        [Display(Name = "是否完结")]
        [Comment("是否完结")]
        public bool IsOver { get; set; }=false;
    }
    /// <summary>
    ///
    /// </summary>
    public enum chunqiue
        {
        [Display(Name ="春季")]
         chun=1,
        [Display(Name = "秋季")]
        qiu =6
    }
}
cy_scdz.Model/Set/PriceSetting.cs
New file
@@ -0,0 +1,263 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
namespace cy_scdz.Model.Set
{
    /// <summary>
    /// 价格设置
    /// </summary>
    public class PriceSetting : BasePoco
    {
        /// <summary>
        /// 封面双胶纸
        /// </summary>
        [Display(Name = "封面双胶纸")]
        [Comment("封面双胶纸")]
        public decimal Fmsjz { get; set; } = 0;
        /// <summary>
        /// 封面牛皮纸
        /// </summary>
        [Display(Name = "封面牛皮纸")]
        [Comment("封面牛皮纸")]
        public decimal Fmnpz { get; set; } = 0;
        /// <summary>
        /// 内页本色纸
        /// </summary>
        [Display(Name = "内页本色纸")]
        [Comment("内页本色纸")]
        public decimal Nybsz { get; set; } = 0;
        /// <summary>
        /// 内页高白纸
        /// </summary>
        [Display(Name = "内页高白纸")]
        [Comment("内页高白纸")]
        public decimal Nygbz { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页单色32页16开
        /// </summary>
        [Display(Name = "骑马钉内页单色32页16开")]
        [Comment("骑马钉内页单色32页16开")]
        public decimal Qmd_Nyds_32_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页单色32页32开
        /// </summary>
        [Display(Name = "骑马钉内页单色32页32开")]
        [Comment("骑马钉内页单色32页32开")]
        public decimal Qmd_Nyds_32_32k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页单色36-48页16开
        /// </summary>
        [Display(Name = "骑马钉内页单色36-48页16开")]
        [Comment("骑马钉内页单色36-48页16开")]
        public decimal Qmd_Nyds_36_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页单色36-48页16开
        /// </summary>
        [Display(Name = "骑马钉内页单色36-48页16开")]
        [Comment("骑马钉内页单色36-48页16开")]
        public decimal Qmd_Nyds_36_32k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页双色32页16开
        /// </summary>
        [Display(Name = "骑马钉内页双色32页16开")]
        [Comment("骑马钉内页双色32页16开")]
        public decimal Qmd_Nyss_32_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页双色32页32开
        /// </summary>
        [Display(Name = "骑马钉内页双色32页32开")]
        [Comment("骑马钉内页双色32页32开")]
        public decimal Qmd_Nyss_32_32k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页双色36-48页16开
        /// </summary>
        [Display(Name = "骑马钉内页双色36-48页16开")]
        [Comment("骑马钉内页双色36-48页16开")]
        public decimal Qmd_Nyss_36_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页双色36-48页32开
        /// </summary>
        [Display(Name = "骑马钉内页双色36-48页32开")]
        [Comment("骑马钉内页双色36-48页32开")]
        public decimal Qmd_Nyss_36_32k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页四色32页16开
        /// </summary>
        [Display(Name = "骑马钉内页四色32页16开")]
        [Comment("骑马钉内页四色32页16开")]
        public decimal Qmd_Nysis_32_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页四色32页32开
        /// </summary>
        [Display(Name = "骑马钉内页四色32页32开")]
        [Comment("骑马钉内页四色32页32开")]
        public decimal Qmd_Nysis_32_32k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页四色36-48页16开
        /// </summary>
        [Display(Name = "骑马钉内页四色36-48页16开")]
        [Comment("骑马钉内页四色36-48页16开")]
        public decimal Qmd_Nysis_36_16k { get; set; } = 0;
        /// <summary>
        /// 骑马钉内页四色36-48页32开
        /// </summary>
        [Display(Name = "骑马钉内页四色36-48页32开")]
        [Comment("骑马钉内页四色36-48页32开")]
        public decimal Qmd_Nysis_36_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页单色32页16开
        /// </summary>
        [Display(Name = "胶包内页单色32页16开")]
        [Comment("胶包内页单色32页16开")]
        public decimal Jb_Nyds_32_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页单色32页32开
        /// </summary>
        [Display(Name = "胶包内页单色32页32开")]
        [Comment("胶包内页单色32页32开")]
        public decimal Jb_Nyds_32_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页单色36-48页16开
        /// </summary>
        [Display(Name = "胶包内页单色36-48页16开")]
        [Comment("胶包内页单色36-48页16开")]
        public decimal Jb_Nyds_36_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页单色36-48页16开
        /// </summary>
        [Display(Name = "胶包内页单色36-48页16开")]
        [Comment("胶包内页单色36-48页16开")]
        public decimal Jb_Nyds_36_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页双色32页16开
        /// </summary>
        [Display(Name = "胶包内页双色32页16开")]
        [Comment("胶包内页双色32页16开")]
        public decimal Jb_Nyss_32_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页双色32页32开
        /// </summary>
        [Display(Name = "胶包内页双色32页32开")]
        [Comment("胶包内页双色32页32开")]
        public decimal Jb_Nyss_32_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页双色36-48页16开
        /// </summary>
        [Display(Name = "胶包内页双色36-48页16开")]
        [Comment("胶包内页双色36-48页16开")]
        public decimal Jb_Nyss_36_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页双色36-48页32开
        /// </summary>
        [Display(Name = "胶包内页双色36-48页32开")]
        [Comment("胶包内页双色36-48页32开")]
        public decimal Jb_Nyss_36_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页四色32页16开
        /// </summary>
        [Display(Name = "胶包内页四色32页16开")]
        [Comment("胶包内页四色32页16开")]
        public decimal Jb_Nysis_32_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页四色32页32开"
        /// </summary>
        [Display(Name = "胶包内页四色32页32开")]
        [Comment("胶包内页四色32页32开")]
        public decimal Jb_Nysis_32_32k { get; set; } = 0;
        /// <summary>
        /// 胶包内页四色36-48页16开
        /// </summary>
        [Display(Name = "胶包内页四色36-48页16开")]
        [Comment("胶包内页四色36-48页16开")]
        public decimal Jb_Nysis_36_16k { get; set; } = 0;
        /// <summary>
        /// 胶包内页四色36-48页32开
        /// </summary>
        [Display(Name = "胶包内页四色36-48页32开")]
        [Comment("胶包内页四色36-48页32开")]
        public decimal Jb_Nysis_36_32k { get; set; } = 0;
        /// <summary>
        /// 胶包单色32张16开
        /// </summary>
        [Display(Name = "胶包单色32张16开")]
        [Comment("胶包单色32张16开")]
        public decimal Jb_Ds_32_16k { get; set; } = 0;
        /// <summary>
        /// 胶包单色32张32开
        /// </summary>
        [Display(Name = "胶包单色32张32开")]
        [Comment("胶包单色32张32开")]
        public decimal Jb_Ds_32_32k { get; set; } = 0;
        /// <summary>
        /// 裹背条16开
        /// </summary>
        [Display(Name = "裹背条16开")]
        [Comment("裹背条16开")]
        public decimal Gbt_16k { get; set; } = 0;
        /// <summary>
        /// 裹背条32开
        /// </summary>
        [Display(Name = "裹背条32开")]
        [Comment("裹背条32开")]
        public decimal Gbt_32k { get; set; } = 0;
        /// <summary>
        /// 业务费用竞争
        /// </summary>
        [Display(Name = "业务费用竞争")]
        [Comment("业务费用竞争")]
        public decimal Ywfy_Jz { get; set; } = 0;
        /// <summary>
        /// 业务费用技术
        /// </summary>
        [Display(Name = "业务费用技术")]
        [Comment("业务费用技术")]
        public decimal Ywfy_Zs { get; set; } = 0;
        /// <summary>
        /// 物流费用
        /// </summary>
        [Display(Name = "物流费用")]
        [Comment("物流费用")]
        public decimal Wlfy { get; set; } = 0;
        /// <summary>
        /// 税费
        /// </summary>
        [Display(Name = "税费")]
        [Comment("税费")]
        public decimal Sf { get; set; } = 0;
        /// <summary>
        /// 纸张消耗
        /// </summary>
        [Display(Name = "纸张消耗")]
        [Comment("纸张消耗")]
        [Column(TypeName = "decimal(18, 3)")]
        public decimal Zzxh { get; set; } = 0;
    }
}
cy_scdz.Test/OrderInfoControllerTest.cs
New file
@@ -0,0 +1,537 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WalkingTec.Mvvm.Core;
using cy_scdz.Controllers;
using cy_scdz.ViewModel.BidOrder.OrderInfoVMs;
using cy_scdz.Model.Oder;
using cy_scdz.DataAccess;
using cy_scdz.Model.Set;
namespace cy_scdz.Test
{
    [TestClass]
    public class OrderInfoControllerTest
    {
        private OrderInfoController _controller;
        private string _seed;
        public OrderInfoControllerTest()
        {
            _seed = Guid.NewGuid().ToString();
            _controller = MockController.CreateController<OrderInfoController>(new DataContext(_seed, DBTypeEnum.Memory), "user");
        }
        [TestMethod]
        public void SearchTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            string rv2 = _controller.Search((rv.Model as OrderInfoListVM).Searcher);
            Assert.IsTrue(rv2.Contains("\"Code\":200"));
        }
        [TestMethod]
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();
            Assert.IsInstanceOfType(rv.Model, typeof(OrderInfoVM));
            OrderInfoVM vm = rv.Model as OrderInfoVM;
            OrderInfo v = new OrderInfo();
            v.Title = "YN6";
            v.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
            v.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
            v.SemesterId = AddDictionary();
            v.BidMoney = 24;
            v.SupplierId = AddDictionary();
            v.BidTypeId = AddDictionary();
            v.TenderAgentFee = 59;
            v.WorkbookCoverPaperTypeId = AddDictionary();
            v.WorkbookInnerPaperTypeId = AddDictionary();
            v.WorkbookColorTypeId = AddDictionary();
            v.WorkbookBindingTypeId = AddDictionary();
            v.WorkbookPageCount = 86;
            v.PictureBookCoverPaperTypeId = AddDictionary();
            v.PictureBookInnerPaperTypeId = AddDictionary();
            v.PictureBookColorTypeId = AddDictionary();
            v.PictureBookBindingTypeId = AddDictionary();
            v.PictureBookPageCount = 93;
            v.LargeCharacterBookCoverPaperTypeId = AddDictionary();
            v.LargeCharacterBookInnerPaperTypeId = AddDictionary();
            v.LargeCharacterBookColorTypeId = AddDictionary();
            v.LargeCharacterBookBindingTypeId = AddDictionary();
            v.LargeCharacterBookPageCount = 47;
            v.Workbook16K = 73;
            v.Workbook32K = 56;
            v.PictureBook16K = 16;
            v.PictureBook32K = 85;
            v.PictureBookA4 = 2;
            v.LargeCharacterBook = 36;
            vm.Entity = v;
            _controller.Create(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderInfo>().Find(v.ID);
                Assert.AreEqual(data.Title, "YN6");
                Assert.AreEqual(data.WinBidTime, DateTime.Parse("2024-12-12 11:17:22"));
                Assert.AreEqual(data.InitialDeliveryTime, DateTime.Parse("2024-06-30 11:17:22"));
                Assert.AreEqual(data.BidMoney, 24);
                Assert.AreEqual(data.TenderAgentFee, 59);
                Assert.AreEqual(data.WorkbookPageCount, 86);
                Assert.AreEqual(data.PictureBookPageCount, 93);
                Assert.AreEqual(data.LargeCharacterBookPageCount, 47);
                Assert.AreEqual(data.Workbook16K, 73);
                Assert.AreEqual(data.Workbook32K, 56);
                Assert.AreEqual(data.PictureBook16K, 16);
                Assert.AreEqual(data.PictureBook32K, 85);
                Assert.AreEqual(data.PictureBookA4, 2);
                Assert.AreEqual(data.LargeCharacterBook, 36);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void EditTest()
        {
            OrderInfo v = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Title = "YN6";
                v.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
                v.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
                v.SemesterId = AddDictionary();
                v.BidMoney = 24;
                v.SupplierId = AddDictionary();
                v.BidTypeId = AddDictionary();
                v.TenderAgentFee = 59;
                v.WorkbookCoverPaperTypeId = AddDictionary();
                v.WorkbookInnerPaperTypeId = AddDictionary();
                v.WorkbookColorTypeId = AddDictionary();
                v.WorkbookBindingTypeId = AddDictionary();
                v.WorkbookPageCount = 86;
                v.PictureBookCoverPaperTypeId = AddDictionary();
                v.PictureBookInnerPaperTypeId = AddDictionary();
                v.PictureBookColorTypeId = AddDictionary();
                v.PictureBookBindingTypeId = AddDictionary();
                v.PictureBookPageCount = 93;
                v.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v.LargeCharacterBookColorTypeId = AddDictionary();
                v.LargeCharacterBookBindingTypeId = AddDictionary();
                v.LargeCharacterBookPageCount = 47;
                v.Workbook16K = 73;
                v.Workbook32K = 56;
                v.PictureBook16K = 16;
                v.PictureBook32K = 85;
                v.PictureBookA4 = 2;
                v.LargeCharacterBook = 36;
                context.Set<OrderInfo>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(OrderInfoVM));
            OrderInfoVM vm = rv.Model as OrderInfoVM;
            vm.Wtm.DC = new DataContext(_seed, DBTypeEnum.Memory);
            v = new OrderInfo();
            v.ID = vm.Entity.ID;
            v.Title = "TukzhvPqNM2";
            v.WinBidTime = DateTime.Parse("2024-06-29 11:17:22");
            v.InitialDeliveryTime = DateTime.Parse("2025-06-30 11:17:22");
            v.BidMoney = 63;
            v.TenderAgentFee = 64;
            v.WorkbookPageCount = 25;
            v.PictureBookPageCount = 23;
            v.LargeCharacterBookPageCount = 61;
            v.Workbook16K = 95;
            v.Workbook32K = 78;
            v.PictureBook16K = 34;
            v.PictureBook32K = 62;
            v.PictureBookA4 = 19;
            v.LargeCharacterBook = 38;
            vm.Entity = v;
            vm.FC = new Dictionary<string, object>();
            vm.FC.Add("Entity.Title", "");
            vm.FC.Add("Entity.WinBidTime", "");
            vm.FC.Add("Entity.InitialDeliveryTime", "");
            vm.FC.Add("Entity.SemesterId", "");
            vm.FC.Add("Entity.BidMoney", "");
            vm.FC.Add("Entity.SupplierId", "");
            vm.FC.Add("Entity.BidTypeId", "");
            vm.FC.Add("Entity.TenderAgentFee", "");
            vm.FC.Add("Entity.WorkbookCoverPaperTypeId", "");
            vm.FC.Add("Entity.WorkbookInnerPaperTypeId", "");
            vm.FC.Add("Entity.WorkbookColorTypeId", "");
            vm.FC.Add("Entity.WorkbookBindingTypeId", "");
            vm.FC.Add("Entity.WorkbookPageCount", "");
            vm.FC.Add("Entity.PictureBookCoverPaperTypeId", "");
            vm.FC.Add("Entity.PictureBookInnerPaperTypeId", "");
            vm.FC.Add("Entity.PictureBookColorTypeId", "");
            vm.FC.Add("Entity.PictureBookBindingTypeId", "");
            vm.FC.Add("Entity.PictureBookPageCount", "");
            vm.FC.Add("Entity.LargeCharacterBookCoverPaperTypeId", "");
            vm.FC.Add("Entity.LargeCharacterBookInnerPaperTypeId", "");
            vm.FC.Add("Entity.LargeCharacterBookColorTypeId", "");
            vm.FC.Add("Entity.LargeCharacterBookBindingTypeId", "");
            vm.FC.Add("Entity.LargeCharacterBookPageCount", "");
            vm.FC.Add("Entity.Workbook16K", "");
            vm.FC.Add("Entity.Workbook32K", "");
            vm.FC.Add("Entity.PictureBook16K", "");
            vm.FC.Add("Entity.PictureBook32K", "");
            vm.FC.Add("Entity.PictureBookA4", "");
            vm.FC.Add("Entity.LargeCharacterBook", "");
            _controller.Edit(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderInfo>().Find(v.ID);
                Assert.AreEqual(data.Title, "TukzhvPqNM2");
                Assert.AreEqual(data.WinBidTime, DateTime.Parse("2024-06-29 11:17:22"));
                Assert.AreEqual(data.InitialDeliveryTime, DateTime.Parse("2025-06-30 11:17:22"));
                Assert.AreEqual(data.BidMoney, 63);
                Assert.AreEqual(data.TenderAgentFee, 64);
                Assert.AreEqual(data.WorkbookPageCount, 25);
                Assert.AreEqual(data.PictureBookPageCount, 23);
                Assert.AreEqual(data.LargeCharacterBookPageCount, 61);
                Assert.AreEqual(data.Workbook16K, 95);
                Assert.AreEqual(data.Workbook32K, 78);
                Assert.AreEqual(data.PictureBook16K, 34);
                Assert.AreEqual(data.PictureBook32K, 62);
                Assert.AreEqual(data.PictureBookA4, 19);
                Assert.AreEqual(data.LargeCharacterBook, 38);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void DeleteTest()
        {
            OrderInfo v = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Title = "YN6";
                v.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
                v.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
                v.SemesterId = AddDictionary();
                v.BidMoney = 24;
                v.SupplierId = AddDictionary();
                v.BidTypeId = AddDictionary();
                v.TenderAgentFee = 59;
                v.WorkbookCoverPaperTypeId = AddDictionary();
                v.WorkbookInnerPaperTypeId = AddDictionary();
                v.WorkbookColorTypeId = AddDictionary();
                v.WorkbookBindingTypeId = AddDictionary();
                v.WorkbookPageCount = 86;
                v.PictureBookCoverPaperTypeId = AddDictionary();
                v.PictureBookInnerPaperTypeId = AddDictionary();
                v.PictureBookColorTypeId = AddDictionary();
                v.PictureBookBindingTypeId = AddDictionary();
                v.PictureBookPageCount = 93;
                v.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v.LargeCharacterBookColorTypeId = AddDictionary();
                v.LargeCharacterBookBindingTypeId = AddDictionary();
                v.LargeCharacterBookPageCount = 47;
                v.Workbook16K = 73;
                v.Workbook32K = 56;
                v.PictureBook16K = 16;
                v.PictureBook32K = 85;
                v.PictureBookA4 = 2;
                v.LargeCharacterBook = 36;
                context.Set<OrderInfo>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Delete(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(OrderInfoVM));
            OrderInfoVM vm = rv.Model as OrderInfoVM;
            v = new OrderInfo();
            v.ID = vm.Entity.ID;
            vm.Entity = v;
            _controller.Delete(v.ID.ToString(),null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderInfo>().Find(v.ID);
                Assert.AreEqual(data, null);
          }
        }
        [TestMethod]
        public void DetailsTest()
        {
            OrderInfo v = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Title = "YN6";
                v.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
                v.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
                v.SemesterId = AddDictionary();
                v.BidMoney = 24;
                v.SupplierId = AddDictionary();
                v.BidTypeId = AddDictionary();
                v.TenderAgentFee = 59;
                v.WorkbookCoverPaperTypeId = AddDictionary();
                v.WorkbookInnerPaperTypeId = AddDictionary();
                v.WorkbookColorTypeId = AddDictionary();
                v.WorkbookBindingTypeId = AddDictionary();
                v.WorkbookPageCount = 86;
                v.PictureBookCoverPaperTypeId = AddDictionary();
                v.PictureBookInnerPaperTypeId = AddDictionary();
                v.PictureBookColorTypeId = AddDictionary();
                v.PictureBookBindingTypeId = AddDictionary();
                v.PictureBookPageCount = 93;
                v.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v.LargeCharacterBookColorTypeId = AddDictionary();
                v.LargeCharacterBookBindingTypeId = AddDictionary();
                v.LargeCharacterBookPageCount = 47;
                v.Workbook16K = 73;
                v.Workbook32K = 56;
                v.PictureBook16K = 16;
                v.PictureBook32K = 85;
                v.PictureBookA4 = 2;
                v.LargeCharacterBook = 36;
                context.Set<OrderInfo>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Details(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(IBaseCRUDVM<TopBasePoco>));
            Assert.AreEqual(v.ID, (rv.Model as IBaseCRUDVM<TopBasePoco>).Entity.GetID());
        }
        [TestMethod]
        public void BatchEditTest()
        {
            OrderInfo v1 = new OrderInfo();
            OrderInfo v2 = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.Title = "YN6";
                v1.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
                v1.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
                v1.SemesterId = AddDictionary();
                v1.BidMoney = 24;
                v1.SupplierId = AddDictionary();
                v1.BidTypeId = AddDictionary();
                v1.TenderAgentFee = 59;
                v1.WorkbookCoverPaperTypeId = AddDictionary();
                v1.WorkbookInnerPaperTypeId = AddDictionary();
                v1.WorkbookColorTypeId = AddDictionary();
                v1.WorkbookBindingTypeId = AddDictionary();
                v1.WorkbookPageCount = 86;
                v1.PictureBookCoverPaperTypeId = AddDictionary();
                v1.PictureBookInnerPaperTypeId = AddDictionary();
                v1.PictureBookColorTypeId = AddDictionary();
                v1.PictureBookBindingTypeId = AddDictionary();
                v1.PictureBookPageCount = 93;
                v1.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v1.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v1.LargeCharacterBookColorTypeId = AddDictionary();
                v1.LargeCharacterBookBindingTypeId = AddDictionary();
                v1.LargeCharacterBookPageCount = 47;
                v1.Workbook16K = 73;
                v1.Workbook32K = 56;
                v1.PictureBook16K = 16;
                v1.PictureBook32K = 85;
                v1.PictureBookA4 = 2;
                v1.LargeCharacterBook = 36;
                v2.Title = "TukzhvPqNM2";
                v2.WinBidTime = DateTime.Parse("2024-06-29 11:17:22");
                v2.InitialDeliveryTime = DateTime.Parse("2025-06-30 11:17:22");
                v2.SemesterId = v1.SemesterId;
                v2.BidMoney = 63;
                v2.SupplierId = v1.SupplierId;
                v2.BidTypeId = v1.BidTypeId;
                v2.TenderAgentFee = 64;
                v2.WorkbookCoverPaperTypeId = v1.WorkbookCoverPaperTypeId;
                v2.WorkbookInnerPaperTypeId = v1.WorkbookInnerPaperTypeId;
                v2.WorkbookColorTypeId = v1.WorkbookColorTypeId;
                v2.WorkbookBindingTypeId = v1.WorkbookBindingTypeId;
                v2.WorkbookPageCount = 25;
                v2.PictureBookCoverPaperTypeId = v1.PictureBookCoverPaperTypeId;
                v2.PictureBookInnerPaperTypeId = v1.PictureBookInnerPaperTypeId;
                v2.PictureBookColorTypeId = v1.PictureBookColorTypeId;
                v2.PictureBookBindingTypeId = v1.PictureBookBindingTypeId;
                v2.PictureBookPageCount = 23;
                v2.LargeCharacterBookCoverPaperTypeId = v1.LargeCharacterBookCoverPaperTypeId;
                v2.LargeCharacterBookInnerPaperTypeId = v1.LargeCharacterBookInnerPaperTypeId;
                v2.LargeCharacterBookColorTypeId = v1.LargeCharacterBookColorTypeId;
                v2.LargeCharacterBookBindingTypeId = v1.LargeCharacterBookBindingTypeId;
                v2.LargeCharacterBookPageCount = 61;
                v2.Workbook16K = 95;
                v2.Workbook32K = 78;
                v2.PictureBook16K = 34;
                v2.PictureBook32K = 62;
                v2.PictureBookA4 = 19;
                v2.LargeCharacterBook = 38;
                context.Set<OrderInfo>().Add(v1);
                context.Set<OrderInfo>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(OrderInfoBatchVM));
            OrderInfoBatchVM vm = rv.Model as OrderInfoBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            vm.FC = new Dictionary<string, object>();
            _controller.DoBatchEdit(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<OrderInfo>().Find(v1.ID);
                var data2 = context.Set<OrderInfo>().Find(v2.ID);
                Assert.AreEqual(data1.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data1.UpdateTime.Value).Seconds < 10);
                Assert.AreEqual(data2.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data2.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void BatchDeleteTest()
        {
            OrderInfo v1 = new OrderInfo();
            OrderInfo v2 = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.Title = "YN6";
                v1.WinBidTime = DateTime.Parse("2024-12-12 11:17:22");
                v1.InitialDeliveryTime = DateTime.Parse("2024-06-30 11:17:22");
                v1.SemesterId = AddDictionary();
                v1.BidMoney = 24;
                v1.SupplierId = AddDictionary();
                v1.BidTypeId = AddDictionary();
                v1.TenderAgentFee = 59;
                v1.WorkbookCoverPaperTypeId = AddDictionary();
                v1.WorkbookInnerPaperTypeId = AddDictionary();
                v1.WorkbookColorTypeId = AddDictionary();
                v1.WorkbookBindingTypeId = AddDictionary();
                v1.WorkbookPageCount = 86;
                v1.PictureBookCoverPaperTypeId = AddDictionary();
                v1.PictureBookInnerPaperTypeId = AddDictionary();
                v1.PictureBookColorTypeId = AddDictionary();
                v1.PictureBookBindingTypeId = AddDictionary();
                v1.PictureBookPageCount = 93;
                v1.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v1.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v1.LargeCharacterBookColorTypeId = AddDictionary();
                v1.LargeCharacterBookBindingTypeId = AddDictionary();
                v1.LargeCharacterBookPageCount = 47;
                v1.Workbook16K = 73;
                v1.Workbook32K = 56;
                v1.PictureBook16K = 16;
                v1.PictureBook32K = 85;
                v1.PictureBookA4 = 2;
                v1.LargeCharacterBook = 36;
                v2.Title = "TukzhvPqNM2";
                v2.WinBidTime = DateTime.Parse("2024-06-29 11:17:22");
                v2.InitialDeliveryTime = DateTime.Parse("2025-06-30 11:17:22");
                v2.SemesterId = v1.SemesterId;
                v2.BidMoney = 63;
                v2.SupplierId = v1.SupplierId;
                v2.BidTypeId = v1.BidTypeId;
                v2.TenderAgentFee = 64;
                v2.WorkbookCoverPaperTypeId = v1.WorkbookCoverPaperTypeId;
                v2.WorkbookInnerPaperTypeId = v1.WorkbookInnerPaperTypeId;
                v2.WorkbookColorTypeId = v1.WorkbookColorTypeId;
                v2.WorkbookBindingTypeId = v1.WorkbookBindingTypeId;
                v2.WorkbookPageCount = 25;
                v2.PictureBookCoverPaperTypeId = v1.PictureBookCoverPaperTypeId;
                v2.PictureBookInnerPaperTypeId = v1.PictureBookInnerPaperTypeId;
                v2.PictureBookColorTypeId = v1.PictureBookColorTypeId;
                v2.PictureBookBindingTypeId = v1.PictureBookBindingTypeId;
                v2.PictureBookPageCount = 23;
                v2.LargeCharacterBookCoverPaperTypeId = v1.LargeCharacterBookCoverPaperTypeId;
                v2.LargeCharacterBookInnerPaperTypeId = v1.LargeCharacterBookInnerPaperTypeId;
                v2.LargeCharacterBookColorTypeId = v1.LargeCharacterBookColorTypeId;
                v2.LargeCharacterBookBindingTypeId = v1.LargeCharacterBookBindingTypeId;
                v2.LargeCharacterBookPageCount = 61;
                v2.Workbook16K = 95;
                v2.Workbook32K = 78;
                v2.PictureBook16K = 34;
                v2.PictureBook32K = 62;
                v2.PictureBookA4 = 19;
                v2.LargeCharacterBook = 38;
                context.Set<OrderInfo>().Add(v1);
                context.Set<OrderInfo>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(OrderInfoBatchVM));
            OrderInfoBatchVM vm = rv.Model as OrderInfoBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            _controller.DoBatchDelete(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<OrderInfo>().Find(v1.ID);
                var data2 = context.Set<OrderInfo>().Find(v2.ID);
                Assert.AreEqual(data1, null);
            Assert.AreEqual(data2, null);
            }
        }
        [TestMethod]
        public void ExportTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            IActionResult rv2 = _controller.ExportExcel(rv.Model as OrderInfoListVM);
            Assert.IsTrue((rv2 as FileContentResult).FileContents.Length > 0);
        }
        private Guid AddDictionary()
        {
            Dictionary v = new Dictionary();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                try{
                v.Name = "Kq0grvnItm2Q15wH9u12gh49oGL";
                v.Key = "8deHrntDJE5Rcs4zx";
                v.Value = "z9CtDjBQ9Sh9Qc5Sm0PZQ5LIStCE3AsNKvhQ7QHh0SC7YSjw73iVwi3gaxjRVg1LyhDaS9zRPueG8f8mKkSMH5HVcIc2JbVIczQZiVqL0ZcuEHpNVgwan2GAaIucvw6Gr1Ksn2ZsRJlLCiaRz2zieMfU9ca84s42jBw";
                v.IsEn = false;
                context.Set<Dictionary>().Add(v);
                context.SaveChanges();
                }
                catch{}
            }
            return v.ID;
        }
    }
}
cy_scdz.Test/OrderProductionControllerTest.cs
New file
@@ -0,0 +1,545 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WalkingTec.Mvvm.Core;
using cy_scdz.Controllers;
using cy_scdz.ViewModel.Order.OrderProductionVMs;
using cy_scdz.Model.Oder;
using cy_scdz.DataAccess;
namespace cy_scdz.Test
{
    [TestClass]
    public class OrderProductionControllerTest
    {
        private OrderProductionController _controller;
        private string _seed;
        public OrderProductionControllerTest()
        {
            _seed = Guid.NewGuid().ToString();
            _controller = MockController.CreateController<OrderProductionController>(new DataContext(_seed, DBTypeEnum.Memory), "user");
        }
        [TestMethod]
        public void SearchTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            string rv2 = _controller.Search((rv.Model as OrderProductionListVM).Searcher);
            Assert.IsTrue(rv2.Contains("\"Code\":200"));
        }
        [TestMethod]
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();
            Assert.IsInstanceOfType(rv.Model, typeof(OrderProductionVM));
            OrderProductionVM vm = rv.Model as OrderProductionVM;
            OrderProduction v = new OrderProduction();
            v.OderId = AddOrderInfo();
            v.Workbook16KCount = 8;
            v.Workbook16KPrice = 86;
            v.Workbook16KManufacturerId = "vw";
            v.Workbook32KCount = 75;
            v.Workbook32KPrice = 53;
            v.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
            v.PictureBook16KCount = 0;
            v.PictureBook16KPrice = 19;
            v.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
            v.PictureBook32KCount = 56;
            v.PictureBook32KPrice = 6;
            v.PictureBook32KManufacturerId = "PRZNQFXugVp";
            v.PictureBookA4Count = 64;
            v.PictureBookA4KPrice = 18;
            v.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
            v.LargeCharacterBookCount = 25;
            v.LargeCharacterPrice = 65;
            v.LargeCharacterManufacturerIds = "IatlD";
            v.Mark = "b5Hl";
            v.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
            v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
            v.IsOver = false;
            vm.Entity = v;
            _controller.Create(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderProduction>().Find(v.ID);
                Assert.AreEqual(data.Workbook16KCount, 8);
                Assert.AreEqual(data.Workbook16KPrice, 86);
                Assert.AreEqual(data.Workbook16KManufacturerId, "vw");
                Assert.AreEqual(data.Workbook32KCount, 75);
                Assert.AreEqual(data.Workbook32KPrice, 53);
                Assert.AreEqual(data.Workbook32KManufacturerId, "NwDYVdgNN6UMyR");
                Assert.AreEqual(data.PictureBook16KCount, 0);
                Assert.AreEqual(data.PictureBook16KPrice, 19);
                Assert.AreEqual(data.PictureBook16KManufacturerId, "1EJIm1rqJSx4");
                Assert.AreEqual(data.PictureBook32KCount, 56);
                Assert.AreEqual(data.PictureBook32KPrice, 6);
                Assert.AreEqual(data.PictureBook32KManufacturerId, "PRZNQFXugVp");
                Assert.AreEqual(data.PictureBookA4Count, 64);
                Assert.AreEqual(data.PictureBookA4KPrice, 18);
                Assert.AreEqual(data.PictureBookA4KManufacturerId, "nJZv9K8S17Go6wct");
                Assert.AreEqual(data.LargeCharacterBookCount, 25);
                Assert.AreEqual(data.LargeCharacterPrice, 65);
                Assert.AreEqual(data.LargeCharacterManufacturerIds, "IatlD");
                Assert.AreEqual(data.Mark, "b5Hl");
                Assert.AreEqual(data.DeliveryTime, DateTime.Parse("2024-10-18 11:49:12"));
                Assert.AreEqual(data.Chunqiuji, cy_scdz.Model.Oder.chunqiue.qiu);
                Assert.AreEqual(data.IsOver, false);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void EditTest()
        {
            OrderProduction v = new OrderProduction();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.OderId = AddOrderInfo();
                v.Workbook16KCount = 8;
                v.Workbook16KPrice = 86;
                v.Workbook16KManufacturerId = "vw";
                v.Workbook32KCount = 75;
                v.Workbook32KPrice = 53;
                v.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
                v.PictureBook16KCount = 0;
                v.PictureBook16KPrice = 19;
                v.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
                v.PictureBook32KCount = 56;
                v.PictureBook32KPrice = 6;
                v.PictureBook32KManufacturerId = "PRZNQFXugVp";
                v.PictureBookA4Count = 64;
                v.PictureBookA4KPrice = 18;
                v.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
                v.LargeCharacterBookCount = 25;
                v.LargeCharacterPrice = 65;
                v.LargeCharacterManufacturerIds = "IatlD";
                v.Mark = "b5Hl";
                v.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
                v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v.IsOver = false;
                context.Set<OrderProduction>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(OrderProductionVM));
            OrderProductionVM vm = rv.Model as OrderProductionVM;
            vm.Wtm.DC = new DataContext(_seed, DBTypeEnum.Memory);
            v = new OrderProduction();
            v.ID = vm.Entity.ID;
            v.Workbook16KCount = 34;
            v.Workbook16KPrice = 90;
            v.Workbook16KManufacturerId = "rH9rS8WltK";
            v.Workbook32KCount = 58;
            v.Workbook32KPrice = 59;
            v.Workbook32KManufacturerId = "VU6am";
            v.PictureBook16KCount = 11;
            v.PictureBook16KPrice = 93;
            v.PictureBook16KManufacturerId = "E488h7QbNrRqF";
            v.PictureBook32KCount = 32;
            v.PictureBook32KPrice = 29;
            v.PictureBook32KManufacturerId = "bfleJn";
            v.PictureBookA4Count = 10;
            v.PictureBookA4KPrice = 65;
            v.PictureBookA4KManufacturerId = "f7o";
            v.LargeCharacterBookCount = 4;
            v.LargeCharacterPrice = 84;
            v.LargeCharacterManufacturerIds = "x";
            v.Mark = "iFqVNYrTwDVvVALN";
            v.DeliveryTime = DateTime.Parse("2023-11-30 11:49:12");
            v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
            v.IsOver = true;
            vm.Entity = v;
            vm.FC = new Dictionary<string, object>();
            vm.FC.Add("Entity.OderId", "");
            vm.FC.Add("Entity.Workbook16KCount", "");
            vm.FC.Add("Entity.Workbook16KPrice", "");
            vm.FC.Add("Entity.Workbook16KManufacturerId", "");
            vm.FC.Add("Entity.Workbook32KCount", "");
            vm.FC.Add("Entity.Workbook32KPrice", "");
            vm.FC.Add("Entity.Workbook32KManufacturerId", "");
            vm.FC.Add("Entity.PictureBook16KCount", "");
            vm.FC.Add("Entity.PictureBook16KPrice", "");
            vm.FC.Add("Entity.PictureBook16KManufacturerId", "");
            vm.FC.Add("Entity.PictureBook32KCount", "");
            vm.FC.Add("Entity.PictureBook32KPrice", "");
            vm.FC.Add("Entity.PictureBook32KManufacturerId", "");
            vm.FC.Add("Entity.PictureBookA4Count", "");
            vm.FC.Add("Entity.PictureBookA4KPrice", "");
            vm.FC.Add("Entity.PictureBookA4KManufacturerId", "");
            vm.FC.Add("Entity.LargeCharacterBookCount", "");
            vm.FC.Add("Entity.LargeCharacterPrice", "");
            vm.FC.Add("Entity.LargeCharacterManufacturerIds", "");
            vm.FC.Add("Entity.Mark", "");
            vm.FC.Add("Entity.DeliveryTime", "");
            vm.FC.Add("Entity.Chunqiuji", "");
            vm.FC.Add("Entity.IsOver", "");
            _controller.Edit(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderProduction>().Find(v.ID);
                Assert.AreEqual(data.Workbook16KCount, 34);
                Assert.AreEqual(data.Workbook16KPrice, 90);
                Assert.AreEqual(data.Workbook16KManufacturerId, "rH9rS8WltK");
                Assert.AreEqual(data.Workbook32KCount, 58);
                Assert.AreEqual(data.Workbook32KPrice, 59);
                Assert.AreEqual(data.Workbook32KManufacturerId, "VU6am");
                Assert.AreEqual(data.PictureBook16KCount, 11);
                Assert.AreEqual(data.PictureBook16KPrice, 93);
                Assert.AreEqual(data.PictureBook16KManufacturerId, "E488h7QbNrRqF");
                Assert.AreEqual(data.PictureBook32KCount, 32);
                Assert.AreEqual(data.PictureBook32KPrice, 29);
                Assert.AreEqual(data.PictureBook32KManufacturerId, "bfleJn");
                Assert.AreEqual(data.PictureBookA4Count, 10);
                Assert.AreEqual(data.PictureBookA4KPrice, 65);
                Assert.AreEqual(data.PictureBookA4KManufacturerId, "f7o");
                Assert.AreEqual(data.LargeCharacterBookCount, 4);
                Assert.AreEqual(data.LargeCharacterPrice, 84);
                Assert.AreEqual(data.LargeCharacterManufacturerIds, "x");
                Assert.AreEqual(data.Mark, "iFqVNYrTwDVvVALN");
                Assert.AreEqual(data.DeliveryTime, DateTime.Parse("2023-11-30 11:49:12"));
                Assert.AreEqual(data.Chunqiuji, cy_scdz.Model.Oder.chunqiue.qiu);
                Assert.AreEqual(data.IsOver, true);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void DeleteTest()
        {
            OrderProduction v = new OrderProduction();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.OderId = AddOrderInfo();
                v.Workbook16KCount = 8;
                v.Workbook16KPrice = 86;
                v.Workbook16KManufacturerId = "vw";
                v.Workbook32KCount = 75;
                v.Workbook32KPrice = 53;
                v.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
                v.PictureBook16KCount = 0;
                v.PictureBook16KPrice = 19;
                v.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
                v.PictureBook32KCount = 56;
                v.PictureBook32KPrice = 6;
                v.PictureBook32KManufacturerId = "PRZNQFXugVp";
                v.PictureBookA4Count = 64;
                v.PictureBookA4KPrice = 18;
                v.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
                v.LargeCharacterBookCount = 25;
                v.LargeCharacterPrice = 65;
                v.LargeCharacterManufacturerIds = "IatlD";
                v.Mark = "b5Hl";
                v.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
                v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v.IsOver = false;
                context.Set<OrderProduction>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Delete(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(OrderProductionVM));
            OrderProductionVM vm = rv.Model as OrderProductionVM;
            v = new OrderProduction();
            v.ID = vm.Entity.ID;
            vm.Entity = v;
            _controller.Delete(v.ID.ToString(),null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<OrderProduction>().Find(v.ID);
                Assert.AreEqual(data, null);
          }
        }
        [TestMethod]
        public void DetailsTest()
        {
            OrderProduction v = new OrderProduction();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.OderId = AddOrderInfo();
                v.Workbook16KCount = 8;
                v.Workbook16KPrice = 86;
                v.Workbook16KManufacturerId = "vw";
                v.Workbook32KCount = 75;
                v.Workbook32KPrice = 53;
                v.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
                v.PictureBook16KCount = 0;
                v.PictureBook16KPrice = 19;
                v.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
                v.PictureBook32KCount = 56;
                v.PictureBook32KPrice = 6;
                v.PictureBook32KManufacturerId = "PRZNQFXugVp";
                v.PictureBookA4Count = 64;
                v.PictureBookA4KPrice = 18;
                v.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
                v.LargeCharacterBookCount = 25;
                v.LargeCharacterPrice = 65;
                v.LargeCharacterManufacturerIds = "IatlD";
                v.Mark = "b5Hl";
                v.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
                v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v.IsOver = false;
                context.Set<OrderProduction>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Details(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(IBaseCRUDVM<TopBasePoco>));
            Assert.AreEqual(v.ID, (rv.Model as IBaseCRUDVM<TopBasePoco>).Entity.GetID());
        }
        [TestMethod]
        public void BatchEditTest()
        {
            OrderProduction v1 = new OrderProduction();
            OrderProduction v2 = new OrderProduction();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.OderId = AddOrderInfo();
                v1.Workbook16KCount = 8;
                v1.Workbook16KPrice = 86;
                v1.Workbook16KManufacturerId = "vw";
                v1.Workbook32KCount = 75;
                v1.Workbook32KPrice = 53;
                v1.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
                v1.PictureBook16KCount = 0;
                v1.PictureBook16KPrice = 19;
                v1.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
                v1.PictureBook32KCount = 56;
                v1.PictureBook32KPrice = 6;
                v1.PictureBook32KManufacturerId = "PRZNQFXugVp";
                v1.PictureBookA4Count = 64;
                v1.PictureBookA4KPrice = 18;
                v1.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
                v1.LargeCharacterBookCount = 25;
                v1.LargeCharacterPrice = 65;
                v1.LargeCharacterManufacturerIds = "IatlD";
                v1.Mark = "b5Hl";
                v1.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
                v1.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v1.IsOver = false;
                v2.OderId = v1.OderId;
                v2.Workbook16KCount = 34;
                v2.Workbook16KPrice = 90;
                v2.Workbook16KManufacturerId = "rH9rS8WltK";
                v2.Workbook32KCount = 58;
                v2.Workbook32KPrice = 59;
                v2.Workbook32KManufacturerId = "VU6am";
                v2.PictureBook16KCount = 11;
                v2.PictureBook16KPrice = 93;
                v2.PictureBook16KManufacturerId = "E488h7QbNrRqF";
                v2.PictureBook32KCount = 32;
                v2.PictureBook32KPrice = 29;
                v2.PictureBook32KManufacturerId = "bfleJn";
                v2.PictureBookA4Count = 10;
                v2.PictureBookA4KPrice = 65;
                v2.PictureBookA4KManufacturerId = "f7o";
                v2.LargeCharacterBookCount = 4;
                v2.LargeCharacterPrice = 84;
                v2.LargeCharacterManufacturerIds = "x";
                v2.Mark = "iFqVNYrTwDVvVALN";
                v2.DeliveryTime = DateTime.Parse("2023-11-30 11:49:12");
                v2.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v2.IsOver = true;
                context.Set<OrderProduction>().Add(v1);
                context.Set<OrderProduction>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(OrderProductionBatchVM));
            OrderProductionBatchVM vm = rv.Model as OrderProductionBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            vm.FC = new Dictionary<string, object>();
            _controller.DoBatchEdit(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<OrderProduction>().Find(v1.ID);
                var data2 = context.Set<OrderProduction>().Find(v2.ID);
                Assert.AreEqual(data1.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data1.UpdateTime.Value).Seconds < 10);
                Assert.AreEqual(data2.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data2.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void BatchDeleteTest()
        {
            OrderProduction v1 = new OrderProduction();
            OrderProduction v2 = new OrderProduction();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.OderId = AddOrderInfo();
                v1.Workbook16KCount = 8;
                v1.Workbook16KPrice = 86;
                v1.Workbook16KManufacturerId = "vw";
                v1.Workbook32KCount = 75;
                v1.Workbook32KPrice = 53;
                v1.Workbook32KManufacturerId = "NwDYVdgNN6UMyR";
                v1.PictureBook16KCount = 0;
                v1.PictureBook16KPrice = 19;
                v1.PictureBook16KManufacturerId = "1EJIm1rqJSx4";
                v1.PictureBook32KCount = 56;
                v1.PictureBook32KPrice = 6;
                v1.PictureBook32KManufacturerId = "PRZNQFXugVp";
                v1.PictureBookA4Count = 64;
                v1.PictureBookA4KPrice = 18;
                v1.PictureBookA4KManufacturerId = "nJZv9K8S17Go6wct";
                v1.LargeCharacterBookCount = 25;
                v1.LargeCharacterPrice = 65;
                v1.LargeCharacterManufacturerIds = "IatlD";
                v1.Mark = "b5Hl";
                v1.DeliveryTime = DateTime.Parse("2024-10-18 11:49:12");
                v1.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v1.IsOver = false;
                v2.OderId = v1.OderId;
                v2.Workbook16KCount = 34;
                v2.Workbook16KPrice = 90;
                v2.Workbook16KManufacturerId = "rH9rS8WltK";
                v2.Workbook32KCount = 58;
                v2.Workbook32KPrice = 59;
                v2.Workbook32KManufacturerId = "VU6am";
                v2.PictureBook16KCount = 11;
                v2.PictureBook16KPrice = 93;
                v2.PictureBook16KManufacturerId = "E488h7QbNrRqF";
                v2.PictureBook32KCount = 32;
                v2.PictureBook32KPrice = 29;
                v2.PictureBook32KManufacturerId = "bfleJn";
                v2.PictureBookA4Count = 10;
                v2.PictureBookA4KPrice = 65;
                v2.PictureBookA4KManufacturerId = "f7o";
                v2.LargeCharacterBookCount = 4;
                v2.LargeCharacterPrice = 84;
                v2.LargeCharacterManufacturerIds = "x";
                v2.Mark = "iFqVNYrTwDVvVALN";
                v2.DeliveryTime = DateTime.Parse("2023-11-30 11:49:12");
                v2.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v2.IsOver = true;
                context.Set<OrderProduction>().Add(v1);
                context.Set<OrderProduction>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(OrderProductionBatchVM));
            OrderProductionBatchVM vm = rv.Model as OrderProductionBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            _controller.DoBatchDelete(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<OrderProduction>().Find(v1.ID);
                var data2 = context.Set<OrderProduction>().Find(v2.ID);
                Assert.AreEqual(data1, null);
            Assert.AreEqual(data2, null);
            }
        }
        [TestMethod]
        public void ExportTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            IActionResult rv2 = _controller.ExportExcel(rv.Model as OrderProductionListVM);
            Assert.IsTrue((rv2 as FileContentResult).FileContents.Length > 0);
        }
        private Guid AddDictionary()
        {
            Dictionary v = new Dictionary();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                try{
                v.Name = "ZduWh6QtVECvy";
                v.Key = "P85L29A";
                v.Value = "Uaka8lrdb54Jl";
                v.IsEn = false;
                context.Set<Dictionary>().Add(v);
                context.SaveChanges();
                }
                catch{}
            }
            return v.ID;
        }
        private Guid AddOrderInfo()
        {
            OrderInfo v = new OrderInfo();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                try{
                v.Title = "Kcb";
                v.WinBidTime = DateTime.Parse("2024-11-05 11:49:12");
                v.InitialDeliveryTime = DateTime.Parse("2023-01-29 11:49:12");
                v.Chunqiuji = cy_scdz.Model.Oder.chunqiue.qiu;
                v.SemesterId = AddDictionary();
                v.BidMoney = 63;
                v.SupplierId = AddDictionary();
                v.BidTypeId = AddDictionary();
                v.TenderAgentFee = 17;
                v.WorkbookCoverPaperTypeId = AddDictionary();
                v.WorkbookInnerPaperTypeId = AddDictionary();
                v.WorkbookColorTypeId = AddDictionary();
                v.WorkbookBindingTypeId = AddDictionary();
                v.WorkbookInnerPageCodeId = AddDictionary();
                v.PictureBookCoverPaperTypeId = AddDictionary();
                v.PictureBookInnerPaperTypeId = AddDictionary();
                v.PictureBookColorTypeId = AddDictionary();
                v.PictureBookBindingTypeId = AddDictionary();
                v.PictureBookInnerPageCodeId = AddDictionary();
                v.LargeCharacterBookCoverPaperTypeId = AddDictionary();
                v.LargeCharacterBookInnerPaperTypeId = AddDictionary();
                v.LargeCharacterBookColorTypeId = AddDictionary();
                v.LargeCharacterBookBindingTypeId = AddDictionary();
                v.LargeCharacterBookInnerPageCodeId = AddDictionary();
                context.Set<OrderInfo>().Add(v);
                context.SaveChanges();
                }
                catch{}
            }
            return v.ID;
        }
    }
}
cy_scdz.Test/PriceSettingControllerTest.cs
New file
@@ -0,0 +1,658 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WalkingTec.Mvvm.Core;
using cy_scdz.Controllers;
using cy_scdz.ViewModel.Setting.PriceSettingVMs;
using cy_scdz.Model.Set;
using cy_scdz.DataAccess;
namespace cy_scdz.Test
{
    [TestClass]
    public class PriceSettingControllerTest
    {
        private PriceSettingController _controller;
        private string _seed;
        public PriceSettingControllerTest()
        {
            _seed = Guid.NewGuid().ToString();
            _controller = MockController.CreateController<PriceSettingController>(new DataContext(_seed, DBTypeEnum.Memory), "user");
        }
        [TestMethod]
        public void SearchTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            string rv2 = _controller.Search((rv.Model as PriceSettingListVM).Searcher);
            Assert.IsTrue(rv2.Contains("\"Code\":200"));
        }
        [TestMethod]
        public void CreateTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Create();
            Assert.IsInstanceOfType(rv.Model, typeof(PriceSettingVM));
            PriceSettingVM vm = rv.Model as PriceSettingVM;
            PriceSetting v = new PriceSetting();
            v.Fmsjz = 63;
            v.Fmnpz = 96;
            v.Nybsz = 31;
            v.Nygbz = 8;
            v.Qmd_Nyds_32_16k = 56;
            v.Qmd_Nyds_32_32k = 56;
            v.Qmd_Nyds_36_16k = 71;
            v.Qmd_Nyds_36_32k = 81;
            v.Qmd_Nyss_32_16k = 77;
            v.Qmd_Nyss_32_32k = 41;
            v.Qmd_Nyss_36_16k = 41;
            v.Qmd_Nyss_36_32k = 10;
            v.Qmd_Nysis_32_16k = 31;
            v.Qmd_Nysis_32_32k = 18;
            v.Qmd_Nysis_36_16k = 26;
            v.Qmd_Nysis_36_32k = 30;
            v.Jb_Nyds_32_16k = 30;
            v.Jb_Nyds_32_32k = 59;
            v.Jb_Nyds_36_16k = 56;
            v.Jb_Nyds_36_32k = 7;
            v.Jb_Nyss_32_16k = 59;
            v.Jb_Nyss_32_32k = 5;
            v.Jb_Nyss_36_16k = 22;
            v.Jb_Nyss_36_32k = 45;
            v.Jb_Nysis_32_16k = 18;
            v.Jb_Nysis_32_32k = 15;
            v.Jb_Nysis_36_16k = 7;
            v.Jb_Nysis_36_32k = 77;
            v.Jb_Ds_32_16k = 30;
            v.Jb_Ds_32_32k = 88;
            v.Gbt_16k = 1;
            v.Gbt_32k = 3;
            v.Ywfy_Jz = 33;
            v.Ywfy_Zs = 81;
            v.Wlfy = 21;
            v.Sf = 55;
            v.Zzxh = 91;
            vm.Entity = v;
            _controller.Create(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<PriceSetting>().Find(v.ID);
                Assert.AreEqual(data.Fmsjz, 63);
                Assert.AreEqual(data.Fmnpz, 96);
                Assert.AreEqual(data.Nybsz, 31);
                Assert.AreEqual(data.Nygbz, 8);
                Assert.AreEqual(data.Qmd_Nyds_32_16k, 56);
                Assert.AreEqual(data.Qmd_Nyds_32_32k, 56);
                Assert.AreEqual(data.Qmd_Nyds_36_16k, 71);
                Assert.AreEqual(data.Qmd_Nyds_36_32k, 81);
                Assert.AreEqual(data.Qmd_Nyss_32_16k, 77);
                Assert.AreEqual(data.Qmd_Nyss_32_32k, 41);
                Assert.AreEqual(data.Qmd_Nyss_36_16k, 41);
                Assert.AreEqual(data.Qmd_Nyss_36_32k, 10);
                Assert.AreEqual(data.Qmd_Nysis_32_16k, 31);
                Assert.AreEqual(data.Qmd_Nysis_32_32k, 18);
                Assert.AreEqual(data.Qmd_Nysis_36_16k, 26);
                Assert.AreEqual(data.Qmd_Nysis_36_32k, 30);
                Assert.AreEqual(data.Jb_Nyds_32_16k, 30);
                Assert.AreEqual(data.Jb_Nyds_32_32k, 59);
                Assert.AreEqual(data.Jb_Nyds_36_16k, 56);
                Assert.AreEqual(data.Jb_Nyds_36_32k, 7);
                Assert.AreEqual(data.Jb_Nyss_32_16k, 59);
                Assert.AreEqual(data.Jb_Nyss_32_32k, 5);
                Assert.AreEqual(data.Jb_Nyss_36_16k, 22);
                Assert.AreEqual(data.Jb_Nyss_36_32k, 45);
                Assert.AreEqual(data.Jb_Nysis_32_16k, 18);
                Assert.AreEqual(data.Jb_Nysis_32_32k, 15);
                Assert.AreEqual(data.Jb_Nysis_36_16k, 7);
                Assert.AreEqual(data.Jb_Nysis_36_32k, 77);
                Assert.AreEqual(data.Jb_Ds_32_16k, 30);
                Assert.AreEqual(data.Jb_Ds_32_32k, 88);
                Assert.AreEqual(data.Gbt_16k, 1);
                Assert.AreEqual(data.Gbt_32k, 3);
                Assert.AreEqual(data.Ywfy_Jz, 33);
                Assert.AreEqual(data.Ywfy_Zs, 81);
                Assert.AreEqual(data.Wlfy, 21);
                Assert.AreEqual(data.Sf, 55);
                Assert.AreEqual(data.Zzxh, 91);
                Assert.AreEqual(data.CreateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.CreateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void EditTest()
        {
            PriceSetting v = new PriceSetting();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Fmsjz = 63;
                v.Fmnpz = 96;
                v.Nybsz = 31;
                v.Nygbz = 8;
                v.Qmd_Nyds_32_16k = 56;
                v.Qmd_Nyds_32_32k = 56;
                v.Qmd_Nyds_36_16k = 71;
                v.Qmd_Nyds_36_32k = 81;
                v.Qmd_Nyss_32_16k = 77;
                v.Qmd_Nyss_32_32k = 41;
                v.Qmd_Nyss_36_16k = 41;
                v.Qmd_Nyss_36_32k = 10;
                v.Qmd_Nysis_32_16k = 31;
                v.Qmd_Nysis_32_32k = 18;
                v.Qmd_Nysis_36_16k = 26;
                v.Qmd_Nysis_36_32k = 30;
                v.Jb_Nyds_32_16k = 30;
                v.Jb_Nyds_32_32k = 59;
                v.Jb_Nyds_36_16k = 56;
                v.Jb_Nyds_36_32k = 7;
                v.Jb_Nyss_32_16k = 59;
                v.Jb_Nyss_32_32k = 5;
                v.Jb_Nyss_36_16k = 22;
                v.Jb_Nyss_36_32k = 45;
                v.Jb_Nysis_32_16k = 18;
                v.Jb_Nysis_32_32k = 15;
                v.Jb_Nysis_36_16k = 7;
                v.Jb_Nysis_36_32k = 77;
                v.Jb_Ds_32_16k = 30;
                v.Jb_Ds_32_32k = 88;
                v.Gbt_16k = 1;
                v.Gbt_32k = 3;
                v.Ywfy_Jz = 33;
                v.Ywfy_Zs = 81;
                v.Wlfy = 21;
                v.Sf = 55;
                v.Zzxh = 91;
                context.Set<PriceSetting>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Edit(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(PriceSettingVM));
            PriceSettingVM vm = rv.Model as PriceSettingVM;
            vm.Wtm.DC = new DataContext(_seed, DBTypeEnum.Memory);
            v = new PriceSetting();
            v.ID = vm.Entity.ID;
            v.Fmsjz = 22;
            v.Fmnpz = 38;
            v.Nybsz = 62;
            v.Nygbz = 31;
            v.Qmd_Nyds_32_16k = 20;
            v.Qmd_Nyds_32_32k = 32;
            v.Qmd_Nyds_36_16k = 61;
            v.Qmd_Nyds_36_32k = 63;
            v.Qmd_Nyss_32_16k = 23;
            v.Qmd_Nyss_32_32k = 31;
            v.Qmd_Nyss_36_16k = 4;
            v.Qmd_Nyss_36_32k = 98;
            v.Qmd_Nysis_32_16k = 97;
            v.Qmd_Nysis_32_32k = 15;
            v.Qmd_Nysis_36_16k = 94;
            v.Qmd_Nysis_36_32k = 20;
            v.Jb_Nyds_32_16k = 8;
            v.Jb_Nyds_32_32k = 94;
            v.Jb_Nyds_36_16k = 42;
            v.Jb_Nyds_36_32k = 56;
            v.Jb_Nyss_32_16k = 75;
            v.Jb_Nyss_32_32k = 74;
            v.Jb_Nyss_36_16k = 45;
            v.Jb_Nyss_36_32k = 68;
            v.Jb_Nysis_32_16k = 57;
            v.Jb_Nysis_32_32k = 78;
            v.Jb_Nysis_36_16k = 45;
            v.Jb_Nysis_36_32k = 42;
            v.Jb_Ds_32_16k = 65;
            v.Jb_Ds_32_32k = 61;
            v.Gbt_16k = 23;
            v.Gbt_32k = 0;
            v.Ywfy_Jz = 63;
            v.Ywfy_Zs = 2;
            v.Wlfy = 46;
            v.Sf = 7;
            v.Zzxh = 62;
            vm.Entity = v;
            vm.FC = new Dictionary<string, object>();
            vm.FC.Add("Entity.Fmsjz", "");
            vm.FC.Add("Entity.Fmnpz", "");
            vm.FC.Add("Entity.Nybsz", "");
            vm.FC.Add("Entity.Nygbz", "");
            vm.FC.Add("Entity.Qmd_Nyds_32_16k", "");
            vm.FC.Add("Entity.Qmd_Nyds_32_32k", "");
            vm.FC.Add("Entity.Qmd_Nyds_36_16k", "");
            vm.FC.Add("Entity.Qmd_Nyds_36_32k", "");
            vm.FC.Add("Entity.Qmd_Nyss_32_16k", "");
            vm.FC.Add("Entity.Qmd_Nyss_32_32k", "");
            vm.FC.Add("Entity.Qmd_Nyss_36_16k", "");
            vm.FC.Add("Entity.Qmd_Nyss_36_32k", "");
            vm.FC.Add("Entity.Qmd_Nysis_32_16k", "");
            vm.FC.Add("Entity.Qmd_Nysis_32_32k", "");
            vm.FC.Add("Entity.Qmd_Nysis_36_16k", "");
            vm.FC.Add("Entity.Qmd_Nysis_36_32k", "");
            vm.FC.Add("Entity.Jb_Nyds_32_16k", "");
            vm.FC.Add("Entity.Jb_Nyds_32_32k", "");
            vm.FC.Add("Entity.Jb_Nyds_36_16k", "");
            vm.FC.Add("Entity.Jb_Nyds_36_32k", "");
            vm.FC.Add("Entity.Jb_Nyss_32_16k", "");
            vm.FC.Add("Entity.Jb_Nyss_32_32k", "");
            vm.FC.Add("Entity.Jb_Nyss_36_16k", "");
            vm.FC.Add("Entity.Jb_Nyss_36_32k", "");
            vm.FC.Add("Entity.Jb_Nysis_32_16k", "");
            vm.FC.Add("Entity.Jb_Nysis_32_32k", "");
            vm.FC.Add("Entity.Jb_Nysis_36_16k", "");
            vm.FC.Add("Entity.Jb_Nysis_36_32k", "");
            vm.FC.Add("Entity.Jb_Ds_32_16k", "");
            vm.FC.Add("Entity.Jb_Ds_32_32k", "");
            vm.FC.Add("Entity.Gbt_16k", "");
            vm.FC.Add("Entity.Gbt_32k", "");
            vm.FC.Add("Entity.Ywfy_Jz", "");
            vm.FC.Add("Entity.Ywfy_Zs", "");
            vm.FC.Add("Entity.Wlfy", "");
            vm.FC.Add("Entity.Sf", "");
            vm.FC.Add("Entity.Zzxh", "");
            _controller.Edit(vm);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<PriceSetting>().Find(v.ID);
                Assert.AreEqual(data.Fmsjz, 22);
                Assert.AreEqual(data.Fmnpz, 38);
                Assert.AreEqual(data.Nybsz, 62);
                Assert.AreEqual(data.Nygbz, 31);
                Assert.AreEqual(data.Qmd_Nyds_32_16k, 20);
                Assert.AreEqual(data.Qmd_Nyds_32_32k, 32);
                Assert.AreEqual(data.Qmd_Nyds_36_16k, 61);
                Assert.AreEqual(data.Qmd_Nyds_36_32k, 63);
                Assert.AreEqual(data.Qmd_Nyss_32_16k, 23);
                Assert.AreEqual(data.Qmd_Nyss_32_32k, 31);
                Assert.AreEqual(data.Qmd_Nyss_36_16k, 4);
                Assert.AreEqual(data.Qmd_Nyss_36_32k, 98);
                Assert.AreEqual(data.Qmd_Nysis_32_16k, 97);
                Assert.AreEqual(data.Qmd_Nysis_32_32k, 15);
                Assert.AreEqual(data.Qmd_Nysis_36_16k, 94);
                Assert.AreEqual(data.Qmd_Nysis_36_32k, 20);
                Assert.AreEqual(data.Jb_Nyds_32_16k, 8);
                Assert.AreEqual(data.Jb_Nyds_32_32k, 94);
                Assert.AreEqual(data.Jb_Nyds_36_16k, 42);
                Assert.AreEqual(data.Jb_Nyds_36_32k, 56);
                Assert.AreEqual(data.Jb_Nyss_32_16k, 75);
                Assert.AreEqual(data.Jb_Nyss_32_32k, 74);
                Assert.AreEqual(data.Jb_Nyss_36_16k, 45);
                Assert.AreEqual(data.Jb_Nyss_36_32k, 68);
                Assert.AreEqual(data.Jb_Nysis_32_16k, 57);
                Assert.AreEqual(data.Jb_Nysis_32_32k, 78);
                Assert.AreEqual(data.Jb_Nysis_36_16k, 45);
                Assert.AreEqual(data.Jb_Nysis_36_32k, 42);
                Assert.AreEqual(data.Jb_Ds_32_16k, 65);
                Assert.AreEqual(data.Jb_Ds_32_32k, 61);
                Assert.AreEqual(data.Gbt_16k, 23);
                Assert.AreEqual(data.Gbt_32k, 0);
                Assert.AreEqual(data.Ywfy_Jz, 63);
                Assert.AreEqual(data.Ywfy_Zs, 2);
                Assert.AreEqual(data.Wlfy, 46);
                Assert.AreEqual(data.Sf, 7);
                Assert.AreEqual(data.Zzxh, 62);
                Assert.AreEqual(data.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void DeleteTest()
        {
            PriceSetting v = new PriceSetting();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Fmsjz = 63;
                v.Fmnpz = 96;
                v.Nybsz = 31;
                v.Nygbz = 8;
                v.Qmd_Nyds_32_16k = 56;
                v.Qmd_Nyds_32_32k = 56;
                v.Qmd_Nyds_36_16k = 71;
                v.Qmd_Nyds_36_32k = 81;
                v.Qmd_Nyss_32_16k = 77;
                v.Qmd_Nyss_32_32k = 41;
                v.Qmd_Nyss_36_16k = 41;
                v.Qmd_Nyss_36_32k = 10;
                v.Qmd_Nysis_32_16k = 31;
                v.Qmd_Nysis_32_32k = 18;
                v.Qmd_Nysis_36_16k = 26;
                v.Qmd_Nysis_36_32k = 30;
                v.Jb_Nyds_32_16k = 30;
                v.Jb_Nyds_32_32k = 59;
                v.Jb_Nyds_36_16k = 56;
                v.Jb_Nyds_36_32k = 7;
                v.Jb_Nyss_32_16k = 59;
                v.Jb_Nyss_32_32k = 5;
                v.Jb_Nyss_36_16k = 22;
                v.Jb_Nyss_36_32k = 45;
                v.Jb_Nysis_32_16k = 18;
                v.Jb_Nysis_32_32k = 15;
                v.Jb_Nysis_36_16k = 7;
                v.Jb_Nysis_36_32k = 77;
                v.Jb_Ds_32_16k = 30;
                v.Jb_Ds_32_32k = 88;
                v.Gbt_16k = 1;
                v.Gbt_32k = 3;
                v.Ywfy_Jz = 33;
                v.Ywfy_Zs = 81;
                v.Wlfy = 21;
                v.Sf = 55;
                v.Zzxh = 91;
                context.Set<PriceSetting>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Delete(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(PriceSettingVM));
            PriceSettingVM vm = rv.Model as PriceSettingVM;
            v = new PriceSetting();
            v.ID = vm.Entity.ID;
            vm.Entity = v;
            _controller.Delete(v.ID.ToString(),null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data = context.Set<PriceSetting>().Find(v.ID);
                Assert.AreEqual(data, null);
          }
        }
        [TestMethod]
        public void DetailsTest()
        {
            PriceSetting v = new PriceSetting();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v.Fmsjz = 63;
                v.Fmnpz = 96;
                v.Nybsz = 31;
                v.Nygbz = 8;
                v.Qmd_Nyds_32_16k = 56;
                v.Qmd_Nyds_32_32k = 56;
                v.Qmd_Nyds_36_16k = 71;
                v.Qmd_Nyds_36_32k = 81;
                v.Qmd_Nyss_32_16k = 77;
                v.Qmd_Nyss_32_32k = 41;
                v.Qmd_Nyss_36_16k = 41;
                v.Qmd_Nyss_36_32k = 10;
                v.Qmd_Nysis_32_16k = 31;
                v.Qmd_Nysis_32_32k = 18;
                v.Qmd_Nysis_36_16k = 26;
                v.Qmd_Nysis_36_32k = 30;
                v.Jb_Nyds_32_16k = 30;
                v.Jb_Nyds_32_32k = 59;
                v.Jb_Nyds_36_16k = 56;
                v.Jb_Nyds_36_32k = 7;
                v.Jb_Nyss_32_16k = 59;
                v.Jb_Nyss_32_32k = 5;
                v.Jb_Nyss_36_16k = 22;
                v.Jb_Nyss_36_32k = 45;
                v.Jb_Nysis_32_16k = 18;
                v.Jb_Nysis_32_32k = 15;
                v.Jb_Nysis_36_16k = 7;
                v.Jb_Nysis_36_32k = 77;
                v.Jb_Ds_32_16k = 30;
                v.Jb_Ds_32_32k = 88;
                v.Gbt_16k = 1;
                v.Gbt_32k = 3;
                v.Ywfy_Jz = 33;
                v.Ywfy_Zs = 81;
                v.Wlfy = 21;
                v.Sf = 55;
                v.Zzxh = 91;
                context.Set<PriceSetting>().Add(v);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.Details(v.ID.ToString());
            Assert.IsInstanceOfType(rv.Model, typeof(IBaseCRUDVM<TopBasePoco>));
            Assert.AreEqual(v.ID, (rv.Model as IBaseCRUDVM<TopBasePoco>).Entity.GetID());
        }
        [TestMethod]
        public void BatchEditTest()
        {
            PriceSetting v1 = new PriceSetting();
            PriceSetting v2 = new PriceSetting();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.Fmsjz = 63;
                v1.Fmnpz = 96;
                v1.Nybsz = 31;
                v1.Nygbz = 8;
                v1.Qmd_Nyds_32_16k = 56;
                v1.Qmd_Nyds_32_32k = 56;
                v1.Qmd_Nyds_36_16k = 71;
                v1.Qmd_Nyds_36_32k = 81;
                v1.Qmd_Nyss_32_16k = 77;
                v1.Qmd_Nyss_32_32k = 41;
                v1.Qmd_Nyss_36_16k = 41;
                v1.Qmd_Nyss_36_32k = 10;
                v1.Qmd_Nysis_32_16k = 31;
                v1.Qmd_Nysis_32_32k = 18;
                v1.Qmd_Nysis_36_16k = 26;
                v1.Qmd_Nysis_36_32k = 30;
                v1.Jb_Nyds_32_16k = 30;
                v1.Jb_Nyds_32_32k = 59;
                v1.Jb_Nyds_36_16k = 56;
                v1.Jb_Nyds_36_32k = 7;
                v1.Jb_Nyss_32_16k = 59;
                v1.Jb_Nyss_32_32k = 5;
                v1.Jb_Nyss_36_16k = 22;
                v1.Jb_Nyss_36_32k = 45;
                v1.Jb_Nysis_32_16k = 18;
                v1.Jb_Nysis_32_32k = 15;
                v1.Jb_Nysis_36_16k = 7;
                v1.Jb_Nysis_36_32k = 77;
                v1.Jb_Ds_32_16k = 30;
                v1.Jb_Ds_32_32k = 88;
                v1.Gbt_16k = 1;
                v1.Gbt_32k = 3;
                v1.Ywfy_Jz = 33;
                v1.Ywfy_Zs = 81;
                v1.Wlfy = 21;
                v1.Sf = 55;
                v1.Zzxh = 91;
                v2.Fmsjz = 22;
                v2.Fmnpz = 38;
                v2.Nybsz = 62;
                v2.Nygbz = 31;
                v2.Qmd_Nyds_32_16k = 20;
                v2.Qmd_Nyds_32_32k = 32;
                v2.Qmd_Nyds_36_16k = 61;
                v2.Qmd_Nyds_36_32k = 63;
                v2.Qmd_Nyss_32_16k = 23;
                v2.Qmd_Nyss_32_32k = 31;
                v2.Qmd_Nyss_36_16k = 4;
                v2.Qmd_Nyss_36_32k = 98;
                v2.Qmd_Nysis_32_16k = 97;
                v2.Qmd_Nysis_32_32k = 15;
                v2.Qmd_Nysis_36_16k = 94;
                v2.Qmd_Nysis_36_32k = 20;
                v2.Jb_Nyds_32_16k = 8;
                v2.Jb_Nyds_32_32k = 94;
                v2.Jb_Nyds_36_16k = 42;
                v2.Jb_Nyds_36_32k = 56;
                v2.Jb_Nyss_32_16k = 75;
                v2.Jb_Nyss_32_32k = 74;
                v2.Jb_Nyss_36_16k = 45;
                v2.Jb_Nyss_36_32k = 68;
                v2.Jb_Nysis_32_16k = 57;
                v2.Jb_Nysis_32_32k = 78;
                v2.Jb_Nysis_36_16k = 45;
                v2.Jb_Nysis_36_32k = 42;
                v2.Jb_Ds_32_16k = 65;
                v2.Jb_Ds_32_32k = 61;
                v2.Gbt_16k = 23;
                v2.Gbt_32k = 0;
                v2.Ywfy_Jz = 63;
                v2.Ywfy_Zs = 2;
                v2.Wlfy = 46;
                v2.Sf = 7;
                v2.Zzxh = 62;
                context.Set<PriceSetting>().Add(v1);
                context.Set<PriceSetting>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(PriceSettingBatchVM));
            PriceSettingBatchVM vm = rv.Model as PriceSettingBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            vm.FC = new Dictionary<string, object>();
            _controller.DoBatchEdit(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<PriceSetting>().Find(v1.ID);
                var data2 = context.Set<PriceSetting>().Find(v2.ID);
                Assert.AreEqual(data1.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data1.UpdateTime.Value).Seconds < 10);
                Assert.AreEqual(data2.UpdateBy, "user");
                Assert.IsTrue(DateTime.Now.Subtract(data2.UpdateTime.Value).Seconds < 10);
            }
        }
        [TestMethod]
        public void BatchDeleteTest()
        {
            PriceSetting v1 = new PriceSetting();
            PriceSetting v2 = new PriceSetting();
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                v1.Fmsjz = 63;
                v1.Fmnpz = 96;
                v1.Nybsz = 31;
                v1.Nygbz = 8;
                v1.Qmd_Nyds_32_16k = 56;
                v1.Qmd_Nyds_32_32k = 56;
                v1.Qmd_Nyds_36_16k = 71;
                v1.Qmd_Nyds_36_32k = 81;
                v1.Qmd_Nyss_32_16k = 77;
                v1.Qmd_Nyss_32_32k = 41;
                v1.Qmd_Nyss_36_16k = 41;
                v1.Qmd_Nyss_36_32k = 10;
                v1.Qmd_Nysis_32_16k = 31;
                v1.Qmd_Nysis_32_32k = 18;
                v1.Qmd_Nysis_36_16k = 26;
                v1.Qmd_Nysis_36_32k = 30;
                v1.Jb_Nyds_32_16k = 30;
                v1.Jb_Nyds_32_32k = 59;
                v1.Jb_Nyds_36_16k = 56;
                v1.Jb_Nyds_36_32k = 7;
                v1.Jb_Nyss_32_16k = 59;
                v1.Jb_Nyss_32_32k = 5;
                v1.Jb_Nyss_36_16k = 22;
                v1.Jb_Nyss_36_32k = 45;
                v1.Jb_Nysis_32_16k = 18;
                v1.Jb_Nysis_32_32k = 15;
                v1.Jb_Nysis_36_16k = 7;
                v1.Jb_Nysis_36_32k = 77;
                v1.Jb_Ds_32_16k = 30;
                v1.Jb_Ds_32_32k = 88;
                v1.Gbt_16k = 1;
                v1.Gbt_32k = 3;
                v1.Ywfy_Jz = 33;
                v1.Ywfy_Zs = 81;
                v1.Wlfy = 21;
                v1.Sf = 55;
                v1.Zzxh = 91;
                v2.Fmsjz = 22;
                v2.Fmnpz = 38;
                v2.Nybsz = 62;
                v2.Nygbz = 31;
                v2.Qmd_Nyds_32_16k = 20;
                v2.Qmd_Nyds_32_32k = 32;
                v2.Qmd_Nyds_36_16k = 61;
                v2.Qmd_Nyds_36_32k = 63;
                v2.Qmd_Nyss_32_16k = 23;
                v2.Qmd_Nyss_32_32k = 31;
                v2.Qmd_Nyss_36_16k = 4;
                v2.Qmd_Nyss_36_32k = 98;
                v2.Qmd_Nysis_32_16k = 97;
                v2.Qmd_Nysis_32_32k = 15;
                v2.Qmd_Nysis_36_16k = 94;
                v2.Qmd_Nysis_36_32k = 20;
                v2.Jb_Nyds_32_16k = 8;
                v2.Jb_Nyds_32_32k = 94;
                v2.Jb_Nyds_36_16k = 42;
                v2.Jb_Nyds_36_32k = 56;
                v2.Jb_Nyss_32_16k = 75;
                v2.Jb_Nyss_32_32k = 74;
                v2.Jb_Nyss_36_16k = 45;
                v2.Jb_Nyss_36_32k = 68;
                v2.Jb_Nysis_32_16k = 57;
                v2.Jb_Nysis_32_32k = 78;
                v2.Jb_Nysis_36_16k = 45;
                v2.Jb_Nysis_36_32k = 42;
                v2.Jb_Ds_32_16k = 65;
                v2.Jb_Ds_32_32k = 61;
                v2.Gbt_16k = 23;
                v2.Gbt_32k = 0;
                v2.Ywfy_Jz = 63;
                v2.Ywfy_Zs = 2;
                v2.Wlfy = 46;
                v2.Sf = 7;
                v2.Zzxh = 62;
                context.Set<PriceSetting>().Add(v1);
                context.Set<PriceSetting>().Add(v2);
                context.SaveChanges();
            }
            PartialViewResult rv = (PartialViewResult)_controller.BatchDelete(new string[] { v1.ID.ToString(), v2.ID.ToString() });
            Assert.IsInstanceOfType(rv.Model, typeof(PriceSettingBatchVM));
            PriceSettingBatchVM vm = rv.Model as PriceSettingBatchVM;
            vm.Ids = new string[] { v1.ID.ToString(), v2.ID.ToString() };
            _controller.DoBatchDelete(vm, null);
            using (var context = new DataContext(_seed, DBTypeEnum.Memory))
            {
                var data1 = context.Set<PriceSetting>().Find(v1.ID);
                var data2 = context.Set<PriceSetting>().Find(v2.ID);
                Assert.AreEqual(data1, null);
            Assert.AreEqual(data2, null);
            }
        }
        [TestMethod]
        public void ExportTest()
        {
            PartialViewResult rv = (PartialViewResult)_controller.Index();
            Assert.IsInstanceOfType(rv.Model, typeof(IBasePagedListVM<TopBasePoco, BaseSearcher>));
            IActionResult rv2 = _controller.ExportExcel(rv.Model as PriceSettingListVM);
            Assert.IsTrue((rv2 as FileContentResult).FileContents.Length > 0);
        }
    }
}
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoBatchVM.cs
New file
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.BidOrder.OrderInfoVMs
{
    public partial class OrderInfoBatchVM : BaseBatchVM<OrderInfo, OrderInfo_BatchEdit>
    {
        public OrderInfoBatchVM()
        {
            ListVM = new OrderInfoListVM();
            LinkedVM = new OrderInfo_BatchEdit();
        }
    }
    /// <summary>
    /// Class to define batch edit fields
    /// </summary>
    public class OrderInfo_BatchEdit : BaseVM
    {
        protected override void InitVM()
        {
        }
    }
}
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoImportVM.cs
New file
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.BidOrder.OrderInfoVMs
{
    public partial class OrderInfoTemplateVM : BaseTemplateVM
    {
        protected override void InitVM()
        {
        }
    }
    public class OrderInfoImportVM : BaseImportVM<OrderInfoTemplateVM, OrderInfo>
    {
    }
}
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoListVM.cs
New file
@@ -0,0 +1,118 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using cy_scdz.Model.Oder;
using cy_scdz.Model.Set;
using System.Text;
namespace cy_scdz.ViewModel.BidOrder.OrderInfoVMs
{
    public partial class OrderInfoListVM : BasePagedListVM<OrderInfo_View, OrderInfoSearcher>
    {
        public override void AfterDoSearcher()
        {
            for (int i = 0; i < EntityList.Count; i++)
            {
                EntityList[i].Index = i+1;
            }
            base.AfterDoSearcher();
        }
        protected override List<GridAction> InitGridAction()
        {
            return new List<GridAction>
            {
                this.MakeStandardAction("OrderInfo", GridActionStandardTypesEnum.Create, Localizer["Sys.Create"],"BidOrder", dialogWidth: 1440),
                this.MakeStandardAction("OrderInfo", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], "BidOrder", dialogWidth: 1440),
                this.MakeStandardAction("OrderInfo", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "BidOrder", dialogWidth: 800),
                this.MakeStandardAction("OrderInfo", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], "BidOrder", dialogWidth: 800),
            };
        }
        protected override IEnumerable<IGridColumn<OrderInfo_View>> InitGridHeader()
        {
            return new List<GridColumn<OrderInfo_View>>{
                     this.MakeGridHeader(x => x.Index).SetWidth(20).SetHeader(" "),
                this.MakeGridHeader(x => x.Title),
                this.MakeGridHeader(x => x.WinBidTime),
                this.MakeGridHeader(x => x.Name_view),
                this.MakeGridHeader(x => x.BidMoney),
                this.MakeGridHeader(x => x.Name_view2),
                this.MakeGridHeader(x => x.Name_view3),
                  this.MakeGridHeader(x => x.Productions).SetFormat(showProductions).SetHeader("剩余学期"),
                this.MakeGridHeaderAction(width: 200)
            };
        }
        private string showProductions(OrderInfo_View entity, object obj)
        {
      var list=      entity.Productions.Where(x => x.IsOver == false).ToList();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < list.Count; i++) {
                sb.Append("<p>").Append(list[i].DeliveryTime.ToString("yyyy")+" "+ list[i].Chunqiuji.GetEnumDisplayName()+" "
                    +  UIService.MakeButton(ButtonTypesEnum.Link, "BidOrder/OrderInfo/CompleteProduction?id=" + list[i].ID.ToString(), "生产", 1440, null, title: "详情")
                    ).Append("</p>");
            }
            return sb.ToString();
           // return UIService.MakeButton(ButtonTypesEnum.Link, "user/FrameworkUser/Details?id=" + entity.ParentITCode.ID.ToString(), entity.ParentITCode.Name.ToString(), 1024, null, title: "详情", Toptitle: "查看详情");
        }
        public override IOrderedQueryable<OrderInfo_View> GetSearchQuery()
        {
            var query = DC.Set<OrderInfo>().Include(x=>x.Productions)
                .CheckContain(Searcher.Title, x=>x.Title)
                .CheckBetween(Searcher.WinBidTime?.GetStartTime(), Searcher.WinBidTime?.GetEndTime(), x => x.WinBidTime, includeMax: false)
                .CheckEqual(Searcher.SupplierId, x=>x.SupplierId)
                .CheckEqual(Searcher.BidTypeId, x=>x.BidTypeId)
                .Select(x => new OrderInfo_View
                {
                    ID = x.ID,
                    Title = x.Title,
                    WinBidTime = x.WinBidTime,
                    Name_view = x.Semester.Name,
                    BidMoney = x.BidMoney,
                    Productions=x.Productions,
                    Name_view2 = x.Supplier.Name,
                    Name_view3 = x.BidType.Name,
                    CreateTime=x.CreateTime
                })
                .OrderByDescending(x => x.CreateTime);
            return query;
        }
    }
    public class OrderInfo_View : OrderInfo{
        /// <summary>
        /// 序号
        /// </summary>
        [Display(Name = "序号")]
        public int Index { get; set; }
        /// <summary>
        /// 供货学期
        /// </summary>
        [Display(Name = "供货学期")]
        public String Name_view { get; set; }
        /// <summary>
        /// 中标供应商
        /// </summary>
        [Display(Name = "中标供应商")]
        public String Name_view2 { get; set; }
        /// <summary>
        /// 订单类别
        /// </summary>
        [Display(Name = "订单类别")]
        public String Name_view3 { get; set; }
    }
}
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoSearcher.cs
New file
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
using cy_scdz.Model.Set;
using Microsoft.EntityFrameworkCore;
namespace cy_scdz.ViewModel.BidOrder.OrderInfoVMs
{
    public partial class OrderInfoSearcher : BaseSearcher
    {
        [Display(Name = "项目名称")]
        public String Title { get; set; }
        [Display(Name = "中标时间")]
        public DateRange WinBidTime { get; set; } = new DateRange(DateTime.Now.AddYears(-2), DateTime.Now);
        public List<ComboSelectListItem> AllSuppliers { get; set; }
        [Display(Name = "中标供应商")]
        public Guid? SupplierId { get; set; }
        public List<ComboSelectListItem> AllBidTypes { get; set; }
        [Display(Name = "订单类别")]
        public Guid? BidTypeId { get; set; }
        protected override void InitVM()
        {
            AllSuppliers = DC.Set<Dictionary>().Include(x=>x.Parent).Where(x=>x.Parent.Key=="zbgys").GetSelectListItems(Wtm, y => y.Name);
            AllBidTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "ddlb").GetSelectListItems(Wtm, y => y.Name);
        }
    }
}
cy_scdz.ViewModel/BidOrder/OrderInfoVMs/OrderInfoVM.cs
New file
@@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
using cy_scdz.Model.Set;
using Microsoft.EntityFrameworkCore;
using utils;
using Microsoft.AspNetCore.Http;
using System.Globalization;
using NPOI.SS.Formula.Functions;
namespace cy_scdz.ViewModel.BidOrder.OrderInfoVMs
{
    public partial class OrderInfoVM : BaseCRUDVM<OrderInfo>
    {
        /// <summary>
        /// 供货学期
        /// </summary>
        public List<ComboSelectListItem> AllSemesters { get; set; }
        /// <summary>
        /// 供应商
        /// </summary>
        public List<ComboSelectListItem> AllSuppliers { get; set; }
        /// <summary>
        /// 订单类别
        /// </summary>
        public List<ComboSelectListItem> AllBidTypes { get; set; }
        /// <summary>
        /// 封面纸张
        /// </summary>
        public List<ComboSelectListItem> AllCoverPaperTypes { get; set; }
        /// <summary>
        /// 内页纸张
        /// </summary>
        public List<ComboSelectListItem> AllInnerPaperTypes { get; set; }
        /// <summary>
        /// 内页颜色
        /// </summary>
        public List<ComboSelectListItem> AllColorTypes { get; set; }
        /// <summary>
        /// 装订方式
        /// </summary>
        public List<ComboSelectListItem> AllBindingTypes { get; set; }
        /// <summary>
        /// 印刷厂
        /// </summary>
        public List<ComboSelectListItem> AllManufacturers { get; set; }
        /// <summary>
        /// 页码
        /// </summary>
        public List<ComboSelectListItem> AllInnerPaperCodes { get; set; }
        /// <summary>
        /// 初始供货年份 为了除了date控件年份bug
        /// </summary>
        [Display(Name ="初始供货")]
        [Required]
        public string InitialDeliveryTime { set; get; }
        public OrderInfoVM()
        {
            SetInclude(x => x.Semester);
            SetInclude(x => x.Supplier);
            SetInclude(x => x.BidType);
            SetInclude(x => x.WorkbookCoverPaperType);
            SetInclude(x => x.WorkbookInnerPaperType);
            SetInclude(x => x.WorkbookColorType);
            SetInclude(x => x.WorkbookBindingType);
            SetInclude(x => x.PictureBookCoverPaperType);
            SetInclude(x => x.PictureBookInnerPaperType);
            SetInclude(x => x.PictureBookColorType);
            SetInclude(x => x.PictureBookBindingType);
            SetInclude(x => x.LargeCharacterBookCoverPaperType);
            SetInclude(x => x.LargeCharacterBookInnerPaperType);
            SetInclude(x => x.LargeCharacterBookColorType);
            SetInclude(x => x.LargeCharacterBookBindingType);
            SetInclude(x => x.OrderReceivablesStatus);
            SetInclude(x => x.Sures);
            SetInclude(x => x.AdvancePayments);
            //SetInclude(x => x.LargeCharacterManufacturer);
            //SetInclude(x => x.Workbook16KManufacturer);
            //SetInclude(x => x.Workbook32KManufacturer);
            //SetInclude(x => x.PictureBook16KManufacturer);
            //SetInclude(x => x.PictureBook32KManufacturer);
            //SetInclude(x => x.PictureBookA4KManufacturer);
        }
        protected override void InitVM()
        {
            AllSemesters = DC.Set<Dictionary>().Include(x=>x.Parent).Where(x=>x.Parent.Key== "ghxq").GetSelectListItems(Wtm, y => y.Name);
            AllSuppliers = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "zbgys").GetSelectListItems(Wtm, y => y.Name);
            AllBidTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "ddlb").GetSelectListItems(Wtm, y => y.Name);
             AllCoverPaperTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "fmzz").GetSelectListItems(Wtm, y => y.Name);
            AllInnerPaperTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyzz").GetSelectListItems(Wtm, y => y.Name);
            AllColorTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyys").GetSelectListItems(Wtm, y => y.Name);
            AllBindingTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "zdfs").GetSelectListItems(Wtm, y => y.Name);
            AllManufacturers = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "yscs").GetSelectListItems(Wtm, y => y.Name);
            AllInnerPaperCodes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyym").GetSelectListItems(Wtm, y => y.Name);
            if (string.IsNullOrEmpty(Entity.Title))
            {
                //是新建
                //设置默认值
                Entity.SemesterId = DC.Set<Dictionary>().Where(x => x.Key == "ghxqmrz").Select(x => x.ID).SingleOrDefault();
              var   WorkbookCoverPaperTypeId= DC.Set<Dictionary>().Where(x => x.Key == "fmzzmrz").Select(x => x.ID).SingleOrDefault();
                Entity.WorkbookCoverPaperTypeId = WorkbookCoverPaperTypeId;
                Entity.PictureBookCoverPaperTypeId = WorkbookCoverPaperTypeId;
                Entity.LargeCharacterBookCoverPaperTypeId= WorkbookCoverPaperTypeId;
                var WorkbookInnerPaperTypeId = DC.Set<Dictionary>().Where(x => x.Key == "nyzzmrz").Select(x => x.ID).SingleOrDefault();
                Entity.WorkbookInnerPaperTypeId = WorkbookInnerPaperTypeId;
                Entity.PictureBookInnerPaperTypeId = WorkbookInnerPaperTypeId;
                Entity.LargeCharacterBookInnerPaperTypeId = WorkbookInnerPaperTypeId;
                InitialDeliveryTime = DateTime.Now.ToString("yyyy");
                Entity.Chunqiuji = chunqiue.chun;
                //生产厂商
               var ManufacturerId = DC.Set<Dictionary>().Where(x => x.Key == "bchang").Select(x => x.ID).SingleOrDefault();
                //Entity.Workbook32KManufacturerId = ManufacturerId;
                //Entity.Workbook16KManufacturerId = ManufacturerId;
                //Entity.PictureBook16KManufacturerId= ManufacturerId;
                //Entity.PictureBook32KManufacturerId= ManufacturerId;
                //Entity.PictureBookA4KManufacturerId = ManufacturerId;
                //Entity.LargeCharacterManufacturerId = ManufacturerId;
            }
            else
            {
                InitialDeliveryTime= Entity.InitialDeliveryTime.ToString("yyyy");
            }
        }
        public override void DoAdd()
        {
          var data=  DC.Set<Dictionary>().Where(x => x.ID == Entity.SemesterId).Select(x => x.Value).SingleOrDefault();
            var SemesterCount = data?.ToInt32();
            int year = InitialDeliveryTime.ToInt32();
            if(year<1000)
            {
                MSD.AddModelError("InitialDeliveryTime", "初始供货年份选择错误");
                return;
            }
            Entity.InitialDeliveryTime = new DateTime(year, Entity.Chunqiuji == chunqiue.chun?1:7, 1);
            var ProductionTime = Entity.InitialDeliveryTime;
            using (var tr = DC.BeginTransaction())
            {
                DC.AddEntity(Entity);
                ///创建订单
                for (int i = 0; i < SemesterCount; i++)
                {
                    var oder = new OrderProduction
                    {
                        CreateTime = DateTime.Now,
                        CreateBy = Wtm.LoginUserInfo.ITCode,
                        OderId = Entity.ID,
                        DeliveryTime = ProductionTime,
                        Chunqiuji = ProductionTime.Month >= 6 ? chunqiue.qiu : chunqiue.chun
                    };
                    DC.AddEntity<OrderProduction>(oder);
                    ProductionTime= ProductionTime.AddMonths(6);
                }
                DC.SaveChanges();
                if(MSD.IsValid)
                {
                    tr.Commit();
                }
                else
                { tr.Rollback(); }
            }
            //base.DoAdd();
        }
        public override void DoEdit(bool updateAllFields = false)
        {
            base.DoEdit(updateAllFields);
        }
        public override void DoDelete()
        {
            base.DoDelete();
        }
        //private List<OrderProduction> CreatProduction(DateTime ProductionTime,Guid OderId)
        //{
        //}
    }
}
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionBatchVM.cs
New file
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.Order.OrderProductionVMs
{
    public partial class OrderProductionBatchVM : BaseBatchVM<OrderProduction, OrderProduction_BatchEdit>
    {
        public OrderProductionBatchVM()
        {
            ListVM = new OrderProductionListVM();
            LinkedVM = new OrderProduction_BatchEdit();
        }
    }
    /// <summary>
    /// Class to define batch edit fields
    /// </summary>
    public class OrderProduction_BatchEdit : BaseVM
    {
        protected override void InitVM()
        {
        }
    }
}
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionImportVM.cs
New file
@@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.Order.OrderProductionVMs
{
    public partial class OrderProductionTemplateVM : BaseTemplateVM
    {
        [Display(Name = "项目")]
        public ExcelPropety Oder_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.OderId);
        [Display(Name = "16K作业本")]
        public ExcelPropety Workbook16KCount_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook16KCount);
        [Display(Name = "16K作业本单价")]
        public ExcelPropety Workbook16KPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook16KPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety Workbook16KManufacturerId_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook16KManufacturerId);
        [Display(Name = "32K作业本")]
        public ExcelPropety Workbook32KCount_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook32KCount);
        [Display(Name = "16K作业本单价")]
        public ExcelPropety Workbook32KPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook32KPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety Workbook32KManufacturerId_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Workbook32KManufacturerId);
        [Display(Name = "16K图画本")]
        public ExcelPropety PictureBook16KCount_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook16KCount);
        [Display(Name = "16K作业本单价")]
        public ExcelPropety PictureBook16KPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook16KPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety PictureBook16KManufacturerId_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook16KManufacturerId);
        [Display(Name = "32K图画本")]
        public ExcelPropety PictureBook32KCount_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook32KCount);
        [Display(Name = "32K图画本单价")]
        public ExcelPropety PictureBook32KPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook32KPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety PictureBook32KManufacturerId_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBook32KManufacturerId);
        [Display(Name = "A4图画本")]
        public ExcelPropety PictureBookA4Count_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBookA4Count);
        [Display(Name = "16K作业本单价")]
        public ExcelPropety PictureBookA4KPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBookA4KPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety PictureBookA4KManufacturerId_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.PictureBookA4KManufacturerId);
        [Display(Name = "大字本")]
        public ExcelPropety LargeCharacterBookCount_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.LargeCharacterBookCount);
        [Display(Name = "大字本单价")]
        public ExcelPropety LargeCharacterPrice_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.LargeCharacterPrice);
        [Display(Name = "生产厂商")]
        public ExcelPropety LargeCharacterManufacturerIds_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.LargeCharacterManufacturerIds);
        [Display(Name = "标注")]
        public ExcelPropety Mark_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Mark);
        [Display(Name = "供货年份")]
        public ExcelPropety DeliveryTime_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.DeliveryTime);
        [Display(Name = "供货学期")]
        public ExcelPropety Chunqiuji_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.Chunqiuji);
        [Display(Name = "是否完结")]
        public ExcelPropety IsOver_Excel = ExcelPropety.CreateProperty<OrderProduction>(x => x.IsOver);
        protected override void InitVM()
        {
            Oder_Excel.DataType = ColumnDataType.ComboBox;
            Oder_Excel.ListItems = DC.Set<OrderInfo>().GetSelectListItems(Wtm, y => y.Title);
        }
    }
    public class OrderProductionImportVM : BaseImportVM<OrderProductionTemplateVM, OrderProduction>
    {
    }
}
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionListVM.cs
New file
@@ -0,0 +1,103 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.Order.OrderProductionVMs
{
    public partial class OrderProductionListVM : BasePagedListVM<OrderProduction_View, OrderProductionSearcher>
    {
        protected override List<GridAction> InitGridAction()
        {
            return new List<GridAction>
            {
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.Create, Localizer["Sys.Create"],"Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.BatchEdit, Localizer["Sys.BatchEdit"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.BatchDelete, Localizer["Sys.BatchDelete"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.Import, Localizer["Sys.Import"], "Order", dialogWidth: 800),
                this.MakeStandardAction("OrderProduction", GridActionStandardTypesEnum.ExportExcel, Localizer["Sys.Export"], "Order"),
            };
        }
        protected override IEnumerable<IGridColumn<OrderProduction_View>> InitGridHeader()
        {
            return new List<GridColumn<OrderProduction_View>>{
                this.MakeGridHeader(x => x.Title_view),
                this.MakeGridHeader(x => x.Workbook16KCount),
                this.MakeGridHeader(x => x.Workbook16KPrice),
                this.MakeGridHeader(x => x.Workbook16KManufacturerId),
                this.MakeGridHeader(x => x.Workbook32KCount),
                this.MakeGridHeader(x => x.Workbook32KPrice),
                this.MakeGridHeader(x => x.Workbook32KManufacturerId),
                this.MakeGridHeader(x => x.PictureBook16KCount),
                this.MakeGridHeader(x => x.PictureBook16KPrice),
                this.MakeGridHeader(x => x.PictureBook16KManufacturerId),
                this.MakeGridHeader(x => x.PictureBook32KCount),
                this.MakeGridHeader(x => x.PictureBook32KPrice),
                this.MakeGridHeader(x => x.PictureBook32KManufacturerId),
                this.MakeGridHeader(x => x.PictureBookA4Count),
                this.MakeGridHeader(x => x.PictureBookA4KPrice),
                this.MakeGridHeader(x => x.PictureBookA4KManufacturerId),
                this.MakeGridHeader(x => x.LargeCharacterBookCount),
                this.MakeGridHeader(x => x.LargeCharacterPrice),
                this.MakeGridHeader(x => x.LargeCharacterManufacturerIds),
                this.MakeGridHeader(x => x.Mark),
                this.MakeGridHeader(x => x.DeliveryTime),
                this.MakeGridHeader(x => x.Chunqiuji),
                this.MakeGridHeader(x => x.IsOver),
                this.MakeGridHeaderAction(width: 200)
            };
        }
        public override IOrderedQueryable<OrderProduction_View> GetSearchQuery()
        {
            var query = DC.Set<OrderProduction>()
                .Select(x => new OrderProduction_View
                {
                    ID = x.ID,
                    Title_view = x.Oder.Title,
                    Workbook16KCount = x.Workbook16KCount,
                    Workbook16KPrice = x.Workbook16KPrice,
                    Workbook16KManufacturerId = x.Workbook16KManufacturerId,
                    Workbook32KCount = x.Workbook32KCount,
                    Workbook32KPrice = x.Workbook32KPrice,
                    Workbook32KManufacturerId = x.Workbook32KManufacturerId,
                    PictureBook16KCount = x.PictureBook16KCount,
                    PictureBook16KPrice = x.PictureBook16KPrice,
                    PictureBook16KManufacturerId = x.PictureBook16KManufacturerId,
                    PictureBook32KCount = x.PictureBook32KCount,
                    PictureBook32KPrice = x.PictureBook32KPrice,
                    PictureBook32KManufacturerId = x.PictureBook32KManufacturerId,
                    PictureBookA4Count = x.PictureBookA4Count,
                    PictureBookA4KPrice = x.PictureBookA4KPrice,
                    PictureBookA4KManufacturerId = x.PictureBookA4KManufacturerId,
                    LargeCharacterBookCount = x.LargeCharacterBookCount,
                    LargeCharacterPrice = x.LargeCharacterPrice,
                    LargeCharacterManufacturerIds = x.LargeCharacterManufacturerIds,
                    Mark = x.Mark,
                    DeliveryTime = x.DeliveryTime,
                    Chunqiuji = x.Chunqiuji,
                    IsOver = x.IsOver,
                })
                .OrderBy(x => x.ID);
            return query;
        }
    }
    public class OrderProduction_View : OrderProduction{
        [Display(Name = "项目名称")]
        public String Title_view { get; set; }
    }
}
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionSearcher.cs
New file
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
namespace cy_scdz.ViewModel.Order.OrderProductionVMs
{
    public partial class OrderProductionSearcher : BaseSearcher
    {
        protected override void InitVM()
        {
        }
    }
}
cy_scdz.ViewModel/Order/OrderProductionVMs/OrderProductionVM.cs
New file
@@ -0,0 +1,236 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Oder;
using cy_scdz.Model.Set;
using Microsoft.EntityFrameworkCore;
using NPOI.SS.Formula.Functions;
namespace cy_scdz.ViewModel.Order.OrderProductionVMs
{
    public partial class OrderProductionVM : BaseCRUDVM<OrderProduction>
    {
        /// <summary>
        /// 供货学期
        /// </summary>
        public List<ComboSelectListItem> AllSemesters { get; set; }
        /// <summary>
        /// 供应商
        /// </summary>
        public List<ComboSelectListItem> AllSuppliers { get; set; }
        /// <summary>
        /// 订单类别
        /// </summary>
        public List<ComboSelectListItem> AllBidTypes { get; set; }
        /// <summary>
        /// 封面纸张
        /// </summary>
        public List<ComboSelectListItem> AllCoverPaperTypes { get; set; }
        /// <summary>
        /// 内页纸张
        /// </summary>
        public List<ComboSelectListItem> AllInnerPaperTypes { get; set; }
        /// <summary>
        /// 内页颜色
        /// </summary>
        public List<ComboSelectListItem> AllColorTypes { get; set; }
        /// <summary>
        /// 装订方式
        /// </summary>
        public List<ComboSelectListItem> AllBindingTypes { get; set; }
        /// <summary>
        /// 印刷厂
        /// </summary>
        public List<ComboSelectListItem> AllManufacturers { get; set; }
        /// <summary>
        /// 页码
        /// </summary>
        public List<ComboSelectListItem> AllInnerPaperCodes { get; set; }
        public List<ComboSelectListItem> AllOders { get; set; }
        /// <summary>
        /// 当前学期
        /// </summary>
        [Display(Name ="当前学期")]
        public string Delivery { get;set; }
        /// <summary>
        /// 订单类型
        /// </summary>
        [Display(Name ="订单类型")]
        public string BidType { get;set; }
        /// <summary>
        /// 学期总数
        /// </summary>
        [Display(Name = "学期总数")]
        public string Semester { get;set; }
        /// <summary>
        /// 中标供应商
        /// </summary>
        [Display(Name = "中标供应商")]
        public string Supplier { get;set; }
        /// <summary>
        /// 作业本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        public string WorkbookCoverPaperType { get;set; }
        /// <summary>
        /// 作业本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        public string WorkbookInnerPaperTyp { get; set; }
        /// <summary>
        /// 作业本内页页码
        /// </summary>
        [Display(Name = "内页页码")]
        public string WorkbookInnerPageCode { get; set; }
        /// <summary>
        /// 作业本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        public string WorkbookColorType { get; set; }
        /// <summary>
        /// 作业本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        public string WorkbookBindingType { get; set; }
        /// <summary>
        /// 图画本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        public string PictureBookCoverPaperType { get; set; }
        /// <summary>
        /// 图画本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        public string PictureBookInnerPaperTyp { get; set; }
        /// <summary>
        /// 图画本内页页码
        /// </summary>
        [Display(Name = "内页页码")]
        public string PictureBookInnerPageCode { get; set; }
        /// <summary>
        /// 图画本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        public string PictureBookColorType { get; set; }
        /// <summary>
        /// 图画本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        public string PictureBookBindingType { get; set; }
        /// <summary>
        /// 大字本封面纸张
        /// </summary>
        [Display(Name = "封面纸张")]
        public string LargeCharacterBookCoverPaperType { get; set; }
        /// <summary>
        /// 大字本内页纸张
        /// </summary>
        [Display(Name = "内页纸张")]
        public string LargeCharacterBookInnerPaperTyp { get; set; }
        /// <summary>
        /// 大字本内页页码
        /// </summary>
        [Display(Name = "内页页码")]
        public string LargeCharacterBookInnerPageCode { get; set; }
        /// <summary>
        /// 大字本内页颜色
        /// </summary>
        [Display(Name = "内页颜色")]
        public string LargeCharacterBookColorType { get; set; }
        /// <summary>
        /// 大字本装订方式
        /// </summary>
        [Display(Name = "装订方式")]
        public string LargeCharacterBookBindingType { get; set; }
        public OrderProductionVM()
        {
            SetInclude(x => x.Oder);
            SetInclude(x => x.Oder.Semester);
            SetInclude(x => x.Oder.Supplier);
            SetInclude(x => x.Oder.BidType);
            SetInclude(x => x.Oder.WorkbookCoverPaperType);
            SetInclude(x => x.Oder.WorkbookInnerPaperType);
            SetInclude(x => x.Oder.WorkbookColorType);
            SetInclude(x => x.Oder.WorkbookBindingType);
            SetInclude(x => x.Oder.PictureBookCoverPaperType);
            SetInclude(x => x.Oder.PictureBookInnerPaperType);
            SetInclude(x => x.Oder.PictureBookColorType);
            SetInclude(x => x.Oder.PictureBookBindingType);
            SetInclude(x => x.Oder.LargeCharacterBookCoverPaperType);
            SetInclude(x => x.Oder.LargeCharacterBookInnerPaperType);
            SetInclude(x => x.Oder.LargeCharacterBookColorType);
            SetInclude(x => x.Oder.LargeCharacterBookBindingType);
            SetInclude(x => x.Oder.OrderReceivablesStatus);
            SetInclude(x => x.Oder.Sures);
            SetInclude(x => x.Oder.AdvancePayments);
        }
        protected override void InitVM()
        {
            AllOders = DC.Set<OrderInfo>().GetSelectListItems(Wtm, y => y.Title);
            AllSemesters = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "ghxq").GetSelectListItems(Wtm, y => y.Name);
            AllSuppliers = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "zbgys").GetSelectListItems(Wtm, y => y.Name);
            AllBidTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "ddlb").GetSelectListItems(Wtm, y => y.Name);
            AllCoverPaperTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "fmzz").GetSelectListItems(Wtm, y => y.Name);
            AllInnerPaperTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyzz").GetSelectListItems(Wtm, y => y.Name);
            AllColorTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyys").GetSelectListItems(Wtm, y => y.Name);
            AllBindingTypes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "zdfs").GetSelectListItems(Wtm, y => y.Name);
            AllManufacturers = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "yscs").GetSelectListItems(Wtm, y => y.Name);
            AllInnerPaperCodes = DC.Set<Dictionary>().Include(x => x.Parent).Where(x => x.Parent.Key == "nyym").GetSelectListItems(Wtm, y => y.Name);
            if(!string.IsNullOrEmpty( Entity.Oder.Title))
            {
                Delivery= Entity.DeliveryTime.ToString("yyyy")+"年 "+Entity.Chunqiuji.GetEnumDisplayName();
                Semester = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.SemesterId).Select(x => x.Name).FirstOrDefault();
                Supplier = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.SupplierId).Select(x => x.Name).FirstOrDefault();
                BidType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.BidTypeId).Select(x => x.Name).FirstOrDefault();
                //WorkbookCoverPaperType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.WorkbookCoverPaperTypeId).Select(x => x.Name).FirstOrDefault();
                //WorkbookCoverPaperType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.WorkbookCoverPaperTypeId).Select(x => x.Name).FirstOrDefault();
                //WorkbookCoverPaperType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.WorkbookCoverPaperTypeId).Select(x => x.Name).FirstOrDefault();
                //WorkbookCoverPaperType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.WorkbookCoverPaperTypeId).Select(x => x.Name).FirstOrDefault();
                //WorkbookCoverPaperType = DC.Set<Dictionary>().Where(x => x.ID == Entity.Oder.WorkbookCoverPaperTypeId).Select(x => x.Name).FirstOrDefault();
            }
        }
        public override void DoAdd()
        {
            base.DoAdd();
        }
        public override void DoEdit(bool updateAllFields = false)
        {
            base.DoEdit(updateAllFields);
        }
        public override void DoDelete()
        {
            base.DoDelete();
        }
    }
}
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingBatchVM.cs
New file
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Set;
namespace cy_scdz.ViewModel.Setting.PriceSettingVMs
{
    public partial class PriceSettingBatchVM : BaseBatchVM<PriceSetting, PriceSetting_BatchEdit>
    {
        public PriceSettingBatchVM()
        {
            ListVM = new PriceSettingListVM();
            LinkedVM = new PriceSetting_BatchEdit();
        }
    }
    /// <summary>
    /// Class to define batch edit fields
    /// </summary>
    public class PriceSetting_BatchEdit : BaseVM
    {
        protected override void InitVM()
        {
        }
    }
}
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingImportVM.cs
New file
@@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Set;
namespace cy_scdz.ViewModel.Setting.PriceSettingVMs
{
    public partial class PriceSettingTemplateVM : BaseTemplateVM
    {
        [Display(Name = "封面双胶纸")]
        public ExcelPropety Fmsjz_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Fmsjz);
        [Display(Name = "封面牛皮纸")]
        public ExcelPropety Fmnpz_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Fmnpz);
        [Display(Name = "内页本色纸")]
        public ExcelPropety Nybsz_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Nybsz);
        [Display(Name = "内页高白纸")]
        public ExcelPropety Nygbz_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Nygbz);
        [Display(Name = "骑马钉内页单色32页16开")]
        public ExcelPropety Qmd_Nyds_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyds_32_16k);
        [Display(Name = "骑马钉内页单色32页32开")]
        public ExcelPropety Qmd_Nyds_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyds_32_32k);
        [Display(Name = "骑马钉内页单色36-48页16开")]
        public ExcelPropety Qmd_Nyds_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyds_36_16k);
        [Display(Name = "骑马钉内页单色36-48页16开")]
        public ExcelPropety Qmd_Nyds_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyds_36_32k);
        [Display(Name = "骑马钉内页双色32页16开")]
        public ExcelPropety Qmd_Nyss_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyss_32_16k);
        [Display(Name = "骑马钉内页双色32页32开")]
        public ExcelPropety Qmd_Nyss_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyss_32_32k);
        [Display(Name = "骑马钉内页双色36-48页16开")]
        public ExcelPropety Qmd_Nyss_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyss_36_16k);
        [Display(Name = "骑马钉内页双色36-48页32开")]
        public ExcelPropety Qmd_Nyss_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nyss_36_32k);
        [Display(Name = "骑马钉内页四色32页16开")]
        public ExcelPropety Qmd_Nysis_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nysis_32_16k);
        [Display(Name = "骑马钉内页四色32页32开")]
        public ExcelPropety Qmd_Nysis_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nysis_32_32k);
        [Display(Name = "骑马钉内页四色36-48页16开")]
        public ExcelPropety Qmd_Nysis_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nysis_36_16k);
        [Display(Name = "骑马钉内页四色36-48页32开")]
        public ExcelPropety Qmd_Nysis_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Qmd_Nysis_36_32k);
        [Display(Name = "胶包内页单色32页16开")]
        public ExcelPropety Jb_Nyds_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyds_32_16k);
        [Display(Name = "胶包内页单色32页32开")]
        public ExcelPropety Jb_Nyds_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyds_32_32k);
        [Display(Name = "胶包内页单色36-48页16开")]
        public ExcelPropety Jb_Nyds_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyds_36_16k);
        [Display(Name = "胶包内页单色36-48页16开")]
        public ExcelPropety Jb_Nyds_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyds_36_32k);
        [Display(Name = "胶包内页双色32页16开")]
        public ExcelPropety Jb_Nyss_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyss_32_16k);
        [Display(Name = "胶包内页双色32页32开")]
        public ExcelPropety Jb_Nyss_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyss_32_32k);
        [Display(Name = "胶包内页双色36-48页16开")]
        public ExcelPropety Jb_Nyss_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyss_36_16k);
        [Display(Name = "胶包内页双色36-48页32开")]
        public ExcelPropety Jb_Nyss_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nyss_36_32k);
        [Display(Name = "胶包内页四色32页16开")]
        public ExcelPropety Jb_Nysis_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nysis_32_16k);
        [Display(Name = "胶包内页四色32页32开")]
        public ExcelPropety Jb_Nysis_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nysis_32_32k);
        [Display(Name = "胶包内页四色36-48页16开")]
        public ExcelPropety Jb_Nysis_36_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nysis_36_16k);
        [Display(Name = "胶包内页四色36-48页32开")]
        public ExcelPropety Jb_Nysis_36_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Nysis_36_32k);
        [Display(Name = "胶包单色32张16开")]
        public ExcelPropety Jb_Ds_32_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Ds_32_16k);
        [Display(Name = "胶包单色32张32开")]
        public ExcelPropety Jb_Ds_32_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Jb_Ds_32_32k);
        [Display(Name = "裹背条16开")]
        public ExcelPropety Gbt_16k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Gbt_16k);
        [Display(Name = "裹背条32开")]
        public ExcelPropety Gbt_32k_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Gbt_32k);
        [Display(Name = "业务费用竞争")]
        public ExcelPropety Ywfy_Jz_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Ywfy_Jz);
        [Display(Name = "业务费用技术")]
        public ExcelPropety Ywfy_Zs_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Ywfy_Zs);
        [Display(Name = "物流费用")]
        public ExcelPropety Wlfy_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Wlfy);
        [Display(Name = "税费")]
        public ExcelPropety Sf_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Sf);
        [Display(Name = "纸张消耗")]
        public ExcelPropety Zzxh_Excel = ExcelPropety.CreateProperty<PriceSetting>(x => x.Zzxh);
        protected override void InitVM()
        {
        }
    }
    public class PriceSettingImportVM : BaseImportVM<PriceSettingTemplateVM, PriceSetting>
    {
    }
}
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingListVM.cs
New file
@@ -0,0 +1,129 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using cy_scdz.Model.Set;
namespace cy_scdz.ViewModel.Setting.PriceSettingVMs
{
    public partial class PriceSettingListVM : BasePagedListVM<PriceSetting_View, PriceSettingSearcher>
    {
        protected override List<GridAction> InitGridAction()
        {
            return new List<GridAction>
            {
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.Create, Localizer["Sys.Create"],"Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.BatchEdit, Localizer["Sys.BatchEdit"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.BatchDelete, Localizer["Sys.BatchDelete"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.Import, Localizer["Sys.Import"], "Setting", dialogWidth: 800),
                this.MakeStandardAction("PriceSetting", GridActionStandardTypesEnum.ExportExcel, Localizer["Sys.Export"], "Setting"),
            };
        }
        protected override IEnumerable<IGridColumn<PriceSetting_View>> InitGridHeader()
        {
            return new List<GridColumn<PriceSetting_View>>{
                this.MakeGridHeader(x => x.Fmsjz),
                this.MakeGridHeader(x => x.Fmnpz),
                this.MakeGridHeader(x => x.Nybsz),
                this.MakeGridHeader(x => x.Nygbz),
                this.MakeGridHeader(x => x.Qmd_Nyds_32_16k),
                this.MakeGridHeader(x => x.Qmd_Nyds_32_32k),
                this.MakeGridHeader(x => x.Qmd_Nyds_36_16k),
                this.MakeGridHeader(x => x.Qmd_Nyds_36_32k),
                this.MakeGridHeader(x => x.Qmd_Nyss_32_16k),
                this.MakeGridHeader(x => x.Qmd_Nyss_32_32k),
                this.MakeGridHeader(x => x.Qmd_Nyss_36_16k),
                this.MakeGridHeader(x => x.Qmd_Nyss_36_32k),
                this.MakeGridHeader(x => x.Qmd_Nysis_32_16k),
                this.MakeGridHeader(x => x.Qmd_Nysis_32_32k),
                this.MakeGridHeader(x => x.Qmd_Nysis_36_16k),
                this.MakeGridHeader(x => x.Qmd_Nysis_36_32k),
                this.MakeGridHeader(x => x.Jb_Nyds_32_16k),
                this.MakeGridHeader(x => x.Jb_Nyds_32_32k),
                this.MakeGridHeader(x => x.Jb_Nyds_36_16k),
                this.MakeGridHeader(x => x.Jb_Nyds_36_32k),
                this.MakeGridHeader(x => x.Jb_Nyss_32_16k),
                this.MakeGridHeader(x => x.Jb_Nyss_32_32k),
                this.MakeGridHeader(x => x.Jb_Nyss_36_16k),
                this.MakeGridHeader(x => x.Jb_Nyss_36_32k),
                this.MakeGridHeader(x => x.Jb_Nysis_32_16k),
                this.MakeGridHeader(x => x.Jb_Nysis_32_32k),
                this.MakeGridHeader(x => x.Jb_Nysis_36_16k),
                this.MakeGridHeader(x => x.Jb_Nysis_36_32k),
                this.MakeGridHeader(x => x.Jb_Ds_32_16k),
                this.MakeGridHeader(x => x.Jb_Ds_32_32k),
                this.MakeGridHeader(x => x.Gbt_16k),
                this.MakeGridHeader(x => x.Gbt_32k),
                this.MakeGridHeader(x => x.Ywfy_Jz),
                this.MakeGridHeader(x => x.Ywfy_Zs),
                this.MakeGridHeader(x => x.Wlfy),
                this.MakeGridHeader(x => x.Sf),
                this.MakeGridHeader(x => x.Zzxh),
                this.MakeGridHeaderAction(width: 200)
            };
        }
        public override IOrderedQueryable<PriceSetting_View> GetSearchQuery()
        {
            var query = DC.Set<PriceSetting>()
                .Select(x => new PriceSetting_View
                {
                    ID = x.ID,
                    Fmsjz = x.Fmsjz,
                    Fmnpz = x.Fmnpz,
                    Nybsz = x.Nybsz,
                    Nygbz = x.Nygbz,
                    Qmd_Nyds_32_16k = x.Qmd_Nyds_32_16k,
                    Qmd_Nyds_32_32k = x.Qmd_Nyds_32_32k,
                    Qmd_Nyds_36_16k = x.Qmd_Nyds_36_16k,
                    Qmd_Nyds_36_32k = x.Qmd_Nyds_36_32k,
                    Qmd_Nyss_32_16k = x.Qmd_Nyss_32_16k,
                    Qmd_Nyss_32_32k = x.Qmd_Nyss_32_32k,
                    Qmd_Nyss_36_16k = x.Qmd_Nyss_36_16k,
                    Qmd_Nyss_36_32k = x.Qmd_Nyss_36_32k,
                    Qmd_Nysis_32_16k = x.Qmd_Nysis_32_16k,
                    Qmd_Nysis_32_32k = x.Qmd_Nysis_32_32k,
                    Qmd_Nysis_36_16k = x.Qmd_Nysis_36_16k,
                    Qmd_Nysis_36_32k = x.Qmd_Nysis_36_32k,
                    Jb_Nyds_32_16k = x.Jb_Nyds_32_16k,
                    Jb_Nyds_32_32k = x.Jb_Nyds_32_32k,
                    Jb_Nyds_36_16k = x.Jb_Nyds_36_16k,
                    Jb_Nyds_36_32k = x.Jb_Nyds_36_32k,
                    Jb_Nyss_32_16k = x.Jb_Nyss_32_16k,
                    Jb_Nyss_32_32k = x.Jb_Nyss_32_32k,
                    Jb_Nyss_36_16k = x.Jb_Nyss_36_16k,
                    Jb_Nyss_36_32k = x.Jb_Nyss_36_32k,
                    Jb_Nysis_32_16k = x.Jb_Nysis_32_16k,
                    Jb_Nysis_32_32k = x.Jb_Nysis_32_32k,
                    Jb_Nysis_36_16k = x.Jb_Nysis_36_16k,
                    Jb_Nysis_36_32k = x.Jb_Nysis_36_32k,
                    Jb_Ds_32_16k = x.Jb_Ds_32_16k,
                    Jb_Ds_32_32k = x.Jb_Ds_32_32k,
                    Gbt_16k = x.Gbt_16k,
                    Gbt_32k = x.Gbt_32k,
                    Ywfy_Jz = x.Ywfy_Jz,
                    Ywfy_Zs = x.Ywfy_Zs,
                    Wlfy = x.Wlfy,
                    Sf = x.Sf,
                    Zzxh = x.Zzxh,
                })
                .OrderBy(x => x.ID);
            return query;
        }
    }
    public class PriceSetting_View : PriceSetting{
    }
}
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingSearcher.cs
New file
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Set;
namespace cy_scdz.ViewModel.Setting.PriceSettingVMs
{
    public partial class PriceSettingSearcher : BaseSearcher
    {
        protected override void InitVM()
        {
        }
    }
}
cy_scdz.ViewModel/Setting/PriceSettingVMs/PriceSettingVM.cs
New file
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.Model.Set;
using Microsoft.EntityFrameworkCore;
namespace cy_scdz.ViewModel.Setting.PriceSettingVMs
{
    public partial class PriceSettingVM : BaseCRUDVM<PriceSetting>
    {
        public PriceSettingVM()
        {
        }
        protected override async void InitVM()
        {
          Entity =  DC.Set<PriceSetting>().FirstOrDefault();
            if(Entity == null)
            {
                var  fist= new PriceSetting();
                DC.Set<PriceSetting>().Add(fist);
              await  DC.SaveChangesAsync();
                Entity = DC.Set<PriceSetting>().FirstOrDefault();
            }
        }
        public override void DoAdd()
        {
            base.DoAdd();
        }
        public override void DoEdit(bool updateAllFields = false)
        {
            base.DoEdit(updateAllFields);
        }
        public override void DoDelete()
        {
            base.DoDelete();
        }
    }
}
cy_scdz.ViewModel/dictionary/DictionaryVMs/DictionaryVM.cs
@@ -30,7 +30,7 @@
        }
        public override DuplicatedInfo<Dictionary> SetDuplicatedCheck()
        {
            var rv = CreateFieldsInfo(SimpleField(x => x.Name));
            var rv = CreateFieldsInfo(SimpleField(x => x.Name), SimpleField(x => x.ParentId));
            rv.AddGroup(SimpleField(x => x.Key));
            return rv;
cy_scdz/Areas/BidOrder/Controllers/OrderInfoController.cs
New file
@@ -0,0 +1,234 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Mvc;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.ViewModel.BidOrder.OrderInfoVMs;
using cy_scdz.ViewModel._Admin.FrameworkUserVMs;
using cy_scdz.Model.Oder;
using cy_scdz.ViewModel.Order.OrderProductionVMs;
namespace cy_scdz.Controllers
{
    [Area("BidOrder")]
    [ActionDescription("项目管理")]
    public partial class OrderInfoController : BaseController
    {
        #region Search
        [ActionDescription("Sys.Search")]
        public ActionResult Index()
        {
            var vm = Wtm.CreateVM<OrderInfoListVM>();
            return PartialView(vm);
        }
        [ActionDescription("Sys.Search")]
        [HttpPost]
        public string Search(OrderInfoSearcher searcher)
        {
            var vm = Wtm.CreateVM<OrderInfoListVM>(passInit: true);
            if (ModelState.IsValid)
            {
                vm.Searcher = searcher;
                return vm.GetJson(false);
            }
            else
            {
                return vm.GetError();
            }
        }
        #endregion
        #region Create
        [ActionDescription("Sys.Create")]
        public ActionResult Create()
        {
            var vm = Wtm.CreateVM<OrderInfoVM>();
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.Create")]
        public ActionResult Create(OrderInfoVM vm)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                vm.DoAdd();
                if (!ModelState.IsValid)
                {
                    vm.DoReInit();
                    return PartialView(vm);
                }
                else
                {
                    return FFResult().CloseDialog().RefreshGrid();
                }
            }
        }
        #endregion
        #region 完成订单
        /// <summary>
        /// 完成生产单
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult CompleteProduction(string id)
        {
            var vm = Wtm.CreateVM<OrderProductionVM>(id);
            return PartialView(vm);
        }
        #endregion
        #region Edit
        [ActionDescription("Sys.Edit")]
        public ActionResult Edit(string id)
        {
            var vm = Wtm.CreateVM<OrderInfoVM>(id);
            return PartialView(vm);
        }
        [ActionDescription("Sys.Edit")]
        [HttpPost]
        [ValidateFormItemOnly]
        public ActionResult Edit(OrderInfoVM vm)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                vm.DoEdit();
                if (!ModelState.IsValid)
                {
                    vm.DoReInit();
                    return PartialView(vm);
                }
                else
                {
                    return FFResult().CloseDialog().RefreshGridRow(vm.Entity.ID);
                }
            }
        }
        #endregion
        #region Delete
        [ActionDescription("Sys.Delete")]
        public ActionResult Delete(string id)
        {
            var vm = Wtm.CreateVM<OrderInfoVM>(id);
            return PartialView(vm);
        }
        [ActionDescription("Sys.Delete")]
        [HttpPost]
        public ActionResult Delete(string id, IFormCollection nouse)
        {
            var vm = Wtm.CreateVM<OrderInfoVM>(id);
            vm.DoDelete();
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid();
            }
        }
        #endregion
        #region Details
        [ActionDescription("Sys.Details")]
        public ActionResult Details(string id)
        {
            var vm = Wtm.CreateVM<OrderInfoVM>(id);
            return PartialView(vm);
        }
        #endregion
        #region BatchEdit
        [HttpPost]
        [ActionDescription("Sys.BatchEdit")]
        public ActionResult BatchEdit(string[] IDs)
        {
            var vm = Wtm.CreateVM<OrderInfoBatchVM>(Ids: IDs);
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.BatchEdit")]
        public ActionResult DoBatchEdit(OrderInfoBatchVM vm, IFormCollection nouse)
        {
            if (!ModelState.IsValid || !vm.DoBatchEdit())
            {
                return PartialView("BatchEdit",vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchEditSuccess", vm.Ids.Length]);
            }
        }
        #endregion
        #region BatchDelete
        [HttpPost]
        [ActionDescription("Sys.BatchDelete")]
        public ActionResult BatchDelete(string[] IDs)
        {
            var vm = Wtm.CreateVM<OrderInfoBatchVM>(Ids: IDs);
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.BatchDelete")]
        public ActionResult DoBatchDelete(OrderInfoBatchVM vm, IFormCollection nouse)
        {
            if (!ModelState.IsValid || !vm.DoBatchDelete())
            {
                return PartialView("BatchDelete",vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchDeleteSuccess", vm.Ids.Length]);
            }
        }
        #endregion
        #region Import
        [ActionDescription("Sys.Import")]
        public ActionResult Import()
        {
            var vm = Wtm.CreateVM<OrderInfoImportVM>();
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.Import")]
        public ActionResult Import(OrderInfoImportVM vm, IFormCollection nouse)
        {
            if (vm.ErrorListVM.EntityList.Count > 0 || !vm.BatchSaveData())
            {
                return PartialView(vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.ImportSuccess", vm.EntityList.Count.ToString()]);
            }
        }
        #endregion
        [ActionDescription("Sys.Export")]
        [HttpPost]
        public IActionResult ExportExcel(OrderInfoListVM vm)
        {
            return vm.GetExportData();
        }
    }
}
cy_scdz/Areas/BidOrder/Views/OrderInfo/BatchDelete.cshtml
New file
@@ -0,0 +1,12 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.BatchDeleteConfirm"]</wt:quote>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/BatchEdit.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div style="margin-bottom:10px">@Localizer["Sys.BatchEditConfirm"] </div>
<wt:row items-per-row="ItemsPerRowEnum.Two">
</wt:row>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/CompleteProduction.cshtml
New file
@@ -0,0 +1,124 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div class="layui-card this-card ">
        <div class="layui-card-header">基本信息</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.One">
                <wt:display field="Entity.Oder.Title"  />
            </wt:row>
            <wt:row items-per-row="ItemsPerRowEnum.Four">
                <wt:display field="Entity.Oder.WinBidTime" />
                <wt:display field="Delivery"  />
                <wt:display field="Semester"  />
                <wt:display field="Supplier"  />
                <wt:display field="Entity.Oder.BidMoney" padding-text="元"  />
                <wt:display field="BidType" items="AllBidTypes" enable-search="false"  />
                <wt:display field="Entity.Oder.TenderAgentFee" padding-text="元"  />
            </wt:row>
        </div>
    </div>
    <div class="layui-card this-card ">
        <div class="layui-card-header">印刷要求</div>
        <div class="layui-card-body">
            <p>作业本</p>
            <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:display field="Entity.Oder.WorkbookBindingType.Name" label-text="封面纸张"/>
                <wt:display field="Entity.Oder.WorkbookInnerPageCode.Name"  label-text="内页纸张" />
                <wt:display field="Entity.Oder.WorkbookInnerPageCode.Name" label-text="页数" />
                <wt:display field="Entity.Oder.WorkbookColorType.Name" label-text="内页颜色" />
                <wt:display field="Entity.Oder.WorkbookBindingType.Name" label-text="装订方式" />
            </wt:row>
            <p>图画本</p>
            <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:display field="Entity.Oder.PictureBookCoverPaperType.Name" label-text="封面纸张" />
                <wt:display field="Entity.Oder.PictureBookInnerPaperType.Name" label-text="内页纸张" />
                <wt:display field="Entity.Oder.PictureBookInnerPageCode.Name" label-text="页数" />
                <wt:display field="Entity.Oder.PictureBookColorType.Name" label-text="内页颜色" />
                <wt:display field="Entity.Oder.PictureBookBindingType.Name" label-text="装订方式" />
            </wt:row>
            <p>大字本</p>
            <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:display field="Entity.Oder.LargeCharacterBookCoverPaperType.Name" label-text="封面纸张" />
                <wt:display field="Entity.Oder.LargeCharacterBookInnerPaperType.Name" label-text="内页纸张" />
                <wt:display field="Entity.Oder.LargeCharacterBookInnerPageCode.Name" label-text="页数" />
                <wt:display field="Entity.Oder.LargeCharacterBookColorType.Name" label-text="内页颜色" />
                <wt:display field="Entity.Oder.LargeCharacterBookBindingType.Name" label-text="装订方式" />
            </wt:row>
        </div>
    </div>
    <div class="layui-card this-card ">
        <div class="layui-card-header">订单数量</div>
        <div class="layui-card-body">
            <p>作业本</p>
            <wt:row items-per-row="ItemsPerRowEnum.Three">
                <wt:textbox field="Entity.Workbook16KCount" label-width="100"/>
                <wt:textbox field="Entity.Workbook16KPrice" label-width="100" />
                <wt:textbox field="Entity.Workbook16KManufacturerId" label-width="100" />
                <wt:textbox field="Entity.Workbook32KCount" label-width="100" />
                <wt:textbox field="Entity.Workbook32KPrice" label-width="100" />
                <wt:textbox field="Entity.Workbook32KManufacturerId" label-width="100" />
                <wt:textbox field="Entity.PictureBook16KCount" label-width="100" />
                <wt:textbox field="Entity.PictureBook16KPrice" label-width="100" />
                <wt:textbox field="Entity.PictureBook16KManufacturerId" label-width="100" />
                <wt:textbox field="Entity.PictureBook32KCount" label-width="100" />
                <wt:textbox field="Entity.PictureBook32KPrice" label-width="100" />
                <wt:textbox field="Entity.PictureBook32KManufacturerId" label-width="100" />
                <wt:textbox field="Entity.PictureBookA4Count" label-width="100" />
                <wt:textbox field="Entity.PictureBookA4KPrice" label-width="100" />
                <wt:textbox field="Entity.PictureBookA4KManufacturerId" label-width="100" />
                <wt:textbox field="Entity.LargeCharacterBookCount" label-width="100" />
                <wt:textbox field="Entity.LargeCharacterPrice" label-width="100" />
                <wt:textbox field="Entity.LargeCharacterManufacturerIds" label-width="100" />
            </wt:row>
        </div>
    </div>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
<style>
    .this-card {
        padding: 0px;
        margin: 5px;
        background-color: #f0f0f0;
        line-height: 12px;
    }
        .this-card .layui-input, .this-card .layui-select, .this-card .layui-textarea {
            height: 30px;
        }
        .this-card xm-select {
            min-height: 30px;
            line-height: 25px;
        }
        .this-card .layui-card-body {
            line-height: 12px;
            padding: 0px 11px;
        }
            .this-card .layui-card-body p {
                line-height: 12px;
                padding: 0px 11px;
            }
</style>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Create.cshtml
New file
@@ -0,0 +1,147 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div class="layui-card this-card ">
        <div class="layui-card-header">基本信息</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.One">
                <wt:textbox field="Entity.Title" />
            </wt:row>
            <wt:row items-per-row="ItemsPerRowEnum.Four">
                <wt:datetime field="Entity.WinBidTime" Type=Date />
                        <wt:datetime field="InitialDeliveryTime" Type=Year padding-text="年"  width="200"/>
                <wt:combobox field="Entity.Chunqiuji"  width="100" enable-search="false" hide-label="true"  />
                <wt:combobox field="Entity.SemesterId" items="AllSemesters" enable-search="false" default-value="2学期"/>
                <wt:combobox field="Entity.SupplierId" items="AllSuppliers" enable-search="false" />
                <wt:textbox field="Entity.BidMoney" padding-text="元" />
                <wt:combobox field="Entity.BidTypeId" items="AllBidTypes" enable-search="false" />
                <wt:textbox field="Entity.TenderAgentFee" padding-text="元"  />
            </wt:row>
     </div>
   </div>
   @*  <div class="layui-card this-card ">
        <div class="layui-card-header">收款情况</div>
        <div class="layui-card-body">
            @for (int i = 0; i <( Model.Entity.OrderReceivablesStatus?.Count == null ? 0 : Model.Entity.OrderReceivablesStatus?.Count); i++)
            {
                <p>第{i}学期</p>
                <wt:row items-per-row="ItemsPerRowEnum.Four">
                <wt:textbox field="Entity.OrderReceivablesStatus[i].Time"  />
                    <wt:textbox field="Entity.OrderReceivablesStatus[i].ReceivablesMoney" />
                </wt:row>
            }
        </div>
    </div> *@
    <div class="layui-card this-card ">
        <div class="layui-card-header">印刷要求</div>
        <div class="layui-card-body">
          <p>作业本</p>
          <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:combobox field="Entity.WorkbookCoverPaperTypeId" items="AllCoverPaperTypes"  enable-search="false"/>
                <wt:combobox field="Entity.WorkbookInnerPaperTypeId" items="AllInnerPaperTypes" enable-search="false" />
                <wt:combobox field="Entity.WorkbookInnerPageCodeId" items="AllInnerPaperCodes" enable-search="false" />
                <wt:combobox field="Entity.WorkbookColorTypeId" items="AllColorTypes" enable-search="false" />
                <wt:combobox field="Entity.WorkbookBindingTypeId" items="AllBindingTypes" enable-search="false" />
              </wt:row>
               <p>图画本</p>
          <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:combobox field="Entity.PictureBookCoverPaperTypeId" items="AllCoverPaperTypes" enable-search="false" />
                <wt:combobox field="Entity.PictureBookInnerPaperTypeId" items="AllInnerPaperTypes" enable-search="false" />
                <wt:combobox field="Entity.PictureBookInnerPageCodeId" items="AllInnerPaperCodes" enable-search="false" />
                <wt:combobox field="Entity.PictureBookColorTypeId" items="AllColorTypes" enable-search="false" />
                <wt:combobox field="Entity.PictureBookBindingTypeId" items="AllBindingTypes" enable-search="false" />
              </wt:row>
            <p>大字本</p>
            <wt:row items-per-row="ItemsPerRowEnum.Six">
                <wt:combobox field="Entity.LargeCharacterBookCoverPaperTypeId" items="AllCoverPaperTypes" enable-search="false" />
                <wt:combobox field="Entity.LargeCharacterBookInnerPaperTypeId" items="AllInnerPaperTypes" enable-search="false" />
                <wt:combobox field="Entity.LargeCharacterBookInnerPageCodeId" items="AllInnerPaperCodes" enable-search="false" />
                <wt:combobox field="Entity.LargeCharacterBookColorTypeId" items="AllColorTypes" enable-search="false" />
                <wt:combobox field="Entity.LargeCharacterBookBindingTypeId" items="AllBindingTypes" enable-search="false" />
            </wt:row>
        </div>
    </div>
@*     <div class="layui-card this-card ">
        <div class="layui-card-header">订单数量</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Three">
                <wt:textbox field="Entity.Workbook16KCount" padding-text="本" />
                <wt:textbox field="Entity.Workbook16KPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.Workbook16KManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
                <wt:textbox field="Entity.Workbook32KCount" padding-text="本" />
                <wt:textbox field="Entity.Workbook32KPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.Workbook32KManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
                <wt:textbox field="Entity.PictureBook16KCount" padding-text="本" />
                <wt:textbox field="Entity.PictureBook16KPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.PictureBook16KManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
                <wt:textbox field="Entity.PictureBook32KCount" padding-text="本" />
                <wt:textbox field="Entity.PictureBook32KPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.PictureBook32KManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
                <wt:textbox field="Entity.PictureBookA4Count" padding-text="本" />
                <wt:textbox field="Entity.PictureBookA4KPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.PictureBookA4KManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
                <wt:textbox field="Entity.LargeCharacterBookCount" padding-text="本" />
                <wt:textbox field="Entity.LargeCharacterPrice" label-text="中标单价" padding-text="元" />
                <wt:combobox field="Entity.LargeCharacterManufacturerId" items="AllManufacturers" label-text="生产厂商" enable-search="false" />
            </wt:row>
        </div>
    </div> *@
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
<style>
    .this-card {
        padding:0px;
        margin:5px;
        background-color: #f0f0f0;
        line-height: 12px;
    }
        .this-card .layui-input, .this-card .layui-select, .this-card .layui-textarea{
            height:30px;
        }
        .this-card xm-select{
            min-height:30px;
            line-height: 25px;
        }
        .this-card .layui-card-body {
        line-height: 12px;
        padding:0px 11px;
    }
             .this-card .layui-card-body p
            {
                line-height: 12px;
                padding: 0px 11px;
            }
</style>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Delete.cshtml
New file
@@ -0,0 +1,37 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.DeleteConfirm"]</wt:quote>
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Title" />
<wt:display field="Entity.WinBidTime" />
<wt:display field="Entity.InitialDeliveryTime" />
<wt:display field="Entity.Semester.Name" />
<wt:display field="Entity.BidMoney" />
<wt:display field="Entity.Supplier.Name" />
<wt:display field="Entity.BidType.Name" />
<wt:display field="Entity.TenderAgentFee" />
<wt:display field="Entity.WorkbookCoverPaperType.Name" />
<wt:display field="Entity.WorkbookInnerPaperType.Name" />
<wt:display field="Entity.WorkbookColorType.Name" />
<wt:display field="Entity.WorkbookBindingType.Name" />
<wt:display field="Entity.PictureBookCoverPaperType.Name" />
<wt:display field="Entity.PictureBookInnerPaperType.Name" />
<wt:display field="Entity.PictureBookColorType.Name" />
<wt:display field="Entity.PictureBookBindingType.Name" />
<wt:display field="Entity.LargeCharacterBookCoverPaperType.Name" />
<wt:display field="Entity.LargeCharacterBookInnerPaperType.Name" />
<wt:display field="Entity.LargeCharacterBookColorType.Name" />
<wt:display field="Entity.LargeCharacterBookBindingType.Name" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Details.cshtml
New file
@@ -0,0 +1,34 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Title" />
<wt:display field="Entity.WinBidTime" />
<wt:display field="Entity.InitialDeliveryTime" />
<wt:display field="Entity.Semester.Name" />
<wt:display field="Entity.BidMoney" />
<wt:display field="Entity.Supplier.Name" />
<wt:display field="Entity.BidType.Name" />
<wt:display field="Entity.TenderAgentFee" />
<wt:display field="Entity.WorkbookCoverPaperType.Name" />
<wt:display field="Entity.WorkbookInnerPaperType.Name" />
<wt:display field="Entity.WorkbookColorType.Name" />
<wt:display field="Entity.WorkbookBindingType.Name" />
<wt:display field="Entity.PictureBookCoverPaperType.Name" />
<wt:display field="Entity.PictureBookInnerPaperType.Name" />
<wt:display field="Entity.PictureBookColorType.Name" />
<wt:display field="Entity.PictureBookBindingType.Name" />
<wt:display field="Entity.LargeCharacterBookCoverPaperType.Name" />
<wt:display field="Entity.LargeCharacterBookInnerPaperType.Name" />
<wt:display field="Entity.LargeCharacterBookColorType.Name" />
<wt:display field="Entity.LargeCharacterBookBindingType.Name" />
</wt:row>
    <wt:row align="AlignEnum.Right">
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Edit.cshtml
New file
@@ -0,0 +1,36 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:textbox field="Entity.Title" />
<wt:datetime field="Entity.WinBidTime" />
<wt:datetime field="Entity.InitialDeliveryTime" />
<wt:combobox field="Entity.SemesterId" items="AllSemesters"/>
<wt:textbox field="Entity.BidMoney" />
<wt:combobox field="Entity.SupplierId" items="AllSuppliers"/>
<wt:combobox field="Entity.BidTypeId" items="AllBidTypes"/>
<wt:textbox field="Entity.TenderAgentFee" />
<wt:combobox field="Entity.WorkbookCoverPaperTypeId" items="AllCoverPaperTypes"/>
<wt:combobox field="Entity.WorkbookInnerPaperTypeId" items="AllInnerPaperTypes"/>
<wt:combobox field="Entity.WorkbookColorTypeId" items="AllColorTypes"/>
<wt:combobox field="Entity.WorkbookBindingTypeId" items="AllBindingTypes"/>
        <wt:combobox field="Entity.PictureBookCoverPaperTypeId" items="AllCoverPaperTypes" />
        <wt:combobox field="Entity.PictureBookInnerPaperTypeId" items="AllInnerPaperTypes" />
        <wt:combobox field="Entity.PictureBookColorTypeId" items="AllColorTypes" />
        <wt:combobox field="Entity.PictureBookBindingTypeId" items="AllBindingTypes" />
        <wt:combobox field="Entity.LargeCharacterBookCoverPaperTypeId" items="AllCoverPaperTypes" />
        <wt:combobox field="Entity.LargeCharacterBookInnerPaperTypeId" items="AllInnerPaperTypes" />
        <wt:combobox field="Entity.LargeCharacterBookColorTypeId" items="AllColorTypes" />
        <wt:combobox field="Entity.LargeCharacterBookBindingTypeId" items="AllBindingTypes" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Import.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoImportVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:row align="AlignEnum.Right">
        <wt:downloadTemplateButton vm="@Model" />
    </wt:row>
    <wt:upload field="UploadFileId" label-text="@Model.Localizer["Sys.UploadTemplate"]" upload-type="ExcelFile" />
    <wt:grid vm="ErrorListVM" use-local-data="true" hidden-checkbox="true" hidden-grid-index="true" hidden-panel="true"  height="300"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/BidOrder/Views/OrderInfo/Index.cshtml
New file
@@ -0,0 +1,18 @@
@model cy_scdz.ViewModel.BidOrder.OrderInfoVMs.OrderInfoListVM
@inject IStringLocalizer<Program> Localizer;
<wt:searchpanel vm="@Model" reset-btn="true">
<wt:row items-per-row="ItemsPerRowEnum.Three">
<wt:textbox field="Searcher.Title" />
<wt:datetime field="Searcher.WinBidTime" range="true" />
<wt:combobox field="Searcher.SupplierId" items="Searcher.AllSuppliers" empty-text="@Localizer["Sys.All"]" />
<wt:combobox field="Searcher.BidTypeId" items="Searcher.AllBidTypes" empty-text="@Localizer["Sys.All"]" />
</wt:row>
</wt:searchpanel>
<wt:grid vm="@Model" url="/BidOrder/OrderInfo/Search" multi-line hidden-checkbox hidden-grid-index />
<style>
</style>
cy_scdz/Areas/Order/Controllers/OrderProductionController.cs
New file
@@ -0,0 +1,219 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Mvc;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.ViewModel.Order.OrderProductionVMs;
namespace cy_scdz.Controllers
{
    [Area("Order")]
    [ActionDescription("生产数量")]
    public partial class OrderProductionController : BaseController
    {
        #region Search
        [ActionDescription("Sys.Search")]
        public ActionResult Index()
        {
            var vm = Wtm.CreateVM<OrderProductionListVM>();
            return PartialView(vm);
        }
        [ActionDescription("Sys.Search")]
        [HttpPost]
        public string Search(OrderProductionSearcher searcher)
        {
            var vm = Wtm.CreateVM<OrderProductionListVM>(passInit: true);
            if (ModelState.IsValid)
            {
                vm.Searcher = searcher;
                return vm.GetJson(false);
            }
            else
            {
                return vm.GetError();
            }
        }
        #endregion
        #region Create
        [ActionDescription("Sys.Create")]
        public ActionResult Create()
        {
            var vm = Wtm.CreateVM<OrderProductionVM>();
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.Create")]
        public ActionResult Create(OrderProductionVM vm)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                vm.DoAdd();
                if (!ModelState.IsValid)
                {
                    vm.DoReInit();
                    return PartialView(vm);
                }
                else
                {
                    return FFResult().CloseDialog().RefreshGrid();
                }
            }
        }
        #endregion
        #region Edit
        [ActionDescription("Sys.Edit")]
        public ActionResult Edit(string id)
        {
            var vm = Wtm.CreateVM<OrderProductionVM>(id);
            return PartialView(vm);
        }
        [ActionDescription("Sys.Edit")]
        [HttpPost]
        [ValidateFormItemOnly]
        public ActionResult Edit(OrderProductionVM vm)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                vm.DoEdit();
                if (!ModelState.IsValid)
                {
                    vm.DoReInit();
                    return PartialView(vm);
                }
                else
                {
                    return FFResult().CloseDialog().RefreshGridRow(vm.Entity.ID);
                }
            }
        }
        #endregion
        #region Delete
        [ActionDescription("Sys.Delete")]
        public ActionResult Delete(string id)
        {
            var vm = Wtm.CreateVM<OrderProductionVM>(id);
            return PartialView(vm);
        }
        [ActionDescription("Sys.Delete")]
        [HttpPost]
        public ActionResult Delete(string id, IFormCollection nouse)
        {
            var vm = Wtm.CreateVM<OrderProductionVM>(id);
            vm.DoDelete();
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid();
            }
        }
        #endregion
        #region Details
        [ActionDescription("Sys.Details")]
        public ActionResult Details(string id)
        {
            var vm = Wtm.CreateVM<OrderProductionVM>(id);
            return PartialView(vm);
        }
        #endregion
        #region BatchEdit
        [HttpPost]
        [ActionDescription("Sys.BatchEdit")]
        public ActionResult BatchEdit(string[] IDs)
        {
            var vm = Wtm.CreateVM<OrderProductionBatchVM>(Ids: IDs);
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.BatchEdit")]
        public ActionResult DoBatchEdit(OrderProductionBatchVM vm, IFormCollection nouse)
        {
            if (!ModelState.IsValid || !vm.DoBatchEdit())
            {
                return PartialView("BatchEdit",vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchEditSuccess", vm.Ids.Length]);
            }
        }
        #endregion
        #region BatchDelete
        [HttpPost]
        [ActionDescription("Sys.BatchDelete")]
        public ActionResult BatchDelete(string[] IDs)
        {
            var vm = Wtm.CreateVM<OrderProductionBatchVM>(Ids: IDs);
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.BatchDelete")]
        public ActionResult DoBatchDelete(OrderProductionBatchVM vm, IFormCollection nouse)
        {
            if (!ModelState.IsValid || !vm.DoBatchDelete())
            {
                return PartialView("BatchDelete",vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.BatchDeleteSuccess", vm.Ids.Length]);
            }
        }
        #endregion
        #region Import
        [ActionDescription("Sys.Import")]
        public ActionResult Import()
        {
            var vm = Wtm.CreateVM<OrderProductionImportVM>();
            return PartialView(vm);
        }
        [HttpPost]
        [ActionDescription("Sys.Import")]
        public ActionResult Import(OrderProductionImportVM vm, IFormCollection nouse)
        {
            if (vm.ErrorListVM.EntityList.Count > 0 || !vm.BatchSaveData())
            {
                return PartialView(vm);
            }
            else
            {
                return FFResult().CloseDialog().RefreshGrid().Alert(Localizer["Sys.ImportSuccess", vm.EntityList.Count.ToString()]);
            }
        }
        #endregion
        [ActionDescription("Sys.Export")]
        [HttpPost]
        public IActionResult ExportExcel(OrderProductionListVM vm)
        {
            return vm.GetExportData();
        }
    }
}
cy_scdz/Areas/Order/Views/OrderProduction/BatchDelete.cshtml
New file
@@ -0,0 +1,12 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.BatchDeleteConfirm"]</wt:quote>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/BatchEdit.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div style="margin-bottom:10px">@Localizer["Sys.BatchEditConfirm"] </div>
<wt:row items-per-row="ItemsPerRowEnum.Two">
</wt:row>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Create.cshtml
New file
@@ -0,0 +1,34 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:combobox field="Entity.OderId" items="AllOders"/>
<wt:textbox field="Entity.Workbook16KCount" />
<wt:textbox field="Entity.Workbook16KPrice" />
<wt:textbox field="Entity.Workbook16KManufacturerId" />
<wt:textbox field="Entity.Workbook32KCount" />
<wt:textbox field="Entity.Workbook32KPrice" />
<wt:textbox field="Entity.Workbook32KManufacturerId" />
<wt:textbox field="Entity.PictureBook16KCount" />
<wt:textbox field="Entity.PictureBook16KPrice" />
<wt:textbox field="Entity.PictureBook16KManufacturerId" />
<wt:textbox field="Entity.PictureBook32KCount" />
<wt:textbox field="Entity.PictureBook32KPrice" />
<wt:textbox field="Entity.PictureBook32KManufacturerId" />
<wt:textbox field="Entity.PictureBookA4Count" />
<wt:textbox field="Entity.PictureBookA4KPrice" />
<wt:textbox field="Entity.PictureBookA4KManufacturerId" />
<wt:textbox field="Entity.LargeCharacterBookCount" />
<wt:textbox field="Entity.LargeCharacterPrice" />
<wt:textbox field="Entity.LargeCharacterManufacturerIds" />
<wt:textbox field="Entity.Mark" />
<wt:datetime field="Entity.DeliveryTime" />
<wt:combobox field="Entity.Chunqiuji" />
<wt:switch field="Entity.IsOver" />
</wt:row>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Delete.cshtml
New file
@@ -0,0 +1,36 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.DeleteConfirm"]</wt:quote>
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Oder.Title" />
<wt:display field="Entity.Workbook16KCount" />
<wt:display field="Entity.Workbook16KPrice" />
<wt:display field="Entity.Workbook16KManufacturerId" />
<wt:display field="Entity.Workbook32KCount" />
<wt:display field="Entity.Workbook32KPrice" />
<wt:display field="Entity.Workbook32KManufacturerId" />
<wt:display field="Entity.PictureBook16KCount" />
<wt:display field="Entity.PictureBook16KPrice" />
<wt:display field="Entity.PictureBook16KManufacturerId" />
<wt:display field="Entity.PictureBook32KCount" />
<wt:display field="Entity.PictureBook32KPrice" />
<wt:display field="Entity.PictureBook32KManufacturerId" />
<wt:display field="Entity.PictureBookA4Count" />
<wt:display field="Entity.PictureBookA4KPrice" />
<wt:display field="Entity.PictureBookA4KManufacturerId" />
<wt:display field="Entity.LargeCharacterBookCount" />
<wt:display field="Entity.LargeCharacterPrice" />
<wt:display field="Entity.LargeCharacterManufacturerIds" />
<wt:display field="Entity.Mark" />
<wt:display field="Entity.DeliveryTime" />
<wt:display field="Entity.Chunqiuji" />
<wt:display field="Entity.IsOver" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Details.cshtml
New file
@@ -0,0 +1,33 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Oder.Title" />
<wt:display field="Entity.Workbook16KCount" />
<wt:display field="Entity.Workbook16KPrice" />
<wt:display field="Entity.Workbook16KManufacturerId" />
<wt:display field="Entity.Workbook32KCount" />
<wt:display field="Entity.Workbook32KPrice" />
<wt:display field="Entity.Workbook32KManufacturerId" />
<wt:display field="Entity.PictureBook16KCount" />
<wt:display field="Entity.PictureBook16KPrice" />
<wt:display field="Entity.PictureBook16KManufacturerId" />
<wt:display field="Entity.PictureBook32KCount" />
<wt:display field="Entity.PictureBook32KPrice" />
<wt:display field="Entity.PictureBook32KManufacturerId" />
<wt:display field="Entity.PictureBookA4Count" />
<wt:display field="Entity.PictureBookA4KPrice" />
<wt:display field="Entity.PictureBookA4KManufacturerId" />
<wt:display field="Entity.LargeCharacterBookCount" />
<wt:display field="Entity.LargeCharacterPrice" />
<wt:display field="Entity.LargeCharacterManufacturerIds" />
<wt:display field="Entity.Mark" />
<wt:display field="Entity.DeliveryTime" />
<wt:display field="Entity.Chunqiuji" />
<wt:display field="Entity.IsOver" />
</wt:row>
    <wt:row align="AlignEnum.Right">
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Edit.cshtml
New file
@@ -0,0 +1,36 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:combobox field="Entity.OderId" items="AllOders"/>
<wt:textbox field="Entity.Workbook16KCount" />
<wt:textbox field="Entity.Workbook16KPrice" />
<wt:textbox field="Entity.Workbook16KManufacturerId" />
<wt:textbox field="Entity.Workbook32KCount" />
<wt:textbox field="Entity.Workbook32KPrice" />
<wt:textbox field="Entity.Workbook32KManufacturerId" />
<wt:textbox field="Entity.PictureBook16KCount" />
<wt:textbox field="Entity.PictureBook16KPrice" />
<wt:textbox field="Entity.PictureBook16KManufacturerId" />
<wt:textbox field="Entity.PictureBook32KCount" />
<wt:textbox field="Entity.PictureBook32KPrice" />
<wt:textbox field="Entity.PictureBook32KManufacturerId" />
<wt:textbox field="Entity.PictureBookA4Count" />
<wt:textbox field="Entity.PictureBookA4KPrice" />
<wt:textbox field="Entity.PictureBookA4KManufacturerId" />
<wt:textbox field="Entity.LargeCharacterBookCount" />
<wt:textbox field="Entity.LargeCharacterPrice" />
<wt:textbox field="Entity.LargeCharacterManufacturerIds" />
<wt:textbox field="Entity.Mark" />
<wt:datetime field="Entity.DeliveryTime" />
<wt:combobox field="Entity.Chunqiuji" />
<wt:switch field="Entity.IsOver" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Import.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionImportVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:row align="AlignEnum.Right">
        <wt:downloadTemplateButton vm="@Model" />
    </wt:row>
    <wt:upload field="UploadFileId" label-text="@Model.Localizer["Sys.UploadTemplate"]" upload-type="ExcelFile" />
    <wt:grid vm="ErrorListVM" use-local-data="true" hidden-checkbox="true" hidden-grid-index="true" hidden-panel="true"  height="300"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Order/Views/OrderProduction/Index.cshtml
New file
@@ -0,0 +1,8 @@
@model cy_scdz.ViewModel.Order.OrderProductionVMs.OrderProductionListVM
@inject IStringLocalizer<Program> Localizer;
<wt:searchpanel vm="@Model" reset-btn="true">
<wt:row items-per-row="ItemsPerRowEnum.Three">
</wt:row>
</wt:searchpanel>
<wt:grid vm="@Model" url="/Order/OrderProduction/Search"/>
cy_scdz/Areas/Setting/Controllers/PriceSettingController.cs
New file
@@ -0,0 +1,57 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using WalkingTec.Mvvm.Core;
using WalkingTec.Mvvm.Mvc;
using WalkingTec.Mvvm.Core.Extensions;
using cy_scdz.ViewModel.Setting.PriceSettingVMs;
namespace cy_scdz.Controllers
{
    [Area("Setting")]
    [ActionDescription("价格设置")]
    public partial class PriceSettingController : BaseController
    {
        #region Edit
        [ActionDescription("设置")]
        public ActionResult Index()
        {
            var vm = Wtm.CreateVM<PriceSettingVM>();
            return PartialView(vm);
        }
        [ActionDescription("设置")]
        [HttpPost]
        [ValidateFormItemOnly]
        public ActionResult Index(PriceSettingVM vm)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(vm);
            }
            else
            {
                vm.DoEdit();
                if (!ModelState.IsValid)
                {
                    vm.DoReInit();
                    return PartialView(vm);
                }
                else
                {
                    return PartialView(vm);
                }
            }
        }
        #endregion
    }
}
cy_scdz/Areas/Setting/Controllers/SettingController.cs
@@ -32,7 +32,7 @@
                return Ok(new { code = 0});
            var vm= Wtm.CreateVM<SettingVm>(passInit:true);
          
            vm.addNew(Param.name, Param.key);
            vm.addNew(Param.name, Param.key,value:Param.Val);
            if(vm.MSD.IsValid)
            {
                return Ok(new { code = 1 });
@@ -61,5 +61,12 @@
        [Required]
        public string name { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Val { get; set; }
    }
}
cy_scdz/Areas/Setting/Views/PriceSetting/BatchDelete.cshtml
New file
@@ -0,0 +1,12 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.BatchDeleteConfirm"]</wt:quote>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/BatchEdit.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingBatchVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div style="margin-bottom:10px">@Localizer["Sys.BatchEditConfirm"] </div>
<wt:row items-per-row="ItemsPerRowEnum.Two">
</wt:row>
    <wt:hidden field="Ids" />
    <wt:grid vm="ListVM" use-local-data="true" height="300"  hidden-checkbox="true" hidden-panel="true"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Create.cshtml
New file
@@ -0,0 +1,48 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:textbox field="Entity.Fmsjz" />
<wt:textbox field="Entity.Fmnpz" />
<wt:textbox field="Entity.Nybsz" />
<wt:textbox field="Entity.Nygbz" />
<wt:textbox field="Entity.Qmd_Nyds_32_16k" />
<wt:textbox field="Entity.Qmd_Nyds_32_32k" />
<wt:textbox field="Entity.Qmd_Nyds_36_16k" />
<wt:textbox field="Entity.Qmd_Nyds_36_32k" />
<wt:textbox field="Entity.Qmd_Nyss_32_16k" />
<wt:textbox field="Entity.Qmd_Nyss_32_32k" />
<wt:textbox field="Entity.Qmd_Nyss_36_16k" />
<wt:textbox field="Entity.Qmd_Nyss_36_32k" />
<wt:textbox field="Entity.Qmd_Nysis_32_16k" />
<wt:textbox field="Entity.Qmd_Nysis_32_32k" />
<wt:textbox field="Entity.Qmd_Nysis_36_16k" />
<wt:textbox field="Entity.Qmd_Nysis_36_32k" />
<wt:textbox field="Entity.Jb_Nyds_32_16k" />
<wt:textbox field="Entity.Jb_Nyds_32_32k" />
<wt:textbox field="Entity.Jb_Nyds_36_16k" />
<wt:textbox field="Entity.Jb_Nyds_36_32k" />
<wt:textbox field="Entity.Jb_Nyss_32_16k" />
<wt:textbox field="Entity.Jb_Nyss_32_32k" />
<wt:textbox field="Entity.Jb_Nyss_36_16k" />
<wt:textbox field="Entity.Jb_Nyss_36_32k" />
<wt:textbox field="Entity.Jb_Nysis_32_16k" />
<wt:textbox field="Entity.Jb_Nysis_32_32k" />
<wt:textbox field="Entity.Jb_Nysis_36_16k" />
<wt:textbox field="Entity.Jb_Nysis_36_32k" />
<wt:textbox field="Entity.Jb_Ds_32_16k" />
<wt:textbox field="Entity.Jb_Ds_32_32k" />
<wt:textbox field="Entity.Gbt_16k" />
<wt:textbox field="Entity.Gbt_32k" />
<wt:textbox field="Entity.Ywfy_Jz" />
<wt:textbox field="Entity.Ywfy_Zs" />
<wt:textbox field="Entity.Wlfy" />
<wt:textbox field="Entity.Sf" />
<wt:textbox field="Entity.Zzxh" />
</wt:row>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Delete.cshtml
New file
@@ -0,0 +1,50 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:quote>@Localizer["Sys.DeleteConfirm"]</wt:quote>
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Fmsjz" />
<wt:display field="Entity.Fmnpz" />
<wt:display field="Entity.Nybsz" />
<wt:display field="Entity.Nygbz" />
<wt:display field="Entity.Qmd_Nyds_32_16k" />
<wt:display field="Entity.Qmd_Nyds_32_32k" />
<wt:display field="Entity.Qmd_Nyds_36_16k" />
<wt:display field="Entity.Qmd_Nyds_36_32k" />
<wt:display field="Entity.Qmd_Nyss_32_16k" />
<wt:display field="Entity.Qmd_Nyss_32_32k" />
<wt:display field="Entity.Qmd_Nyss_36_16k" />
<wt:display field="Entity.Qmd_Nyss_36_32k" />
<wt:display field="Entity.Qmd_Nysis_32_16k" />
<wt:display field="Entity.Qmd_Nysis_32_32k" />
<wt:display field="Entity.Qmd_Nysis_36_16k" />
<wt:display field="Entity.Qmd_Nysis_36_32k" />
<wt:display field="Entity.Jb_Nyds_32_16k" />
<wt:display field="Entity.Jb_Nyds_32_32k" />
<wt:display field="Entity.Jb_Nyds_36_16k" />
<wt:display field="Entity.Jb_Nyds_36_32k" />
<wt:display field="Entity.Jb_Nyss_32_16k" />
<wt:display field="Entity.Jb_Nyss_32_32k" />
<wt:display field="Entity.Jb_Nyss_36_16k" />
<wt:display field="Entity.Jb_Nyss_36_32k" />
<wt:display field="Entity.Jb_Nysis_32_16k" />
<wt:display field="Entity.Jb_Nysis_32_32k" />
<wt:display field="Entity.Jb_Nysis_36_16k" />
<wt:display field="Entity.Jb_Nysis_36_32k" />
<wt:display field="Entity.Jb_Ds_32_16k" />
<wt:display field="Entity.Jb_Ds_32_32k" />
<wt:display field="Entity.Gbt_16k" />
<wt:display field="Entity.Gbt_32k" />
<wt:display field="Entity.Ywfy_Jz" />
<wt:display field="Entity.Ywfy_Zs" />
<wt:display field="Entity.Wlfy" />
<wt:display field="Entity.Sf" />
<wt:display field="Entity.Zzxh" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton theme=" ButtonThemeEnum.Warm" text="@Localizer["Sys.Delete"]"/>
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Details.cshtml
New file
@@ -0,0 +1,47 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:display field="Entity.Fmsjz" />
<wt:display field="Entity.Fmnpz" />
<wt:display field="Entity.Nybsz" />
<wt:display field="Entity.Nygbz" />
<wt:display field="Entity.Qmd_Nyds_32_16k" />
<wt:display field="Entity.Qmd_Nyds_32_32k" />
<wt:display field="Entity.Qmd_Nyds_36_16k" />
<wt:display field="Entity.Qmd_Nyds_36_32k" />
<wt:display field="Entity.Qmd_Nyss_32_16k" />
<wt:display field="Entity.Qmd_Nyss_32_32k" />
<wt:display field="Entity.Qmd_Nyss_36_16k" />
<wt:display field="Entity.Qmd_Nyss_36_32k" />
<wt:display field="Entity.Qmd_Nysis_32_16k" />
<wt:display field="Entity.Qmd_Nysis_32_32k" />
<wt:display field="Entity.Qmd_Nysis_36_16k" />
<wt:display field="Entity.Qmd_Nysis_36_32k" />
<wt:display field="Entity.Jb_Nyds_32_16k" />
<wt:display field="Entity.Jb_Nyds_32_32k" />
<wt:display field="Entity.Jb_Nyds_36_16k" />
<wt:display field="Entity.Jb_Nyds_36_32k" />
<wt:display field="Entity.Jb_Nyss_32_16k" />
<wt:display field="Entity.Jb_Nyss_32_32k" />
<wt:display field="Entity.Jb_Nyss_36_16k" />
<wt:display field="Entity.Jb_Nyss_36_32k" />
<wt:display field="Entity.Jb_Nysis_32_16k" />
<wt:display field="Entity.Jb_Nysis_32_32k" />
<wt:display field="Entity.Jb_Nysis_36_16k" />
<wt:display field="Entity.Jb_Nysis_36_32k" />
<wt:display field="Entity.Jb_Ds_32_16k" />
<wt:display field="Entity.Jb_Ds_32_32k" />
<wt:display field="Entity.Gbt_16k" />
<wt:display field="Entity.Gbt_32k" />
<wt:display field="Entity.Ywfy_Jz" />
<wt:display field="Entity.Ywfy_Zs" />
<wt:display field="Entity.Wlfy" />
<wt:display field="Entity.Sf" />
<wt:display field="Entity.Zzxh" />
</wt:row>
    <wt:row align="AlignEnum.Right">
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Edit.cshtml
New file
@@ -0,0 +1,49 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:textbox field="Entity.Fmsjz" />
<wt:textbox field="Entity.Fmnpz" />
<wt:textbox field="Entity.Nybsz" />
<wt:textbox field="Entity.Nygbz" />
<wt:textbox field="Entity.Qmd_Nyds_32_16k" />
<wt:textbox field="Entity.Qmd_Nyds_32_32k" />
<wt:textbox field="Entity.Qmd_Nyds_36_16k" />
<wt:textbox field="Entity.Qmd_Nyds_36_32k" />
<wt:textbox field="Entity.Qmd_Nyss_32_16k" />
<wt:textbox field="Entity.Qmd_Nyss_32_32k" />
<wt:textbox field="Entity.Qmd_Nyss_36_16k" />
<wt:textbox field="Entity.Qmd_Nyss_36_32k" />
<wt:textbox field="Entity.Qmd_Nysis_32_16k" />
<wt:textbox field="Entity.Qmd_Nysis_32_32k" />
<wt:textbox field="Entity.Qmd_Nysis_36_16k" />
<wt:textbox field="Entity.Qmd_Nysis_36_32k" />
<wt:textbox field="Entity.Jb_Nyds_32_16k" />
<wt:textbox field="Entity.Jb_Nyds_32_32k" />
<wt:textbox field="Entity.Jb_Nyds_36_16k" />
<wt:textbox field="Entity.Jb_Nyds_36_32k" />
<wt:textbox field="Entity.Jb_Nyss_32_16k" />
<wt:textbox field="Entity.Jb_Nyss_32_32k" />
<wt:textbox field="Entity.Jb_Nyss_36_16k" />
<wt:textbox field="Entity.Jb_Nyss_36_32k" />
<wt:textbox field="Entity.Jb_Nysis_32_16k" />
<wt:textbox field="Entity.Jb_Nysis_32_32k" />
<wt:textbox field="Entity.Jb_Nysis_36_16k" />
<wt:textbox field="Entity.Jb_Nysis_36_32k" />
<wt:textbox field="Entity.Jb_Ds_32_16k" />
<wt:textbox field="Entity.Jb_Ds_32_32k" />
<wt:textbox field="Entity.Gbt_16k" />
<wt:textbox field="Entity.Gbt_32k" />
<wt:textbox field="Entity.Ywfy_Jz" />
<wt:textbox field="Entity.Ywfy_Zs" />
<wt:textbox field="Entity.Wlfy" />
<wt:textbox field="Entity.Sf" />
<wt:textbox field="Entity.Zzxh" />
</wt:row>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton  text="保存"/>
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Import.cshtml
New file
@@ -0,0 +1,14 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingImportVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <wt:row align="AlignEnum.Right">
        <wt:downloadTemplateButton vm="@Model" />
    </wt:row>
    <wt:upload field="UploadFileId" label-text="@Model.Localizer["Sys.UploadTemplate"]" upload-type="ExcelFile" />
    <wt:grid vm="ErrorListVM" use-local-data="true" hidden-checkbox="true" hidden-grid-index="true" hidden-panel="true"  height="300"/>
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton />
        <wt:closebutton />
    </wt:row>
</wt:form>
cy_scdz/Areas/Setting/Views/PriceSetting/Index.cshtml
New file
@@ -0,0 +1,281 @@
@model cy_scdz.ViewModel.Setting.PriceSettingVMs.PriceSettingVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
    <div class="layui-card this-card ">
        <div class="layui-card-header">纸价设置</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Four">
                <wt:textbox field="Entity.Fmsjz" padding-text="元/吨" />
                <wt:textbox field="Entity.Fmnpz" padding-text="元/吨" />
                <wt:textbox field="Entity.Nybsz" padding-text="元/吨" />
                <wt:textbox field="Entity.Nygbz" padding-text="元/吨" />
            </wt:row>
        </div>
    </div>
    <div class="layui-card this-card ">
        <div class="layui-card-header">印刷费用设置</div>
        <div class="layui-card-body">
            <table class="layui-table custom-thead">
                <thead>
                    <!-- 第一级表头 -->
                    <tr>
                        <!-- 第一行剩余列 -->
                        <th colspan="12">骑马钉</th>
                        <th colspan="14">胶包</th>
                    </tr>
                    <!-- 第二级表头 -->
                    <tr>
                        <!-- 对应上一行第二列被合并的三列 -->
                        <th colspan="4">内页单色</th>
                        <th colspan="4">内页双色</th>
                        <th colspan="4">内页四色</th>
                        <th colspan="4">内页单色</th>
                        <th colspan="4">内页双色</th>
                        <th colspan="4">内页四色</th>
                        <th colspan="2">单面</th>
                    </tr>
                    <!-- 第二级表头 -->
                    <tr>
                        <!-- 对应上一行第二列被合并的三列 -->
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32页</th>
                        <th colspan="2">36-48页</th>
                        <th colspan="2">32张</th>
                    </tr>
                    <tr>
                        <!-- 对应上一行第二列被合并的三列 -->
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                        <th>16K</th>
                        <th>32K</th>
                    </tr>
                </thead>
                <tbody>
                    <!-- 表格数据行 -->
                    <tr>
                        <td ><wt:textbox field="Entity.Qmd_Nyds_32_16k" hide-label="true" /></td>
                        <td><wt:textbox field="Entity.Qmd_Nyds_32_32k" hide-label="true" /></td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyds_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyds_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyss_32_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyss_32_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyss_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nyss_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nysis_32_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nysis_32_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nysis_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Qmd_Nysis_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyds_32_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyds_32_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyds_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyds_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyss_32_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyss_32_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyss_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nyss_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nysis_32_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nysis_32_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nysis_36_16k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Nysis_36_32k" hide-label="true" />
                        </td>
                        <td>
                            <wt:textbox field="Entity.Jb_Ds_32_16k" hide-label="true" />
                        </td>
                        <td> <wt:textbox field="Entity.Jb_Ds_32_32k" hide-label="true" /></td>
                    </tr>
                    <!-- 更多数据行... -->
                </tbody>
            </table>
        </div>
    </div>
    @* <div class="layui-card this-card ">
        <div class="layui-card-header">印刷费用设置</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Four">
                <wt:textbox field="Entity.Qmd_Nyds_32_16k" />
                <wt:textbox field="Entity.Qmd_Nyds_32_32k" />
                <wt:textbox field="Entity.Qmd_Nyds_36_16k" />
                <wt:textbox field="Entity.Qmd_Nyds_36_32k" />
                <wt:textbox field="Entity.Qmd_Nyss_32_16k" />
                <wt:textbox field="Entity.Qmd_Nyss_32_32k" />
                <wt:textbox field="Entity.Qmd_Nyss_36_16k" />
                <wt:textbox field="Entity.Qmd_Nyss_36_32k" />
                <wt:textbox field="Entity.Qmd_Nysis_32_16k" />
                <wt:textbox field="Entity.Qmd_Nysis_32_32k" />
                <wt:textbox field="Entity.Qmd_Nysis_36_16k" />
                <wt:textbox field="Entity.Qmd_Nysis_36_32k" />
                <wt:textbox field="Entity.Jb_Nyds_32_16k" />
                <wt:textbox field="Entity.Jb_Nyds_32_32k" />
                <wt:textbox field="Entity.Jb_Nyds_36_16k" />
                <wt:textbox field="Entity.Jb_Nyds_36_32k" />
                <wt:textbox field="Entity.Jb_Nyss_32_16k" />
                <wt:textbox field="Entity.Jb_Nyss_32_32k" />
                <wt:textbox field="Entity.Jb_Nyss_36_16k" />
                <wt:textbox field="Entity.Jb_Nyss_36_32k" />
                <wt:textbox field="Entity.Jb_Nysis_32_16k" />
                <wt:textbox field="Entity.Jb_Nysis_32_32k" />
                <wt:textbox field="Entity.Jb_Nysis_36_16k" />
                <wt:textbox field="Entity.Jb_Nysis_36_32k" />
                <wt:textbox field="Entity.Jb_Ds_32_16k" />
                <wt:textbox field="Entity.Jb_Ds_32_32k" />
            </wt:row>
        </div>
    </div> *@
    <div class="layui-card this-card ">
        <div class="layui-card-header">裹背条价格</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Three">
                <wt:textbox field="Entity.Gbt_16k" padding-text="元/个"  label-width="120"/>
                <wt:textbox field="Entity.Gbt_32k" padding-text="元/个" label-width="120" />
            </wt:row>
        </div>
    </div>
    <div class="layui-card this-card ">
        <div class="layui-card-header">业务费用</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Three">
                <wt:textbox field="Entity.Ywfy_Jz" padding-text="%" label-width="120" />
                <wt:textbox field="Entity.Ywfy_Zs" padding-text="%" label-width="120" />
            </wt:row>
        </div>
    </div>
    <div class="layui-card this-card ">
        <div class="layui-card-header">其他设置</div>
        <div class="layui-card-body">
            <wt:row items-per-row="ItemsPerRowEnum.Three">
                <wt:textbox field="Entity.Wlfy" padding-text="元/个" label-width="120" />
                <wt:textbox field="Entity.Sf" padding-text="%" label-width="120" />
                <wt:textbox field="Entity.Zzxh" padding-text="‰" label-width="120" />
    </wt:row>
        </div>
    </div>
    <wt:hidden field="Entity.ID" />
    <wt:row align="AlignEnum.Right">
        <wt:submitbutton text="保存" />
    </wt:row>
</wt:form>
<style>
    .this-card {
        background-color: #f0f0f0;
    }
    .custom-thead th {
        text-align: center;
        border-color: red;
    }
    .custom-thead td {
        margin: 0px;
        padding: 0px;
        border-color: red;
        text-align: center;
        vertical-align: middle;
    }
    .custom-thead td div{
            height: 100%;
            overflow:hidden;
            vertical-align: middle;
    }
    .layui-form-item{
        margin-bottom:0px
    }
</style>
cy_scdz/Areas/Setting/Views/Setting/index.cshtml
@@ -93,15 +93,21 @@
            // 获取当前点击按钮的id属性值
            var buttonId = "";
            var strct = "";
            switch (this.id) {
                case 'zbgys':
                    buttonId = "请输入新增中标供应商名称";
                    strct = '<div><label>名称:</label><input type="text" id="textValue"></div>';
                    break;
                case 'fmzz':
                    buttonId = "请输入新增封面纸张规格";
                    strct = '<div><label>名称:</label><input type="text" id="textValue"></div>' +
                        '<div><label>克重:</label><input type="number" id="numValue"></div>';
                    break;
                case 'nyzz':
                    buttonId = "请输入新增内页纸张规格";
                    strct = '<div><label>名称:</label><input type="text" id="textValue"></div>' +
                        '<div><label>克重:</label><input type="number" id="numValue"></div>';
                    break;
                default:
                    buttonId = "";
@@ -110,16 +116,32 @@
            }
            var btid = this.id;
            // 弹出一个对话框让用户输入内容
            layer.prompt({
            layer.open({
                type: 1,
                title: buttonId,
                formType: 0 // 0 表示文本输入框
            }, function (value, index, elem) {
                // 在这里执行提交逻辑,例如向服务器发送数据等
                submitData(btid, value, index);
                content: strct,
                btn: ['确认', '取消'],
                yes: function (index, layero) {
                    var textVal = $('#textValue').val();
                    var numVal = $('#numValue').val();
                    if (!isNaN(numVal)) {
                        submitData(btid, { text: textVal, number: numVal }, index);
                    } else {
                        layer.msg('数字输入不合法,请输入有效的数字');
                    }
                }
            });
            // // 弹出一个对话框让用户输入内容
            // layer.prompt({
            //     title: buttonId,
            //     formType: 0 // 0 表示文本输入框
            // }, function (value, index, elem) {
            //     // 在这里执行提交逻辑,例如向服务器发送数据等
            //     submitData(btid, value, index);
            // });
        });
        function submitData(id, value, index) {
@@ -129,7 +151,7 @@
                type: "POST"
                , contentType: "application/json; charset=utf-8"
                , dataType: "json"
                , data: JSON.stringify({ key: id, name: value })
                , data: JSON.stringify({ key: id, name: value.text, val: value.number })
                , success: function (result) {
cy_scdz/appsettings.json
@@ -21,7 +21,7 @@
  "Connections": [
    {
      "Key": "default",
      "Value": "Server=localhost\\SQLEXPRESS;Database=cy_scdz_db;Trusted_Connection=True;User ID=sa;Password=123456;",
      "Value": "Server=localhost\\SQLEXPRESS;Database=cy_scdz1_db;Trusted_Connection=True;User ID=sa;Password=123456;",
      "DbContext": "DataContext",
      "DBType": "SqlServer" //DataBase, you can choose mysql,sqlserver,pgsql,sqlite,oracle
    }
utils/StringExtensions.cs
New file
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace utils
{
    /// <summary>
    /// string 扩展函数
    /// </summary>
    public static class StringExtensions
    {
        /// <summary>
        /// str转int扩展函数
        /// </summary>
        /// <param name="defaultValue"> 转换失败返回默认值</param>
        /// <returns></returns>
        public static int ToInt32(this string value, int defaultValue = 0)
        {
            int result;
            if (int.TryParse(value, out result))
            {
                return result;
            }
            else
            {
                return defaultValue;
            }
        }
    }
}