1 文件已重命名
19个文件已修改
3个文件已添加
1959 ■■■■ 已修改文件
Admin.NET/Admin.NET.Application/Configuration/Alipay.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCTB.NET.API.Application/User/CustomerService.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/Collection.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_CoutomerExRole.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/TenderOrder.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/TenderOrderBidding.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendDto.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendInput.cs 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendOutput.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/FBS_CusExtendService.cs 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs 293 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderInput.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderOutput.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/api/Customer/fBS_CusExtend.ts 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/theme/app.scss 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtend/index.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/Customer/fBS_CusExtendExamine/index.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Application/Configuration/Alipay.json
@@ -12,8 +12,8 @@
    "RootCertPath": "Alipaycrt/alipayRootCert.crt", // 支付宝根证书存放路径
    "AccountList": [
      {
        "Name": "sandbox 默认应用",
        "AppId": "xxxxxxxxxxxxxx",
        "Name": "非政采招投标",
        "AppId": "2021005184675726",
        "SignType": "RSA2",
        "PrivateKey": "xxxxxxxxxxxxxxxxx",
        "EncryptKey": "xxxxxxxxxxxxxxxxxxxx",
Admin.NET/FZCTB.NET.API.Application/User/CustomerService.cs
@@ -147,7 +147,10 @@
            {
                CusExtendId = dd.Id,
                ExRoleId = ExRole.Id ?? 0,
                steps = CusExtendStep.UNExamine
                steps = CusExtendStep.UNExamine,
                CreateTime = DateTime.Now,
                CreateUserName = "企业用户:" + ThisUser?.Name,
                CreateUserId = ThisUser?.Id
            };
@@ -249,6 +252,10 @@
            ExRoleId = rols.Id,
            CusExtendId = user.CusExtendId,
            steps= CusExtendStep.UNExamine,
            CreateTime = DateTime.Now,
            CreateUserName = "企业用户:" + ThisUser?.Name,
            CreateUserId = ThisUser?.Id,
        });
Admin.NET/FZCZTB.NET.MD/Collection.cs
@@ -27,6 +27,14 @@
        /// </summary>
        [SugarColumn(IsPrimaryKey = true)]
        public Guid TenderId { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public long? CusExtendId { get; set; }
    }
Admin.NET/FZCZTB.NET.MD/CutomerMd/FBS_CoutomerExRole.cs
@@ -19,7 +19,7 @@
/// </summary>
[SugarTable("FBS_CoutomerExRole", "主角色表")]
[IncreTable]
public class FBS_CoutomerExRole: EntityBaseId
public class FBS_CoutomerExRole: EntityBase
{
    /// <summary>
    /// 组织机构ID
Admin.NET/FZCZTB.NET.MD/TenderOrder.cs
@@ -228,7 +228,7 @@
        /// <summary>
        /// 订单状态
        /// 订单状态 1保存 2 发布  3 中标
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "订单状态")]
        public int? OrderStatus { get; set; }
@@ -334,11 +334,34 @@
        [SugarColumn(IsNullable = true, ColumnDescription = "中标时间")]
        public DateTime? ZhongbiaoDate { get; set; }
        /// <summary>
        /// 中标公告
        /// </summary>
        [SugarColumn(Length = 512, IsNullable = true, ColumnDescription = "中标公告")]
        public string Zhongbiaogonggao { get; set; }
        /// <summary>
        /// 中标公告Name
        /// </summary>
        [SugarColumn(Length = 512, IsNullable = true, ColumnDescription = "中标公告Name")]
        public string ZhongbiaogonggaoName { get; set; }
        /// <summary>
        /// 中标tittle
        /// </summary>
        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "中标tittle")]
        public string ZhongbiaoTittle { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public  long? CusExtendId { get; set; }
    }
}
Admin.NET/FZCZTB.NET.MD/TenderOrderBidding.cs
@@ -86,6 +86,46 @@
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "支付返回标号")]
        public string TradeNo { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public long? CusExtendId { get; set; }
        /// <summary>
        /// 是否支付代理费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "是否支付代理费")]
        public bool? IsDailiTransfer { get; set; }
        /// <summary>
        /// 代理费支付时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "代理费支付时间")]
        public DateTime? DailiTransferTime { get; set; }
        /// <summary>
        /// 代理费支付编号
        /// </summary>
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "代理费支付编号")]
        public string DailiTransferNo { get; set; }
        /// <summary>
        ///代理支付金额
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "代理支付金额")]
        public decimal? DailiZhifujine { get; set; }
        /// <summary>
        /// 代理支付返回标号
        /// </summary>
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "代理支付返回标号")]
        public string DailiTradeNo { get; set; }
    }
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendDto.cs
@@ -6,6 +6,8 @@
namespace FZCZTB.Net.CustomerSYSTem;
using FZCZTB.NET.MD.CutomerMd.Extend;
using SqlSugar;
/// <summary>
/// 企业资料输出参数
/// </summary>
@@ -173,4 +175,10 @@
    /// </summary>
    public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
}
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendInput.cs
@@ -151,9 +151,13 @@
    /// </summary>
    [Required(ErrorMessage = "法定代表人姓名不能为空")]
    public virtual string BankAccount { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
}
/// <summary>
@@ -429,6 +433,12 @@
    /// </summary>
    public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
}
/// <summary>
@@ -607,6 +617,12 @@
    /// </summary>
    public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
}
/// <summary>
@@ -770,14 +786,20 @@
    [ImporterHeader(Name = "*法定代表人姓名")]
    [ExporterHeader("*法定代表人姓名", Format = "", Width = 25, IsBold = true)]
    public string BankAccount { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
    ///// <summary>
    ///// 审核步骤 关联值
    ///// </summary>
    //[ImporterHeader(IsIgnore = true)]
    //[ExporterHeader(IsIgnore = true)]
    //public CusExtendStep? steps { get; set; }
    ///// <summary>
    ///// 审核步骤 文本
    ///// </summary>
@@ -785,7 +807,7 @@
    //[ImporterHeader(Name = "*审核步骤")]
    //[ExporterHeader("*审核步骤", Format = "", Width = 25, IsBold = true)]
    //public string stepsDictLabel { get; set; }
}
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/Dto/FBS_CusExtendOutput.cs
@@ -182,6 +182,38 @@
    //public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; }
    public List<FBS_CoutomerExRoleOutput> ExRoles { get; set; }
    /// <summary>
    /// 银行收款码
    /// </summary>
    public string BankAccountIMG { get; set; }
    /**************************                       以下是待审核资料 ********************************************* */
    /// <summary>
    /// ID
    /// </summary>
    public long? CoutomerExRoleId { get; set; }
    /// <summary>
    ///  外部角色
    /// </summary>
    public long? ExRoleId { get; set; }
    /// <summary>
    /// 外部角色
    /// </summary>
    public FBS_ExRole? ExRole { get; set; }
    /// <summary>
    /// 角色审核步骤
    /// </summary>
    public CusExtendStep steps { set; get; } = CusExtendStep.UNExamine;
}
/// <summary>
Admin.NET/FZCZTB.Net.CustomerSYSTem/Service/FBS_CusExtend/FBS_CusExtendService.cs
@@ -22,6 +22,8 @@
using Furion.Logging.Extensions;
using FZCZTB.Net.CustomerSYSTem.Service.FBS_ExRole.Dto;
using MapsterMapper;
using System.Runtime.ConstrainedExecution;
using Microsoft.AspNetCore.Authorization;
namespace FZCZTB.Net.CustomerSYSTem;
/// <summary>
@@ -146,7 +148,7 @@
    [ApiDescriptionSettings(Name = "Detail"), HttpGet]
    public async Task<FBS_CusExtend> Detail([FromQuery] QueryByIdFBS_CusExtendInput input)
    {
        return await _fBS_CusExtendRep.GetFirstAsync(u => u.Id == input.Id);
        return await _fBS_CusExtendRep.AsQueryable().Includes(x => x.ExRoles,y=>y.ExRole).Includes(x => x.CustormerUsers).Where(x=>x.Id==input.Id).FirstAsync();
    }
    /// <summary>
@@ -172,7 +174,7 @@
    public async Task Update(UpdateFBS_CusExtendInput input)
    {
        var entity = input.Adapt<FBS_CusExtend>();
        await _fBS_CusExtendRep.AsUpdateable(entity)
        await _fBS_CusExtendRep. AsUpdateable(entity)
        .ExecuteCommandAsync();
    }
@@ -188,21 +190,14 @@
     await    _fBS_CusExtendRep.AsTenant().BeginTranAsync();
        try
        {
            //var entity = await _fBS_CusExtendRep.AsQueryable().Includes(x => x.TransactionRole).Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
            //if (entity != null)
            //{
            //    var exrles = await _fBS_CoutomerExRoleRep.GetFirstAsync(x => x.CustomerId == entity.CustomerId && x.ExRoleId == entity.TransactionRole.Id);
            //    if (exrles != null)
            //    {
            //        await _fBS_CoutomerExRoleRep.DeleteAsync(exrles);
            //    }
            var entity = await _fBS_CusExtendRep.AsQueryable().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
            if (entity != null)
            {
            //    //await _fBS_CusExtendRep.FakeDeleteAsync(entity);   //假删除
                await _fBS_CusExtendRep.AsSugarClient().DeleteNav(entity).Include(x=>x.ExRoles).Include(x=>x.CustormerUsers).ExecuteCommandAsync();   //真删除
            }
            //    await _fBS_CusExtendRep.DeleteAsync(entity);   //真删除
            //}
          await   _fBS_CusExtendRep.AsTenant().CommitTranAsync();
            await   _fBS_CusExtendRep.AsTenant().CommitTranAsync();
        }
        catch (Exception)
        {
@@ -224,9 +219,9 @@
        var exp = Expressionable.Create<FBS_CusExtend>();
        foreach (var row in input) exp = exp.Or(it => it.Id == row.Id);
        var list = await _fBS_CusExtendRep.AsQueryable().Where(exp.ToExpression()).ToListAsync();
       // return await _fBS_CusExtendRep.FakeDeleteAsync(list);   //假删除
        return await _fBS_CusExtendRep.DeleteAsync(list);   //真删除
        return await _fBS_CusExtendRep.AsSugarClient().DeleteNav(list).Include(x => x.ExRoles).Include(x => x.CustormerUsers).ExecuteCommandAsync();   //真删除
                                                                                                                                                  // return await _fBS_CusExtendRep.FakeDeleteAsync(list);   //假删除
        //return await _fBS_CusExtendRep.DeleteAsync(list);   //真删除
    }
    
    /// <summary>
@@ -410,9 +405,13 @@
    /// <param name="Param"></param>
    /// <returns></returns>
    [HttpPost]
    public async Task<int> CareCustormerUser(FBS_CustormerUsersInPut Param)
    public async Task<long > CareCustormerUser(FBS_CustormerUsersInPut Param)
    {
        if(Param.CusExtendId<=0)
            throw Oops.Oh("CusExtendId 无效");
        var Ex = await _fBS_CusExtendRep.GetByIdAsync(Param.CusExtendId);
        if(Ex==null)
            throw Oops.Oh("组织机构不存在或者异常");
        var Data = await _fBS_CustormerUsersRep.GetFirstAsync(x => x.CusExtendId == Param.CusExtendId && x.PhoneNumber == Param.PhoneNumber);
@@ -421,7 +420,22 @@
            throw Oops.Oh("同一个公司下手机号不能重复");
        }
        Data = Param.Adapt<FBS_CustormerUsers>();
        return await _fBS_CustormerUsersRep.AsInsertable(Data).ExecuteCommandAsync();
        var id=  await _fBS_CustormerUsersRep.AsInsertable(Data).ExecuteReturnEntityAsync();
        return id.Id;
    }
    /// <summary>
    /// 获取组织机构的用户列表
    /// </summary>
    /// <param name="Param"></param>
    /// <returns></returns>
    [HttpGet]
    public async Task<List<FBS_CustormerUsersOutput>> GetCustormerUserList(long CusExtendId)
    {
        if (CusExtendId <= 0)
            throw Oops.Oh("CusExtendId 无效");
   return (await _fBS_CustormerUsersRep.GetListAsync(x => x.CusExtendId == CusExtendId)).Adapt<List< FBS_CustormerUsersOutput>>();
    }
    /// <summary>
@@ -436,5 +450,76 @@
        return await _fBS_CustormerUsersRep.DeleteByIdAsync(CustormerUserId);
    }
    /// <summary>
    /// 分页查询待审企业角色🔖
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("分页查询待审企业角色")]
    [ApiDescriptionSettings(Name = "GetReviewPage"), HttpPost]
    public async Task<SqlSugarPagedList<FBS_CusExtendOutput>> GetReviewPage(BasePageInput input)
    {
        //var data            = await _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers).ToListAsync();
        input.Keyword = input.Keyword?.Trim();
        var querlist1 = await _fBS_CusExtendRep.AsQueryable().RightJoin<FBS_CoutomerExRole>((ce, cer) => cer.CusExtendId == ce.Id).Where((ce, cer) => cer.steps == CusExtendStep.UNExamine || cer.steps == CusExtendStep.Change).Select((ce, cer) => new FBS_CusExtendOutput
        {
            steps = cer.steps,
            ExRole = SqlFunc.Subqueryable<FBS_ExRole>().Where(x => x.Id == cer.ExRoleId).First(),
            EnterpriseName = ce.EnterpriseName,
            CoutomerExRoleId = cer.Id,
            Id = ce.Id,
            CreateTime = SqlFunc.IsNullOrEmpty(cer.UpdateTime) == true ? cer.CreateTime:cer.UpdateTime
        }, true).OrderBy(ce => ce.CreateTime)
          .ToPagedListAsync(input.Page, input.PageSize);
        return querlist1;
        //var querlist = _fBS_CusExtendRep.AsQueryable().RightJoin<FBS_CoutomerExRole>((ce, cer) => cer.CusExtendId == ce.Id).Where((ce, cer) => cer.steps == CusExtendStep.UNExamine)
        //    .Select((ce, cer) => new FBS_CusExtendOutput
        //    {
        //        steps = cer.steps,
        //        ExRole = SqlFunc.Subqueryable<FBS_ExRole>().Where(x => x.Id == cer.ExRoleId).First(),
        //         EnterpriseName=ce.EnterpriseName,
        //         CoutomerExRoleId= cer.Id,
        //         Id= ce.Id
        //    },true);
        //var query = _fBS_CusExtendRep.AsQueryable().Includes(u => u.ExRoles, y => y.ExRole).Includes(u => u.CustormerUsers)
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.EnterpriseType.Contains(input.Keyword) || u.BusinessLicense.Contains(input.Keyword) || u.EnterpriseName.Contains(input.Keyword) || u.UnifiedSocialCreditCode.Contains(input.Keyword) || u.RegisteredCapital.Contains(input.Keyword) || u.LegalRepresentativeName.Contains(input.Keyword) || u.LegalRepresentativeIdCard.Contains(input.Keyword) || u.LegalRepresentativeIdNumber.Contains(input.Keyword) || u.LegalRepresentativePhone.Contains(input.Keyword) || u.Residence.Contains(input.Keyword) || u.EnterprisePhone.Contains(input.Keyword) || u.MainBusiness.Contains(input.Keyword) || u.EnterpriseEmail.Contains(input.Keyword) || u.OperatorName.Contains(input.Keyword) || u.OperatorIdCard.Contains(input.Keyword) || u.OperatorIdNumber.Contains(input.Keyword) || u.OperatorPhone.Contains(input.Keyword) || u.BankName.Contains(input.Keyword) || u.BankAccount.Contains(input.Keyword))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseType), u => u.EnterpriseType.Contains(input.EnterpriseType.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.TransactionCode), u => u.ExRoles.Any(x => x.ExRole.Code == input.TransactionCode))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BusinessLicense), u => u.BusinessLicense.Contains(input.BusinessLicense.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseName), u => u.EnterpriseName.Contains(input.EnterpriseName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.UnifiedSocialCreditCode), u => u.UnifiedSocialCreditCode.Contains(input.UnifiedSocialCreditCode.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.RegisteredCapital), u => u.RegisteredCapital.Contains(input.RegisteredCapital.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeName), u => u.LegalRepresentativeName.Contains(input.LegalRepresentativeName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeIdCard), u => u.LegalRepresentativeIdCard.Contains(input.LegalRepresentativeIdCard.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativeIdNumber), u => u.LegalRepresentativeIdNumber.Contains(input.LegalRepresentativeIdNumber.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.LegalRepresentativePhone), u => u.LegalRepresentativePhone.Contains(input.LegalRepresentativePhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.Residence), u => u.Residence.Contains(input.Residence.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterprisePhone), u => u.EnterprisePhone.Contains(input.EnterprisePhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.MainBusiness), u => u.MainBusiness.Contains(input.MainBusiness.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.EnterpriseEmail), u => u.EnterpriseEmail.Contains(input.EnterpriseEmail.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorName), u => u.OperatorName.Contains(input.OperatorName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorIdCard), u => u.OperatorIdCard.Contains(input.OperatorIdCard.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorIdNumber), u => u.OperatorIdNumber.Contains(input.OperatorIdNumber.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.OperatorPhone), u => u.OperatorPhone.Contains(input.OperatorPhone.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BankName), u => u.BankName.Contains(input.BankName.Trim()))
        //    .WhereIF(!string.IsNullOrWhiteSpace(input.BankAccount), u => u.BankAccount.Contains(input.BankAccount.Trim()))
        //    .WhereIF(input.EstablishmentTimeRange?.Length == 2, u => u.EstablishmentTime >= input.EstablishmentTimeRange[0] && u.EstablishmentTime <= input.EstablishmentTimeRange[1])
        //    .Select(u => new FBS_CusExtendOutput
        //    {
        //        ExRoles = u.ExRoles.Adapt<List<FBS_CoutomerExRoleOutput>>(),
        //        CustormerUsers = u.CustormerUsers.Adapt<List<FBS_CustormerUsersOutput>>()
        //    }, true);
        //return await querlist.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
    }
}
Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs
@@ -31,6 +31,7 @@
using MimeKit;
using static SKIT.FlurlHttpClient.Wechat.Api.Events.TransferCustomerServiceReply.Types;
using Aop.Api.Domain;
using FZCZTB.NET.MD.CutomerMd.Extend;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -76,9 +77,13 @@
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var collection = await _CollectionRep.AsQueryable().Where(x =>x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
        var collection = await _CollectionRep.AsQueryable().Where(x =>x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        if (input.isColection && collection != null)
        {
            return true;
@@ -104,6 +109,7 @@
            entity.CreateUserName = RealName;
            entity.UpdateUserId = usertrueId;
            entity.UpdateUserName = RealName;
            entity.CusExtendId = customerExId;
            entity.TenderId = input.TenderOrderId;
        }
        return await _CollectionRep.InsertAsync(entity);
@@ -124,8 +130,11 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _sqlSugarClient.Queryable<Collection,TenderOrder>((a, b) => a.TenderId == b.Id)
            .Where((a, b) => a.CreateUserId == userId)
            .Where((a, b) => a.CusExtendId == customerExId)
            
                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
@@ -193,14 +202,103 @@
    ///// <summary>
    ///// 供应商支付报名费 ➕
    ///// </summary>
    ///// <param name="input"></param>
    ///// <returns></returns>
    //[DisplayName("供应商支付报名费")]
    //[ApiDescriptionSettings(Name = "AddBaomingfei"), HttpPost]
    //public async Task<bool> AddBaomingfei(SuplierBaomingfeiInput input)
    //{
    //    long userId = 0;
    //    long? usertrueId = null;
    //    if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
    //    {
    //        usertrueId = userId;
    //    }
    //    var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
    //    string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
    //    if (CustomerLogoinType != "GYS" )
    //    {
    //        throw Oops.Oh("只有登录角色供应商才能支付报名费!");
    //    }
    //    var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
    //    if (tenderOrder == null)
    //    {
    //        throw Oops.Oh("不存在的招标!");
    //    }
    //    //if (tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
    //    //{
    //        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
    //        if(tenderOrderBidding!=null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
    //        {
    //            throw Oops.Oh("已经付款!");
    //        }
    //        if (tenderOrderBidding == null)
    //        {
    //            tenderOrderBidding = new TenderOrderBidding();
    //            tenderOrderBidding.Id = Guid.NewGuid();
    //            tenderOrderBidding.TenderId = input.TenderOrderId;
    //            tenderOrderBidding.IsTransfer = true;
    //            tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
    //            tenderOrderBidding.TransferTime = DateTime.Now;
    //            tenderOrderBidding.TransferNo = "BMF"+tenderOrderBidding.Id.ToString("N");
    //            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
    //           tenderOrderBidding.CreateTime = DateTime.Now;
    //            tenderOrderBidding.CreateUserId = usertrueId;
    //            tenderOrderBidding.CreateUserName = RealName;
    //            tenderOrderBidding.UpdateTime = DateTime.Now;
    //            tenderOrderBidding.UpdateUserId = usertrueId;
    //            tenderOrderBidding.UpdateUserName = RealName;
    //            return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
    //        }
    //        else
    //        {
    //            tenderOrderBidding.IsTransfer = true;
    //            tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
    //            tenderOrderBidding.TransferTime = DateTime.Now;
    //            tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
    //            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
    //            tenderOrderBidding.UpdateTime = DateTime.Now;
    //            tenderOrderBidding.UpdateUserId = usertrueId;
    //            tenderOrderBidding.UpdateUserName = RealName;
    //            return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    //        }
    //    //}
    //    //else
    //    //{
    //    //    throw Oops.Oh("无需支付报名费!");
    //    //}
    //}
    /// <summary>
    /// 供应商支付报名费 ➕
    /// 供应商获取代理人的支付信息 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("供应商支付报名费")]
    [DisplayName("供应商获取代理人的支付信息")]
    [ApiDescriptionSettings(Name = "AddBaomingfei"), HttpPost]
    public async Task<bool> AddBaomingfei(SuplierBaomingfeiInput input)
    public async Task<FBS_CusExtend> AddBaomingfei(SuplierBaomingfeiInput input)
    {
@@ -212,67 +310,33 @@
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能获取代理人的支付信息!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        //if (tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        //{
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
            if(tenderOrderBidding!=null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
            {
                throw Oops.Oh("已经付款!");
            }
        var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrder.CusExtendId ).FirstAsync();
        var cusExtend1 = new FBS_CusExtend();
        if (cusExtend != null)
        {
            cusExtend1.EnterpriseName = cusExtend.EnterpriseName;
            cusExtend1.BankName = cusExtend.BankName;
            cusExtend1.BankAccount = cusExtend.BankAccount;
            cusExtend1.BankAccountIMG = cusExtend.BankAccountIMG;
        }
            if (tenderOrderBidding == null)
            {
                tenderOrderBidding = new TenderOrderBidding();
                tenderOrderBidding.Id = Guid.NewGuid();
                tenderOrderBidding.TenderId = input.TenderOrderId;
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF"+tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
               tenderOrderBidding.CreateTime = DateTime.Now;
                tenderOrderBidding.CreateUserId = usertrueId;
                tenderOrderBidding.CreateUserName = RealName;
                tenderOrderBidding.UpdateTime = DateTime.Now;
                tenderOrderBidding.UpdateUserId = usertrueId;
                tenderOrderBidding.UpdateUserName = RealName;
                return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
            }
            else
            {
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
                tenderOrderBidding.UpdateTime = DateTime.Now;
                tenderOrderBidding.UpdateUserId = usertrueId;
                tenderOrderBidding.UpdateUserName = RealName;
                return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
            }
        //}
        //else
        //{
        //    throw Oops.Oh("无需支付报名费!");
        //}
        return cusExtend1;
    }
@@ -293,22 +357,32 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能上传招标文件!");
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        var tenderOrder  = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if(tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        if(tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        {
            if (tenderOrderBidding == null || (!tenderOrderBidding.IsTransfer.HasValue || tenderOrderBidding.IsTransfer.Value == false))
            {
                throw Oops.Oh("必须先支付才能投标!");
            }
        }
        //if(tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        //{
        //    if (tenderOrderBidding == null || (!tenderOrderBidding.IsTransfer.HasValue || tenderOrderBidding.IsTransfer.Value == false))
        //    {
        //        throw Oops.Oh("必须先支付才能投标!");
        //    }
        //}
       if(tenderOrderBidding == null)
        {
@@ -325,6 +399,15 @@
            tenderOrderBidding.UpdateTime = DateTime.Now;
            tenderOrderBidding.UpdateUserId = usertrueId;
            tenderOrderBidding.UpdateUserName = RealName;
            tenderOrderBidding.CusExtendId = customerExId;
            if( !tenderOrder.Baomingfei.HasValue || tenderOrder.Baomingfei.Value<=0)
            {
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = 0;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
            }
            return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
        }
@@ -333,6 +416,14 @@
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        if (!tenderOrder.Baomingfei.HasValue || tenderOrder.Baomingfei.Value <= 0)
        {
            tenderOrderBidding.IsTransfer = true;
            tenderOrderBidding.Zhifujine = 0;
            tenderOrderBidding.TransferTime = DateTime.Now;
            tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        }
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
@@ -350,8 +441,11 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _sqlSugarClient.Queryable<TenderOrderBidding, TenderOrder>((a, b) => a.TenderId == b.Id)
            .Where((a, b) => a.CreateUserId == userId)
            .Where((a, b) => a.CusExtendId == customerExId)
                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
@@ -393,4 +487,73 @@
        return pagedList;
    }
    /// <summary>
    /// 供应商下载中标文件 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("供应商下载中标文件")]
    [ApiDescriptionSettings(Name = "DownZhongbiao"), HttpPost]
    public async Task<TenderOrderOutput> DownZhongbiao(SuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能上传招标文件!");
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        if(tenderOrder.OrderStatus !=3)
        {
            throw Oops.Oh("只有中标之后才能下载中标文件!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        if (tenderOrderBidding == null )
        {
            throw Oops.Oh("不存在的投标!");
        }
        if (!tenderOrderBidding.IsSelected.HasValue && tenderOrderBidding.IsSelected.Value)
        {
            throw Oops.Oh("没有中标!");
        }
        if (!tenderOrderBidding.IsDailiTransfer.HasValue && tenderOrderBidding.IsDailiTransfer.Value)
        {
            throw Oops.Oh("没有缴纳代理费!");
        }
        var tenderOrderOutput = new TenderOrderOutput();
        tenderOrderOutput.Zhongbiaowenjian = tenderOrder.Zhongbiaowenjian;
        tenderOrderOutput.ZhongbiaowenjianName = tenderOrder.ZhongbiaowenjianName;
        return tenderOrderOutput;
    }
}
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderInput.cs
@@ -998,10 +998,23 @@
    /// <summary>
    /// 中标供应商id   逗号分隔! 12121212,232323,232323,232323
    /// 中标公告
    /// </summary>
    [Required(ErrorMessage = "中标供应商id不能为空")]
    public string SupplierUserIds { get; set; }
    [Required(ErrorMessage = "中标公告Name不能为空")]
    public string Zhongbiaogonggao { get; set; }
    /// <summary>
    /// 中标公告Name
    /// </summary>
    [Required(ErrorMessage = "中标公告Name不能为空")]
    public string ZhongbiaogonggaoName { get; set; }
    /// <summary>
    /// 中标投标Id  逗号分隔! F0D64522-BF2B-4759-9431-EE89952283CA,4A1A779A-4263-4229-8DA6-AD4E56052F44,F0D64522-BF2B-4759-9431-EE89952283CA  [FB_TenderOrderBidding]的id
    /// </summary>
    [Required(ErrorMessage = "中标投标Id不能为空")]
    public string TenderOrderBiddingIds { get; set; }
    /// <summary>
@@ -1027,6 +1040,21 @@
}
/// <summary>
/// 采购代理人取人供应商已支付报名费
/// </summary>
public class QuerenSuplierBaomingfeiInput
{
    /// <summary>
    /// 招标Id
    /// </summary>
    [Required(ErrorMessage = "招标Id不能为空")]
    public Guid TenderOrderBiddingId { get; set; }
}
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderOutput.cs
@@ -365,6 +365,16 @@
    public DateTime? ZhongbiaoDate { get; set; }
    /// <summary>
    /// 中标公告
    /// </summary>
    public string Zhongbiaogonggao { get; set; }
    /// <summary>
    /// 中标公告Name
    /// </summary>
    public string ZhongbiaogonggaoName { get; set; }
    /// <summary>
    /// 中标tittle
    /// </summary>
    public string ZhongbiaoTittle { get; set; }
@@ -609,6 +619,39 @@
        /// </summary>
        public string? UpdateUserName { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        public long? CusExtendId { get; set; }
        /// <summary>
        /// 是否支付代理费
        /// </summary>
        public bool? IsDailiTransfer { get; set; }
        /// <summary>
        /// 代理费支付时间
        /// </summary>
        public DateTime? DailiTransferTime { get; set; }
        /// <summary>
        /// 代理费支付编号
        /// </summary>
        public string DailiTransferNo { get; set; }
        /// <summary>
        ///代理支付金额
        /// </summary>
        public decimal? DailiZhifujine { get; set; }
        /// <summary>
        /// 代理支付返回标号
        /// </summary>
        public string DailiTradeNo { get; set; }
    }
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs
@@ -31,6 +31,7 @@
using MimeKit;
using static FZCZTB.TSCL.Application.ChangeTenderOrderOut;
using FZCZTB.NET.MD.CutomerMd.Extend;
using FZCZTB.NET.MD.CutomerMd;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -241,8 +242,12 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _TenderOrderRep.AsQueryable()
            .Where(x => x.CreateUserId == userId)
            .Where(x => x.CusExtendId == customerExId)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Xingzhengquyu), u => u.Xingzhengquyu.Contains(input.Xingzhengquyu.Trim()))
              .WhereIF(!string.IsNullOrWhiteSpace(input.Hangyepinmu), u => u.Hangyepinmu == input.Hangyepinmu.Trim())
               .WhereIF( input.OrderStatus.HasValue, u => u.OrderStatus == input.OrderStatus)
@@ -354,7 +359,7 @@
                {
                    tenderOrderBiddingOutput.IsTransferName = "否";
                }
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrderBiddingOutput.CreateUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync();
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == tenderOrderBiddingOutput.CusExtendId).FirstAsync();
                if (cusExtend != null)
                {
                    tenderOrderBiddingOutput.ChangshangName = cusExtend.EnterpriseName;
@@ -368,6 +373,75 @@
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理获取联系方式
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人增加非政府订单获取联系方式")]
    [ApiDescriptionSettings(Name = "Addgetcontact"), HttpPost]
    public async Task<TenderOrderOutput> Addgetcontact()
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能获取联系方式!");
        }
        var tenderOrderOutput = new TenderOrderOutput();
        var fBS_CusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>()
         .Where(x => x.Id == customerExId).FirstAsync();
        if (fBS_CusExtend != null)
        {
            if (CustomerLogoinType != "DLJG" )
            {
                tenderOrderOutput.Dailijigoumingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.DailiLianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.DailiLianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.DailiDianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.DailiTongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.DailiXiangmujingli = "";
                tenderOrderOutput.DailijingliLianxidianhua = "";
            }
            else if (CustomerLogoinType != "CGR")
            {
                tenderOrderOutput.Caigourenmingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.Xingzhengquyu = "";
                tenderOrderOutput.XingzhengquyuName = "";
                tenderOrderOutput.Jigoudaima = fBS_CusExtend.UnifiedSocialCreditCode;
                tenderOrderOutput.Daimaleixing = "";
                tenderOrderOutput.DaimaleixingName = "";
                tenderOrderOutput.Lianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.Lianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.Tongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.Dianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.Xiangmujingbanren = "";
                tenderOrderOutput.Zhiwu = "";
                tenderOrderOutput.Jingbanrendianhua = "";
            }
        }
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理 ➕
@@ -386,6 +460,18 @@
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if(CustomerLogoinType!= "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        entity.CreateTime = DateTime.Now;
        entity.UpdateTime = DateTime.Now;
@@ -393,6 +479,7 @@
        entity.CreateUserName = RealName;
        entity.UpdateUserId = usertrueId;
        entity.UpdateUserName = RealName;
        entity.CusExtendId = customerExId;
        entity.OrderStatus = 1;
        entity.Tousu = false;
        entity.Zhiyi = false;
@@ -416,6 +503,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if(tenderOrder == null)
        {
@@ -451,6 +546,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单质疑!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -483,6 +586,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单投诉!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -508,6 +619,13 @@
    [ApiDescriptionSettings(Name = "Delete"), HttpPost]
    public async Task Delete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除招标!");
        }
        //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        var entity = await _sqlSugarClient.Queryable<TenderOrder>().Where(x=>x.Id== input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        //await _TenderOrderRep.FakeDeleteAsync(entity);   //假删除
@@ -523,6 +641,14 @@
    [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
    public async Task<bool > BatchDelete([Required(ErrorMessage = "主键列表不能为空")]List<DeleteTenderOrderInput> input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能批量删除招标!");
        }
        var exp = Expressionable.Create<TenderOrder>();
        foreach (var row in input) exp = exp.Or(it => it.Id == row.Id);
        var list = await _TenderOrderRep.AsQueryable().Where(exp.ToExpression()).ToListAsync();
@@ -621,6 +747,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if (tenderOrder == null)
        {
@@ -659,6 +793,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单标题!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -691,6 +833,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布变更公告!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderId).First();
        if (tenderOrder == null)
        {
@@ -783,12 +933,79 @@
    [ApiDescriptionSettings(Name = "CHangeDelete"), HttpPost]
    public async Task CHangeDelete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除变更公告!");
        }
        //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        var entity = await _sqlSugarClient.Queryable<ChangeOrder>().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        //await _TenderOrderRep.FakeDeleteAsync(entity);   //假删除
        await _ChangeOrderRep.DeleteAsync(entity);   //真删除
    }
    /// <summary>
    /// 采购代理人确认供应商已支付报名费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付报名费")]
    [ApiDescriptionSettings(Name = "QuerenBaomingfei"), HttpPost]
    public async Task<bool> QuerenBaomingfei(QuerenSuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付报名费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null )
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsTransfer = true;
        tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
        tenderOrderBidding.TransferTime = DateTime.Now;
        tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
    /// <summary>
@@ -808,6 +1025,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布中标文件!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
       
@@ -822,15 +1047,18 @@
            throw Oops.Oh("已经中标的项目不能再次中标!");
        }
        var ssss = input.SupplierUserIds.Split(',');
        if (string.IsNullOrEmpty(input.SupplierUserIds))
        var ssss = input.TenderOrderBiddingIds.Split(',');
        if (string.IsNullOrEmpty(input.TenderOrderBiddingIds))
        {
            throw Oops.Oh("没有选中中标供应商!");
        }
         foreach ( var sss in ssss)
        foreach ( var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == SupplierUserId).FirstAsync();
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            if (tenderOrderBidding == null)
            {
                throw Oops.Oh("不存在的投标!");
@@ -843,46 +1071,50 @@
            {
                throw Oops.Oh("没有投标文件。不能中标!");
            }
        }
        tenderOrder.ZhongbiaoId = null;
        //tenderOrder.ZhongbiaoName = input.SupplierUserName;
        tenderOrder.ZhongbiaoName = "";
        foreach (var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == SupplierUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync();
            if (cusExtend != null)
            {
                tenderOrder.ZhongbiaoName += cusExtend.EnterpriseName+",";
            }
        }
        tenderOrder.Zhongbiaowenjian = input.Zhongbiaowenjian;
        tenderOrder.ZhongbiaowenjianName = input.ZhongbiaowenjianName;
        tenderOrder.Zhongbiaogonggao = input.Zhongbiaogonggao;
        tenderOrder.ZhongbiaogonggaoName = input.ZhongbiaogonggaoName;
        tenderOrder.ZhongbiaoDate = DateTime.Now;
        tenderOrder.UpdateTime = DateTime.Now;
        tenderOrder.UpdateUserId = usertrueId;
        tenderOrder.UpdateUserName = RealName;
        tenderOrder.OrderStatus = 3;
        tenderOrder.ZhongbiaoTittle = input.ZhongbiaoTittle;
        await _TenderOrderRep.UpdateAsync(tenderOrder);
        foreach (var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == SupplierUserId).FirstAsync();
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            tenderOrderBidding.IsSelected = true;
            tenderOrderBidding.SelectedTime = tenderOrder.ZhongbiaoDate;
            tenderOrderBidding.UpdateTime = DateTime.Now;
            tenderOrderBidding.UpdateUserId = usertrueId;
            tenderOrderBidding.UpdateUserName = RealName;
            await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
            var SupplierUserId = tenderOrderBidding.CusExtendId??0;
            var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == SupplierUserId).FirstAsync();
            if (cusExtend != null)
            {
                tenderOrder.ZhongbiaoName += cusExtend.EnterpriseName + ",";
            }
        }
        tenderOrder.ZhongbiaoName = tenderOrder.ZhongbiaoName.Trim(',');
        await _TenderOrderRep.UpdateAsync(tenderOrder);
        return true;
@@ -895,4 +1127,65 @@
    }
    /// <summary>
    /// 采购代理人确认供应商已支付代理费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付代理费")]
    [ApiDescriptionSettings(Name = "QuerenDailifei"), HttpPost]
    public async Task<bool> QuerenDailifei(QuerenSuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付代理费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null)
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsDailiTransfer.HasValue && tenderOrderBidding.IsDailiTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsDailiTransfer = true;
        tenderOrderBidding.DailiZhifujine = 0;
        tenderOrderBidding.DailiTransferTime = DateTime.Now;
        tenderOrderBidding.DailiTransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.DailiTradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
}
Web/src/api/Customer/fBS_CusExtend.ts
@@ -16,11 +16,40 @@
        getParam:()=>baseApi.request({
                url: '/api/fBS_CusExtend/getParam',
                method: 'get',
            }, false),
        changeSteps:(id: any, step: any, cancel: boolean = false)=>baseApi.request({
                url:  `/api/fBS_CusExtend/changeSteps/${id}/${step}`,
                method: 'get',
            }, false),
        //分页查询 待审核企业角色
        getReviewPage:( data:any,cancel: boolean = false)=>baseApi.request({
                url:  `/api/fBS_CusExtend/getReviewPage`,
                method: 'post',
                data
            }, cancel),
        // 更改审核状态
        changeSteps:(coutomerExRolesId: any, step: any, cancel: boolean = false)=>baseApi.request({
            url:  `/api/fBS_CusExtend/changeSteps/${coutomerExRolesId}/${step}`,
            method: 'get',
        }, cancel),
        // 修改用户
        upDataCustormerUser:(data: any, cancel: boolean = false)=>baseApi.request({
            url: '/api/fBS_CusExtend/upDataCustormerUser',
            method: 'post',
            data
        }, cancel),
        // 获取用户信息
        custormerUserInfo:(custormerUserId: any, cancel: boolean = false)=>baseApi.request({
            url:  `/api/fBS_CusExtend/custormerUserInfo/${custormerUserId}`,
            method: 'get',
        }, cancel),
        // 新建员工
        careCustormerUser:(data: any, cancel: boolean = false)=>baseApi.request({
            url: '/api/fBS_CusExtend/careCustormerUser',
            method: 'post',
            data
        }, cancel),
        // 删除员工
        delCustormerUser:(custormerUserId: any, cancel: boolean = false)=>baseApi.request({
            url:  `/api/fBS_CusExtend/delCustormerUser/${custormerUserId}`,
            method: 'delete',
        }, cancel),
        // 删除企业资料
        delete: baseApi.delete,
        // 批量删除企业资料
Web/src/theme/app.scss
@@ -218,6 +218,10 @@
.flex {
    display: flex;
}
.flex-end {
    display: flex;
    justify-content: end;
}
.flex-auto {
    flex: 1;
    overflow: hidden;
Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue
@@ -55,7 +55,7 @@
    state.title = title;
    row = row ?? {  };
    state.ruleForm = row.id ? await fBS_CusExtendApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row));
    state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
    state.ruleForm.enterpriseType = state.ruleForm.enterpriseType&&state.ruleForm.enterpriseType.split(",");
    state.showDialog = true;
};
@@ -160,7 +160,7 @@
                            <el-input v-model="state.ruleForm.unifiedSocialCreditCode" placeholder="请输入统一社会信用代码"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                    <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                        <el-form-item label="交易主体" prop="transactionCode">
                             <el-select
                                v-model="state.ruleForm.transactionCode"
@@ -174,9 +174,8 @@
                                :value="item.code"
                                />
                            </el-select>
                            <!-- <el-input v-model="state.ruleForm.transactionCode" placeholder="请输入交易主体"  show-word-limit clearable /> -->
                        </el-form-item>
                    </el-col>
                    </el-col> -->
                    <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                        <el-form-item label="注册资金" prop="registeredCapital">
                            <el-input v-model="state.ruleForm.registeredCapital" placeholder="请输入注册资金"  show-word-limit clearable />
@@ -205,6 +204,29 @@
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" >
                        <el-form-item label="企业主营业务" prop="mainBusiness">
                            <el-input type="textarea" autosize v-model="state.ruleForm.mainBusiness" placeholder="请输入企业主营业务" show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col  :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                        <el-form-item label="开户行" prop="bankName">
                            <el-input v-model="state.ruleForm.bankName" placeholder="请输入开户行"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col  :xs="24" :sm="12" :md="12" :lg="8" :xl="8" class="mb20" >
                        <el-form-item label="银行账号" prop="bankAccount">
                            <el-input v-model="state.ruleForm.bankAccount" placeholder="请输入银行账号"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" >
                        <el-form-item label="银行收款二维码" prop="bankAccountIMG">
                            <el-image
                                :src="state.ruleForm.bankAccountIMG"
                                :zoom-rate="1.2"
                                :preview-src-list="[state.ruleForm.bankAccountIMG]"
                                preview-teleported
                                fit="cover"
                                style="width:200px;height:150px"
                            />
                            <!-- <el-input v-model="state.ruleForm.legalRepresentativeIdCard" placeholder="请输入法定代表人身份证文件路径"  show-word-limit clearable /> -->
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" >
@@ -263,16 +285,7 @@
                            <el-input v-model="state.ruleForm.operatorPhone" placeholder="请输入业务经办人电话"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col  :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                        <el-form-item label="开户行" prop="bankName">
                            <el-input v-model="state.ruleForm.bankName" placeholder="请输入开户行"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col  :xs="24" :sm="12" :md="12" :lg="8" :xl="8" class="mb20" >
                        <el-form-item label="银行账号" prop="bankAccount">
                            <el-input v-model="state.ruleForm.bankAccount" placeholder="请输入银行账号"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <!-- <el-col  :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" >
                        <el-form-item label="审核步骤" prop="steps">
                            <g-sys-dict v-model="state.ruleForm.steps" code="CusExtendStep" render-as="select" placeholder="请选择审核步骤" clearable filterable />
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue
New file
@@ -0,0 +1,151 @@
<script lang="ts" name="fBS_Customer" setup>
import { ref, reactive, onMounted } from "vue";
import { ElMessage } from "element-plus";
import type { FormRules } from "element-plus";
import { formatDate } from '/@/utils/formatTime';
import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer';
import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend';
const fBS_CusExtendApi = useFBS_CusExtendApi();
//父级传递来的函数,用于回调
const emit = defineEmits(["reloadTable"]);
const fBS_CustomerApi = useFBS_CustomerApi();
const ruleFormRef = ref();
const state = reactive({
    title: '',
    loading: false,
    showDialog: false,
    ruleForm: {} as any,
    stores: {},
    dropdownData: {} as any,
});
// 自行添加其他规则
const rules = ref<FormRules>({
  account: [{required: true, message: '请选择账号!', trigger: 'blur',},],
  password: [{required: true, message: '请选择密码!', trigger: 'blur',},],
  name: [{required: true, message: '请输入姓名!', trigger: 'blur',},],
  phoneNumber: [{required: true, message: '请输入手机号!', trigger: 'change',},],
  age: [{required: true, message: '请选择年龄!', trigger: 'blur',},],
  cardType: [{required: true, message: '请选择证件类型!', trigger: 'change',},],
  cultureLevel: [{required: true, message: '请选择文化程度!', trigger: 'change',},],
  orderNo: [{required: true, message: '请选择排序!', trigger: 'blur',},],
  status: [{required: true, message: '请选择状态!', trigger: 'change',},],
});
// 页面加载时
onMounted(async () => {
});
// 打开弹窗
const openDialog = async (row: any, title: string, newAdd:any) => {
    console.log(newAdd,row);
    row = row??{ status: 1,orderNo: 100, };
    state.ruleForm = row.id ? await fBS_CusExtendApi.custormerUserInfo(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row));
    state.title = title;
    if(title=='新增用户'){
        state.ruleForm.isEn = true
        state.ruleForm.cusExtendId =  newAdd.id
    }
    state.showDialog = true;
};
// 关闭弹窗
const closeDialog = () => {
    emit("reloadTable",state.ruleForm);
    state.showDialog = false;
};
// 提交
const submit = async () => {
    ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => {
        if (isValid) {
            let values = state.ruleForm;
            let res = await fBS_CusExtendApi[state.ruleForm.id ? 'upDataCustormerUser' : 'careCustormerUser'](values);
            state.ruleForm.id = state.ruleForm.id??res.data.result
            closeDialog();
        } else {
            ElMessage({
                message: `表单有${Object.keys(fields).length}处验证失败,请修改后再提交`,
                type: "error",
            });
        }
    });
};
//将属性或者函数暴露给父组件
defineExpose({ openDialog });
</script>
<template>
    <div class="fBS_Customer-container">
        <el-dialog v-model="state.showDialog" :width="800" draggable :close-on-click-modal="false">
            <template #header>
                <div style="color: #fff">
                    <span>{{ state.title }}</span>
                </div>
            </template>
            <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules">
                <el-row :gutter="35">
                    <el-form-item v-show="false">
                        <el-input v-model="state.ruleForm.id" />
                    </el-form-item>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" >
                        <el-form-item label="姓名" prop="name">
                            <el-input v-model="state.ruleForm.name" placeholder="请输入姓名"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" >
                        <el-form-item label="手机号码" prop="phoneNumber">
                            <el-input v-model="state.ruleForm.phoneNumber" placeholder="请输入手机号码"  show-word-limit clearable />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" >
                        <el-form-item label="是否管理员">
                            <el-switch
                                v-model="state.ruleForm.isManager"
                                inline-prompt
                                :active-value="true"
                                :inactive-value="false"
                                active-text="是"
                                inactive-text="否"
                            />
                        </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" >
                        <el-form-item label="是否启用">
                            <el-switch
                                v-model="state.ruleForm.isEn"
                                inline-prompt
                                :active-value="true"
                                :inactive-value="false"
                                active-text="启用"
                                inactive-text="停用"
                            />
                            </el-form-item>
                    </el-col>
                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" >
                        <el-form-item label="备注" prop="remarks">
                            <el-input
                                v-model="state.ruleForm.remarks"
                                placeholder="请输入备注信息"
                                type="textarea"
                            />
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="() => state.showDialog = false">取 消</el-button>
                    <el-button @click="submit" type="primary" v-reclick="1000">确 定</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
<style lang="scss" scoped>
:deep(.el-select), :deep(.el-input-number) {
  width: 100%;
}
</style>
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue
New file
@@ -0,0 +1,262 @@
<script lang="ts" name="fBS_Customer" setup>
import { ref, reactive, onMounted } from "vue";
import type { FormRules } from "element-plus";
import { formatDate } from '/@/utils/formatTime';
import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer';
import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend';
import { auth } from '/@/utils/authFunction';
import { ElMessageBox, ElMessage } from "element-plus";
import { downloadStreamFile } from "/@/utils/download";
import editDialog from '/@/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue'
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import ImportData from "/@/components/table/importData.vue";
const fBS_CusExtendApi = useFBS_CusExtendApi();
const fBS_CustomerApi = useFBS_CustomerApi();
const printDialogRef = ref();
const editDialogRef = ref();
const importDataRef = ref();
const state = reactive({
    title: '',
    loading: false,
    showDialog: false,
    ruleForm: {} as any,
    stores: {},
    dropdownData: {} as any,
    exportLoading: false,
    tableLoading: false,
    showAdvanceQueryUI: false,
    selectData: [] as any[],
    tableQueryParams: {} as any,
    tableParams: {
        page: 1,
        pageSize: 20,
        total: 0,
        field: 'createTime', // 默认的排序字段
        order: 'descending', // 排序方向
        descStr: 'descending', // 降序排序的关键字符
    },
    tableData: [],
    listRow:{}
});
// 页面加载时
onMounted(async () => {
});
/**
 * 根据id对数组元素进行操作:存在则替换,不存在则添加,指定删除则移除
 * @param {Array} array - 要操作的原数组
 * @param {Object} item - 要操作的元素,必须包含id属性
 * @param {boolean} [deleteFlag=false] - 是否执行删除操作
 * @returns {Array} 处理后的数组
 */
function operateByid(array, item, deleteFlag = false) {
    // 检查元素是否包含id
    // if (!item || !('id' in item)) {
    //     console.warn('元素必须包含id属性');
    //     return [...array];
    // }
    // 创建原数组的副本,避免直接修改原数组
    const newArray = [...array];
    // 查找数组中是否存在相同id的元素
    const index = newArray.findIndex(i => i.id === item.id);
    if (deleteFlag) {
        // 如果需要删除且元素存在,则从数组中移除
        if (index !== -1) {
            newArray.splice(index, 1);
        }
    } else {
        if (index !== -1) {
            // 存在则替换
            newArray[index] = item;
        } else {
            // 不存在则添加
            newArray.push(item);
        }
    }
    return newArray;
}
// 查询操作
const handleQuery = async (params: any = {}, deleteFlag:false) => {
  state.tableLoading = true;
  state.tableData = operateByid(state.tableData,params,deleteFlag)
  console.log(params);
  state.tableLoading = false;
};
// 列排序
const sortChange = async (column: any) => {
  state.tableParams.field = column.prop;
  state.tableParams.order = column.order;
  await handleQuery();
};
// 删除
const delFBS_Customer = (row: any) => {
    console.log(row,'rowrow');
  ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(async () => {
    await fBS_CusExtendApi.delCustormerUser(row.id);
    handleQuery(row,true);
    ElMessage.success("删除成功");
  }).catch(() => {});
};
// 批量删除
const batchDelFBS_Customer = () => {
  ElMessageBox.confirm(`确定要删除${state.selectData.length}条记录吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(async () => {
    await fBS_CustomerApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => {
      ElMessage.success(`成功批量删除${res.data.result}条记录`);
      handleQuery();
    });
  }).catch(() => {});
};
// // 设置状态
// const changeFBS_CustomerStatus = async (row: any) => {
//   await fBS_CusExtendApi.setStatus({ id: row.id, status: row.status }).then(() => ElMessage.success('状态设置成功'));
// };
// 导出数据
const exportFBS_CustomerCommand = async (command: string) => {
  try {
    state.exportLoading = true;
    if (command === 'select') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) });
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    } else if (command === 'current') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams);
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    } else if (command === 'all') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 });
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    }
  } finally {
    state.exportLoading = false;
  }
}
handleQuery();
//父级传递来的函数,用于回调
const emit = defineEmits(["reloadTable"]);
const ruleFormRef = ref();
// 页面加载时
onMounted(async () => {
});
// 打开弹窗
const openDialog = async (row: any, title: string) => {
    state.title = title;
    let res = JSON.parse(JSON.stringify(row))
    state.tableData = res.custormerUsers
    state.listRow = row
    // state.ruleForm = row.id ? await fBS_CustomerApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row));
    state.showDialog = true;
};
// 关闭弹窗
const closeDialog = () => {
    emit("reloadTable");
    state.showDialog = false;
};
// 提交
const submit = async () => {
    closeDialog();
};
//将属性或者函数暴露给父组件
defineExpose({ openDialog });
</script>
<template>
    <div class="fBS_Customer-container">
        <el-dialog v-model="state.showDialog" :width="1200" draggable @close="closeDialog" :close-on-click-modal="false">
            <template #header>
                <div style="color: #fff">
                    <span>{{ state.title }}</span>
                </div>
            </template>
            <div class="flex-end">
                <el-button @click="editDialogRef.openDialog(null, '新增用户',state.listRow)" v-auth="'fBS_Customer:add'" type="primary" v-reclick="1000">新建</el-button>
            </div>
            <el-card class="full-table" shadow="hover" style="margin-top: 5px">
                <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }"
                    style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id"
                    @sort-change="sortChange" border>
                    <el-table-column type="selection" width="40" align="center"
                        v-if="false" />
                    <!-- <el-table-column type="index" label="序号" width="55" align="center" /> -->
                    <el-table-column prop='name' label='姓名' sortable='custom' show-overflow-tooltip />
                    <el-table-column prop='isManager' label='角色' sortable='custom' show-overflow-tooltip >
                    <template #default="scope">
                        <el-switch
                        disabled="disabled"
                        v-model="scope.row.isManager"
                        :active-value='true'
                        :inactive-value='false'
                        active-text="管理员"
                        inactive-text="员工"
                        size="small"
                        inline-prompt
                        />
                    </template>
                        </el-table-column>
                    <el-table-column prop='phoneNumber' label='手机号码' show-overflow-tooltip />
                    <el-table-column prop='isEn' label='是否启用' v-auth="'fBS_Customer:setStatus'" show-overflow-tooltip>
                        <template #default="scope">
                            <el-tag :type="scope.row.isEn?'primary':'error'">{{ scope.row.isEn?'是':'否' }}</el-tag>
                        </template>
                    </el-table-column>
                    <el-table-column prop='remark' label='备注' show-overflow-tooltip />
                    <el-table-column label="操作" width="70" align="center" fixed="right" show-overflow-tooltip
                        v-if="auth('fBS_Customer:update') || auth('fBS_Customer:delete')">
                        <template #default="scope">
                            <el-button icon="ele-Edit" size="small" text type="primary"
                                @click="editDialogRef.openDialog(scope.row, '编辑用户信息')" v-auth="'fBS_Customer:update'">
                            </el-button>
                            <el-button icon="ele-Delete" size="small" text type="primary"
                                @click="delFBS_Customer(scope.row)" v-auth="'fBS_Customer:delete'"> </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <ImportData ref="importDataRef" :import="fBS_CustomerApi.importData"
                    :download="fBS_CustomerApi.downloadTemplate" v-auth="'fBS_Customer:import'"
                    @refresh="handleQuery" />
                <printDialog ref="printDialogRef" :title="'打印客户表'" @reloadTable="handleQuery" />
                <editDialog ref="editDialogRef" @reloadTable="handleQuery" />
            </el-card>
            <template #footer>
                <span class="dialog-footer">
                    <el-button @click="submit">取 消</el-button>
                    <el-button @click="submit" type="primary" v-reclick="1000">确 定</el-button>
                </span>
            </template>
        </el-dialog>
    </div>
</template>
<style lang="scss" scoped>
:deep(.el-select),
:deep(.el-input-number) {
    width: 100%;
}
</style>
Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue
New file
@@ -0,0 +1,310 @@
<script lang="ts" setup name="fBS_Customer">
import { ref, reactive, onMounted } from "vue";
import { auth } from '/@/utils/authFunction';
import { ElMessageBox, ElMessage } from "element-plus";
import { downloadStreamFile } from "/@/utils/download";
import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer';
import editDialog from '/@/views/Customer/fBS_Customer/component/editDialog.vue'
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import ImportData from "/@/components/table/importData.vue";
const fBS_CustomerApi = useFBS_CustomerApi();
const printDialogRef = ref();
const editDialogRef = ref();
const importDataRef = ref();
const state = reactive({
  exportLoading: false,
  tableLoading: false,
  stores: {},
  showAdvanceQueryUI: false,
  dropdownData: {} as any,
  selectData: [] as any[],
  tableQueryParams: {} as any,
  tableParams: {
    page: 1,
    pageSize: 20,
    total: 0,
    field: 'createTime', // 默认的排序字段
    order: 'descending', // 排序方向
    descStr: 'descending', // 降序排序的关键字符
  },
  tableData: [],
});
// 页面加载时
onMounted(async () => {
});
// 查询操作
const handleQuery = async (params: any = {}) => {
  state.tableLoading = true;
  state.tableParams = Object.assign(state.tableParams, params);
  const result = await fBS_CustomerApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result);
  state.tableParams.total = result?.total;
  state.tableData = result?.items ?? [];
  state.tableLoading = false;
};
// 列排序
const sortChange = async (column: any) => {
  state.tableParams.field = column.prop;
  state.tableParams.order = column.order;
  await handleQuery();
};
// 删除
const delFBS_Customer = (row: any) => {
  ElMessageBox.confirm(`确定要删除吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(async () => {
    await fBS_CustomerApi.delete({ id: row.id });
    handleQuery();
    ElMessage.success("删除成功");
  }).catch(() => {});
};
// 批量删除
const batchDelFBS_Customer = () => {
  ElMessageBox.confirm(`确定要删除${state.selectData.length}条记录吗?`, "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(async () => {
    await fBS_CustomerApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => {
      ElMessage.success(`成功批量删除${res.data.result}条记录`);
      handleQuery();
    });
  }).catch(() => {});
};
// 设置状态
const changeFBS_CustomerStatus = async (row: any) => {
  await fBS_CustomerApi.setStatus({ id: row.id, status: row.status }).then(() => ElMessage.success('状态设置成功'));
};
// 导出数据
const exportFBS_CustomerCommand = async (command: string) => {
  try {
    state.exportLoading = true;
    if (command === 'select') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) });
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    } else if (command === 'current') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams);
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    } else if (command === 'all') {
      const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 });
      await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res));
    }
  } finally {
    state.exportLoading = false;
  }
}
handleQuery();
</script>
<template>
  <div class="fBS_Customer-container" v-loading="state.exportLoading">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="90">
        <el-row>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
            <el-form-item label="关键字">
              <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="请输入模糊查询关键字"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="账号">
              <el-input v-model="state.tableQueryParams.account" clearable placeholder="请输入账号"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="真实姓名">
              <el-input v-model="state.tableQueryParams.realName" clearable placeholder="请输入真实姓名"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="昵称">
              <el-input v-model="state.tableQueryParams.nickName" clearable placeholder="请输入昵称"/>
            </el-form-item>
          </el-col>
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="证件类型">
              <g-sys-dict v-model="state.tableQueryParams.cardType" code="CardTypeEnum" render-as="select" placeholder="请选择证件类型" clearable filterable />
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="身份证">
              <el-input v-model="state.tableQueryParams.idCardPath" clearable placeholder="请输入身份证"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="文化程度">
              <g-sys-dict v-model="state.tableQueryParams.cultureLevel" code="CultureLevelEnum" render-as="select" placeholder="请选择文化程度" clearable filterable />
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="毕业院校">
              <el-input v-model="state.tableQueryParams.college" clearable placeholder="请输入毕业院校"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="办公电话">
              <el-input v-model="state.tableQueryParams.officePhone" clearable placeholder="请输入办公电话"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="紧急联系人">
              <el-input v-model="state.tableQueryParams.emergencyContact" clearable placeholder="请输入紧急联系人"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="紧急联系人电话">
              <el-input v-model="state.tableQueryParams.emergencyPhone" clearable placeholder="请输入紧急联系人电话"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="紧急联系人地址">
              <el-input v-model="state.tableQueryParams.emergencyAddress" clearable placeholder="请输入紧急联系人地址"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="个人简介">
              <el-input v-model="state.tableQueryParams.introduction" clearable placeholder="请输入个人简介"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="排序">
              <el-input-number v-model="state.tableQueryParams.orderNo"  clearable placeholder="请输入排序"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="状态">
              <g-sys-dict v-model="state.tableQueryParams.status" code="StatusEnum" render-as="select" placeholder="请选择状态" clearable filterable />
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="备注">
              <el-input v-model="state.tableQueryParams.remark" clearable placeholder="请输入备注"/>
            </el-form-item>
          </el-col>
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="职级">
              <el-input v-model="state.tableQueryParams.posLevel" clearable placeholder="请输入职级"/>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="职称">
              <el-input v-model="state.tableQueryParams.posTitle" clearable placeholder="请输入职称"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
            <el-form-item >
              <el-button-group style="display: flex; align-items: center;">
                <el-button type="primary"  icon="ele-Search" @click="handleQuery" v-auth="'fBS_Customer:page'" v-reclick="1000"> 查询 </el-button>
                <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 重置 </el-button>
                <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
                <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
                <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_Customer" :disabled="state.selectData.length == 0" v-auth="'fBS_Customer:batchDelete'"> 删除 </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '新增客户表')" v-auth="'fBS_Customer:add'"> 新增 </el-button>
                <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CustomerCommand">
                  <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_Customer:export'"> 导出 </el-button>
                  <template #dropdown>
                    <el-dropdown-menu>
                      <el-dropdown-item command="select" :disabled="state.selectData.length == 0">导出选中</el-dropdown-item>
                      <el-dropdown-item command="current">导出本页</el-dropdown-item>
                      <el-dropdown-item command="all">导出全部</el-dropdown-item>
                    </el-dropdown-menu>
                  </template>
                </el-dropdown>
                <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_Customer:import'"> 导入 </el-button>
              </el-button-group>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </el-card>
    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
      <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border>
        <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_Customer:batchDelete') || auth('fBS_Customer:export')" />
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <el-table-column prop='account' label='账号' sortable='custom' show-overflow-tooltip />
        <!-- <el-table-column prop='password' label='密码' show-overflow-tooltip /> -->
        <el-table-column prop='realName' label='真实姓名' sortable='custom' show-overflow-tooltip />
        <el-table-column prop='nickName' label='昵称' sortable='custom' show-overflow-tooltip />
        <!-- <el-table-column prop='avatar' label='头像' show-overflow-tooltip /> -->
        <!-- <el-table-column prop='sex' label='性别' show-overflow-tooltip>
          <template #default="scope">
            <g-sys-dict v-model="scope.row.sex" code="GenderEnum" />
          </template>
        </el-table-column>
        <el-table-column prop='age' label='年龄' show-overflow-tooltip />
        <el-table-column prop='birthday' label='出生日期' show-overflow-tooltip />
        <el-table-column prop='nation' label='民族' show-overflow-tooltip /> -->
        <el-table-column prop='phone' label='手机号码' show-overflow-tooltip />
        <!-- <el-table-column prop='cardType' label='证件类型' show-overflow-tooltip>
          <template #default="scope">
            <g-sys-dict v-model="scope.row.cardType" code="CardTypeEnum" />
          </template>
        </el-table-column> -->
        <!-- <el-table-column prop='idCardNum' label='身份证号' show-overflow-tooltip />
        <el-table-column prop='idCardPath' label='身份证' show-overflow-tooltip />
        <el-table-column prop='email' label='邮箱' show-overflow-tooltip />
        <el-table-column prop='address' label='地址' show-overflow-tooltip />
        <el-table-column prop='cultureLevel' label='文化程度' show-overflow-tooltip>
          <template #default="scope">
            <g-sys-dict v-model="scope.row.cultureLevel" code="CultureLevelEnum" />
          </template>
        </el-table-column> -->
        <!-- <el-table-column prop='politicalOutlook' label='政治面貌' show-overflow-tooltip /> -->
        <!-- <el-table-column prop='college' label='毕业院校' show-overflow-tooltip />
        <el-table-column prop='officePhone' label='办公电话' show-overflow-tooltip />
        <el-table-column prop='emergencyContact' label='紧急联系人' show-overflow-tooltip />
        <el-table-column prop='emergencyPhone' label='紧急联系人电话' show-overflow-tooltip />
        <el-table-column prop='emergencyAddress' label='紧急联系人地址' show-overflow-tooltip />
        <el-table-column prop='introduction' label='个人简介' show-overflow-tooltip />
        <el-table-column prop='orderNo' label='排序' show-overflow-tooltip /> -->
        <el-table-column prop='status' label='状态' v-auth="'fBS_Customer:setStatus'" show-overflow-tooltip>
          <template #default="scope">
            <el-switch v-model="scope.row.status" :active-value="1" :inactive-value="2" size="small" @change="changeFBS_CustomerStatus(scope.row)" />
          </template>
        </el-table-column>
        <el-table-column prop='remark' label='备注' show-overflow-tooltip />
        <!-- <el-table-column prop='posLevel' label='职级' show-overflow-tooltip />
        <el-table-column prop='posTitle' label='职称' show-overflow-tooltip /> -->
        <!-- <el-table-column label="修改记录" width="100" align="center" show-overflow-tooltip>
          <template #default="scope">
            <ModifyRecord :data="scope.row" />
          </template>
        </el-table-column> -->
        <el-table-column label="操作" width="70" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_Customer:update') || auth('fBS_Customer:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '编辑客户表')" v-auth="'fBS_Customer:update'">  </el-button>
            <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_Customer(scope.row)" v-auth="'fBS_Customer:delete'">  </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
              v-model:currentPage="state.tableParams.page"
              v-model:page-size="state.tableParams.pageSize"
              @size-change="(val: any) => handleQuery({ pageSize: val })"
              @current-change="(val: any) => handleQuery({ page: val })"
              layout="total, sizes, prev, pager, next, jumper"
              :page-sizes="[10, 20, 50, 100, 200, 500]"
              :total="state.tableParams.total"
              size="small"
              background />
      <ImportData ref="importDataRef" :import="fBS_CustomerApi.importData" :download="fBS_CustomerApi.downloadTemplate" v-auth="'fBS_Customer:import'" @refresh="handleQuery"/>
      <printDialog ref="printDialogRef" :title="'打印客户表'" @reloadTable="handleQuery" />
      <editDialog ref="editDialogRef" @reloadTable="handleQuery" />
    </el-card>
  </div>
</template>
<style scoped>
:deep(.el-input), :deep(.el-select), :deep(.el-input-number) {
  width: 100%;
}
</style>
Web/src/views/Customer/fBS_CusExtend/index.vue
@@ -5,6 +5,7 @@
import { downloadStreamFile } from "/@/utils/download";
import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend';
import editDialog from '/@/views/Customer/fBS_CusExtend/component/editDialog.vue'
import userManagement from '/@/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue'
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import ImportData from "/@/components/table/importData.vue";
@@ -16,6 +17,8 @@
const fBS_ExRoleApi = useFBS_ExRoleApi();
const printDialogRef = ref();
const editDialogRef = ref();
const userManagementRef = ref();
const dialogVisible = ref(false);
const importDataRef = ref();
const state = reactive({
  exportLoading: false,
@@ -129,6 +132,11 @@
    state.exportLoading = false;
  }
}
const openUser=()=>{
  console.log(dialogVisible.value,'dialogVisible.value');
  dialogVisible.value = true
}
handleQuery();
</script>
@@ -147,7 +155,7 @@
              <el-input v-model="state.tableQueryParams.customerId" clearable placeholder="请输入用户ID"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="企业类型 ">
              <el-input v-model="state.tableQueryParams.enterpriseType" clearable placeholder="请输入企业类型 "/>
            </el-form-item>
@@ -156,7 +164,7 @@
            <el-form-item label="交易主体">
              <el-input v-model="state.tableQueryParams.transactionCode" clearable placeholder="请输入交易主体"/>
            </el-form-item>
          </el-col>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="企业名称">
              <el-input v-model="state.tableQueryParams.enterpriseName" clearable placeholder="请输入企业名称"/>
@@ -220,7 +228,7 @@
                <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
                <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
                <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_CusExtend" :disabled="state.selectData.length == 0" v-auth="'fBS_CusExtend:batchDelete'"> 删除 </el-button>
                <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '新增企业资料')" v-auth="'fBS_CusExtend:add'"> 新增 </el-button>
                <!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '新增企业资料')" v-auth="'fBS_CusExtend:add'"> 新增 </el-button> -->
                <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand">
                  <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_CusExtend:export'"> 导出 </el-button>
                  <template #dropdown>
@@ -243,14 +251,14 @@
        <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_CusExtend:batchDelete') || auth('fBS_CusExtend:export')" />
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <!-- <el-table-column prop='customerId' label='用户ID' show-overflow-tooltip /> -->
        <el-table-column prop='enterpriseType' label='企业类型 ' show-overflow-tooltip />
        <!-- <el-table-column prop='enterpriseType' label='企业类型 ' show-overflow-tooltip />
        <el-table-column prop='transactionCode' label='交易主体' show-overflow-tooltip width="100">
          <template v-slot="scope">
            <span v-for="(item, index) in state.roleList" :key="index">
          <span v-if="item.code == scope.row.transactionCode">{{ item.name }}</span>
        </span>
          </template>
        </el-table-column>
        </el-table-column> -->
        <el-table-column prop='businessLicense' label='营业执照' show-overflow-tooltip width="120">
          <template v-slot="scope">
             <el-image
@@ -303,37 +311,24 @@
        <el-table-column prop='operatorPhone' label='业务经办人电话' show-overflow-tooltip width="120"/>
        <!-- <el-table-column prop='bankName' label='开户行名称' show-overflow-tooltip /> -->
        <!-- <el-table-column prop='bankAccount' label='开户行账号' show-overflow-tooltip width="120"/> -->
        <el-table-column prop='steps' label='审核步骤' show-overflow-tooltip>
        <!-- <el-table-column prop='steps' label='审核步骤' show-overflow-tooltip>
          <template v-slot="scope">
            <span v-for="(item, index) in state.shenheList" :key="index">
              <el-tag v-if="item.value == scope.row.steps">{{ item.description }}</el-tag>
            </span>
          </template>
          <!-- <template #default="scope">
            <el-tag v-if="scope.row.steps==0" type='warning'>
              待审核
            </el-tag>
            <el-tag v-else-if="scope.row.steps==1" type='primary'>
              更改
            </el-tag>
            <el-tag v-else-if="scope.row.steps==2" type='success'>
              通过
            </el-tag>
            <el-tag v-else-if="scope.row.steps==3" type='error'>
              未通过
            </el-tag>
          </template> -->
        </el-table-column>
        </el-table-column> -->
        <!-- <el-table-column label="修改记录" width="100" align="center" show-overflow-tooltip>
          <template #default="scope">
            <ModifyRecord :data="scope.row" />
          </template>
        </el-table-column> -->
        <el-table-column label="操作" width="70" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_CusExtend:update') || auth('fBS_CusExtend:delete')">
        <el-table-column label="操作" width="100" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_CusExtend:update') || auth('fBS_CusExtend:delete')">
          <template #default="scope">
            <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '编辑企业资料', state.qiyeList,state.roleList)" v-auth="'fBS_CusExtend:update'">  </el-button>
            <!-- <el-button icon="ele-Check" size="small" text type="primary" @click="editDialogRefApplyRef.openDialog(scope.row, '审核企业资料', state.qiyeList,state.roleList,state.shenheList)" v-auth="'fBS_CusExtend:update'">  </el-button> -->
            <el-button icon="ele-User" size="small" text type="primary" @click="userManagementRef.openDialog(scope.row, '管理企业用户', state.qiyeList,state.roleList,state.shenheList)" v-auth="'fBS_CusExtend:update'">  </el-button>
            <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_CusExtend(scope.row)" v-auth="'fBS_CusExtend:delete'">  </el-button>
          </template>
        </el-table-column>
@@ -351,7 +346,16 @@
      <ImportData ref="importDataRef" :import="fBS_CusExtendApi.importData" :download="fBS_CusExtendApi.downloadTemplate" v-auth="'fBS_CusExtend:import'" @refresh="handleQuery"/>
      <printDialog ref="printDialogRef" :title="'打印企业资料'" @reloadTable="handleQuery" />
      <editDialog ref="editDialogRef" @reloadTable="handleQuery" />
      <userManagement ref="userManagementRef" @reloadTable="handleQuery"/>
    </el-card>
    <el-dialog title="管理企业用户" :visible.sync="dialogVisible" width="width">
          <!-- <userManagement ref="userManagementRef"/> -->
          <div slot="footer">
              <el-button @click="dialogVisible = false">取 消</el-button>
              <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
          </div>
      </el-dialog>
  </div>
</template>
<style scoped>
Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue
File was renamed from Web/src/views/Customer/fBS_CusExtendExamine/component/editDialog.vue
@@ -1,5 +1,6 @@
<script lang="ts" name="fBS_CusExtend" setup>
import { ref, reactive, onMounted } from "vue";
import { ElMessage } from "element-plus";
import { formatDate } from '/@/utils/formatTime';
import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend';
@@ -15,9 +16,10 @@
    stores: {},
    dropdownData: {} as any,
    enterpriseList:[],
    roleList:[],
    shenheList:[],
    srcList:[]
    roleList:[] as any[],
    shenheList:[] as any[],
    srcList:[],
    listRow:{}
});
// 页面加载时
@@ -32,6 +34,8 @@
    state.title = title;
    row = row ?? {  };
    state.ruleForm = row.id ? await fBS_CusExtendApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row));
    state.ruleForm.exRole = row.exRole
    state.listRow = row
    // state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(",");
    state.showDialog = true;
};
@@ -44,8 +48,19 @@
// 提交
const submit = async (val:any) => {
    let values = state.ruleForm;
    await fBS_CusExtendApi.changeSteps(values.id,val);
    // let values = state.ruleForm;
    let res = await fBS_CusExtendApi.changeSteps(state.listRow.coutomerExRoleId,val);
    if(res.data.code==200){
        ElMessage({
            message: `审核成功!`,
            type: "success",
        });
    }else{
        ElMessage({
            message: res.message||`审核失败!`,
            type: "error",
        });
    }
    closeDialog();
};
const showPreview = ref(false)
@@ -89,10 +104,10 @@
                    <template #label>
                    <div class="cell-item">交易主体</div>
                    </template>
                    <!-- {{ state.ruleForm.transactionName }} -->
                    <span v-for="(item, index) in state.roleList" :key="index">
                                            <span v-if="item.code == state.ruleForm.transactionCode">{{ item.name }}</span>
                                            </span>
                    {{ state.ruleForm.exRole.name}}
                    <!-- <span v-for="(item, index) in state.roleList" :key="index">
                        <span v-if="item.code == state.ruleForm.transactionCode">{{ item.name }}</span>
                    </span> -->
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
@@ -153,6 +168,26 @@
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">开户银行</div>
                    </template>
                    {{ state.ruleForm.bankName }}
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">银行账号</div>
                    </template>
                    {{ state.ruleForm.bankAccount }}
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">银行收款二维码</div>
                    </template>
                    <span @click="showImg('bankAccountIMG')">
                    <el-link type="primary" underline>查看银行收款二维码</el-link>
                    </span>
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">法定代表人</div>
                    </template>
                    {{ state.ruleForm.legalRepresentativeName }}
@@ -199,18 +234,7 @@
                    </template>
                    {{ state.ruleForm.operatorPhone }}
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">开户银行</div>
                    </template>
                    {{ state.ruleForm.bankName }}
                </el-descriptions-item>
                <el-descriptions-item>
                    <template #label>
                    <div class="cell-item">银行账号</div>
                    </template>
                    {{ state.ruleForm.bankAccount }}
                </el-descriptions-item>
                </el-descriptions>
                
            <template #footer>
Web/src/views/Customer/fBS_CusExtendExamine/index.vue
@@ -4,7 +4,7 @@
import { ElMessageBox, ElMessage } from "element-plus";
import { downloadStreamFile } from "/@/utils/download";
import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend';
import editDialog from '/@/views/Customer/fBS_CusExtendExamine/component/editDialog.vue'
import editDialog from './component/editDialogApply.vue'
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import ImportData from "/@/components/table/importData.vue";
@@ -64,7 +64,7 @@
const handleQuery = async (params: any = {}) => {
  state.tableLoading = true;
  state.tableParams = Object.assign(state.tableParams, params);
  const result = await fBS_CusExtendApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result);
  const result = await fBS_CusExtendApi.getReviewPage(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result);
  state.tableParams.total = result?.total;
  state.tableData = result?.items ?? [];
  state.tableLoading = false;
@@ -133,20 +133,20 @@
</script>
<template>
  <div class="fBS_CusExtend-container" v-loading="state.exportLoading">
    <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
    <!-- <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
      <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="120">
        <el-row>
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10">
            <el-form-item label="关键字">
              <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="请输入模糊查询关键字"/>
            </el-form-item>
          </el-col>
          </el-col> -->
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="用户ID">
              <el-input v-model="state.tableQueryParams.customerId" clearable placeholder="请输入用户ID"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="企业类型 ">
              <el-input v-model="state.tableQueryParams.enterpriseType" clearable placeholder="请输入企业类型 "/>
            </el-form-item>
@@ -165,7 +165,7 @@
            <el-form-item label="统一社会信用代码">
              <el-input v-model="state.tableQueryParams.unifiedSocialCreditCode" clearable placeholder="请输入统一社会信用代码"/>
            </el-form-item>
          </el-col>
          </el-col> -->
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="注册资金">
              <el-input v-model="state.tableQueryParams.registeredCapital" clearable placeholder="请输入注册资金"/>
@@ -181,11 +181,11 @@
              <el-input v-model="state.tableQueryParams.residence" clearable placeholder="请输入企业住所"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="企业联系电话">
              <el-input v-model="state.tableQueryParams.enterprisePhone" clearable placeholder="请输入企业联系电话"/>
            </el-form-item>
          </el-col>
          </el-col> -->
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="企业成立时间">
              <el-date-picker type="daterange" v-model="state.tableQueryParams.establishmentTimeRange"  value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
@@ -201,26 +201,26 @@
              <el-input v-model="state.tableQueryParams.enterpriseEmail" clearable placeholder="请输入企业邮箱"/>
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="业务经办人">
              <el-input v-model="state.tableQueryParams.operatorName" clearable placeholder="请输入业务经办人"/>
            </el-form-item>
          </el-col>
          </el-col> -->
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI">
            <el-form-item label="审核步骤">
              <g-sys-dict v-model="state.tableQueryParams.steps" code="CusExtendStep" render-as="select" placeholder="请选择审核步骤" clearable filterable />
            </el-form-item>
          </el-col> -->
          <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10">
          <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10">
            <el-form-item >
              <el-button-group style="display: flex; align-items: center;">
                <el-button type="primary"  icon="ele-Search" @click="handleQuery" v-auth="'fBS_CusExtend:page'" v-reclick="1000"> 查询 </el-button>
                <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 重置 </el-button>
                <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
                <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
                <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button> -->
                <!-- <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_CusExtend" :disabled="state.selectData.length == 0" v-auth="'fBS_CusExtend:batchDelete'"> 删除 </el-button> -->
                <!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '新增企业资料')" v-auth="'fBS_CusExtend:add'"> 新增 </el-button> -->
                <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand">
                <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand">
                  <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_CusExtend:export'"> 导出 </el-button>
                  <template #dropdown>
                    <el-dropdown-menu>
@@ -233,21 +233,17 @@
                <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_CusExtend:import'"> 导入 </el-button>
              </el-button-group>
            </el-form-item>
          </el-col>
        </el-row>
          </el-col> -->
        <!-- </el-row>
      </el-form>
    </el-card>
    </el-card> -->
    <el-card class="full-table" shadow="hover" style="margin-top: 5px">
      <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" fit style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border>
        <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_CusExtend:batchDelete') || auth('fBS_CusExtend:export')" />
        <el-table-column type="index" label="序号" width="55" align="center"/>
        <!-- <el-table-column prop='customerId' label='用户ID' show-overflow-tooltip /> -->
        <el-table-column prop='enterpriseType' label='企业类型 ' show-overflow-tooltip />
        <el-table-column prop='transactionCode' label='交易主体' show-overflow-tooltip width="100">
          <template v-slot="scope">
            <span v-for="(item, index) in state.roleList" :key="index">
          <span v-if="item.code == scope.row.transactionCode">{{ item.name }}</span>
        </span>
          <template v-slot="scope"><span >{{ scope.row.exRole.name }}</span>
          </template>
        </el-table-column>
        <el-table-column prop='businessLicense' label='营业执照' show-overflow-tooltip width="120">