Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
已删除4个文件
已修改23个文件
已添加568个文件
| | |
| | | [ |
| | | { |
| | | "Id": 1, |
| | | "DispatchId": null, |
| | | "DeviceCode": "SC01", |
| | | "DeviceName": "1å·å åæº", |
| | | "DeviceType": "CommonStackerCrane", |
| | |
| | | }, |
| | | { |
| | | "Id": 3, |
| | | "DispatchId": null, |
| | | "DeviceCode": "1002", |
| | | "DeviceName": "è¾é线", |
| | | "DeviceType": "CommonConveyorLine", |
| | |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | Console.Out.WriteLine(DateTime.Now); |
| | | //Console.Out.WriteLine(DateTime.Now); |
| | | try |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); |
| | |
| | | } |
| | | finally |
| | | { |
| | | Console.Out.WriteLine(DateTime.Now); |
| | | //Console.Out.WriteLine(DateTime.Now); |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Quartz; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_TaskInfoService; |
| | | using WIDESEAWCS_Tasks.HoisterJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class CommonHoisterJob : JobBase, IJob |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly IRouterService _routerService; |
| | | |
| | | public CommonHoisterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _taskRepository = taskRepository; |
| | | _routerService = routerService; |
| | | } |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | try |
| | | { |
| | | OtherDevice Hoister = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams"); |
| | | if (Hoister != null) |
| | | { |
| | | foreach (var HoisterJob in Hoister.DeviceProDTOs.GroupBy(x => x.DeviceChildCode)) |
| | | { |
| | | var Tray = Hoister.GetValue<HoisterDBName, bool>(HoisterDBName.Tray, HoisterJob.Key); |
| | | var Leisure = Hoister.GetValue<HoisterDBName, bool>(HoisterDBName.Leisure, HoisterJob.Key); |
| | | if (Tray) |
| | | { |
| | | #region æ¥è¯¢ç»çä¿¡æ¯ |
| | | //åWMSç³è¯·æ¥è¯¢å½åæåæºå£çç»çä¿¡æ¯ï¼åå¨ç»çä¿¡æ¯è¿åå
¥åºä»»å¡å¹¶ååºå
¥åºç³è¯· |
| | | var task = _taskService.QueryExecutingConveyorLineTask(1, HoisterJob.Key); |
| | | if (Leisure && task != null) |
| | | Hoister.SetValue(HoisterDBName.RequestIn, true, HoisterJob.Key); |
| | | |
| | | #endregion |
| | | var Inbounding = Hoister.GetValue<HoisterDBName, bool>(HoisterDBName.Inbounding, HoisterJob.Key); |
| | | if (Inbounding && task != null) |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.Line_InFinish; |
| | | task.NextAddress = "001-003-001"; |
| | | _taskService.UpdateData(task); |
| | | //æ´æ°ä»»å¡ç¶æå¹¶åæ¶å
¥åºç³è¯· |
| | | Hoister.SetValue(HoisterDBName.RequestIn, false, HoisterJob.Key); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //æ¥è¯¢åºåºä»»å¡,åå¨åºåºä»»å¡ååºåºåºç³è¯· |
| | | var task = _taskService.QueryExecutingConveyorLineTask(2, HoisterJob.Key); |
| | | if (task != null && Leisure) |
| | | Hoister.SetValue(HoisterDBName.RequestOut, true, HoisterJob.Key); |
| | | var Outbounding = Hoister.GetValue<HoisterDBName, bool>(HoisterDBName.Outbounding, HoisterJob.Key); |
| | | if (Outbounding && task != null) |
| | | { |
| | | task.NextAddress = HoisterJob.Key; |
| | | task.TargetAddress = HoisterJob.Key; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | _taskService.UpdateData(task); |
| | | //æ´æ°ä»»å¡ç¶æå¹¶åæ¶åºåºç³è¯· |
| | | Hoister.SetValue(HoisterDBName.RequestOut, false, HoisterJob.Key); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEAWCS_Tasks.HoisterJob |
| | | { |
| | | public enum HoisterDBName |
| | | { |
| | | /// <summary> |
| | | /// æçå°ä½ |
| | | /// </summary> |
| | | Tray, |
| | | /// <summary> |
| | | /// å
¥åºæ§è¡ä¸ |
| | | /// </summary> |
| | | Inbounding, |
| | | /// <summary> |
| | | /// ç©ºé² |
| | | /// </summary> |
| | | Leisure, |
| | | /// <summary> |
| | | /// åºåºæ§è¡ä¸ |
| | | /// </summary> |
| | | Outbounding, |
| | | |
| | | |
| | | /// <summary> |
| | | /// 请æ±å
¥åº |
| | | /// </summary> |
| | | RequestIn, |
| | | /// <summary> |
| | | /// 请æ±åºåº |
| | | /// </summary> |
| | | RequestOut |
| | | } |
| | | } |
| | |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_Tasks.HoisterJob; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | |
| | | else |
| | | { |
| | | task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode); |
| | | if (task == null) |
| | | { |
| | | task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode); |
| | | if (device != null) |
| | | { |
| | | if (device.DeviceCode == "YMCTSJ" || task.Roadway == "CSJCSC01") return task; |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)device; |
| | | if (conveyorLine.IsOccupied(router.ChildPosi))//åºåºç«å°æªè¢«å ç¨ |
| | | { |
| | |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="WIDESEAWCS_QuartzJob" Version="2.1.0" /> |
| | | <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.0" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | { |
| | | [ModelValidate] |
| | | public class MaterielInfo |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string From { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string DateTime { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | [PropertyValidate("ç©æå表", NotNullAndEmpty = true)] |
| | | public MaterielInfoDTO Content { get; set; } |
| | | } |
| | | [ModelValidate] |
| | | public class MaterielInfoDTO |
| | | { |
| | | public string Code { get; set; } |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | { |
| | | [ModelValidate] |
| | | public class Supplier |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string From { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string DateTime { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | [PropertyValidate("ç©æå表", NotNullAndEmpty = true)] |
| | | public SupplierDTO Content { get; set; } |
| | | } |
| | | [ModelValidate] |
| | | public class SupplierDTO |
| | | { |
| | | public string Code { get; set; } |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_DTO.Basic; |
| | | |
| | | namespace WIDESEA_DTO.ERP |
| | | { |
| | | [ModelValidate] |
| | | public class ErpOutOrder |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string From { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string DateTime { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | [PropertyValidate("ç©æå表", NotNullAndEmpty = true)] |
| | | public ErpOutOrderDTO Content { get; set; } |
| | | } |
| | | [ModelValidate] |
| | | public class ErpOutOrderDTO |
| | | { |
| | | public int Way { get; set; } |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection.Metadata; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | |
| | | |
| | | namespace WIDESEA_DTO |
| | | { |
| | | [ModelValidate] |
| | | public class Root |
| | | { |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string From { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | public string DateTime { get; set; } |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | [PropertyValidate("ç©æå表", NotNullAndEmpty = true)] |
| | | public PurchaseOrderModel Content { get; set; } |
| | | } |
| | | /// <summary> |
| | | /// éè´å模å |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// éè´åæç»æ¨¡å |
| | | /// </summary> |
| | | [ModelValidate] |
| | | public class PurchaseOrderDetailModel |
| | | { |
| | | /// <summary> |
| | |
| | | /// ä»åºç¼å· |
| | | /// </summary> |
| | | [PropertyValidate("ä»åºç¼å·", NotNullAndEmpty = true)] |
| | | public int WaId { get; set; } |
| | | public string WaId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ°é |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | |
| | | public interface IInboundOrderDetailService : IService<Dt_InboundOrderDetail> |
| | | { |
| | | IInboundOrderDetailRepository Repository { get; } |
| | | |
| | | WebResponseContent GetInboundOrderDetails(SaveModel saveModel); |
| | | } |
| | | } |
| | |
| | | { |
| | | IInboundOrderRepository Repository { get; } |
| | | |
| | | WebResponseContent GetInboundOrders(SaveModel saveModel); |
| | | WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, string serNum); |
| | | |
| | | WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, List<string> serNums); |
| | |
| | | public interface IReceiveOrderDetailService : IService<Dt_ReceiveOrderDetail> |
| | | { |
| | | WebResponseContent AddReceiveOrderDetail(string serNum, string orderNo); |
| | | WebResponseContent GetReceiveOrderInfos(SaveModel saveModel); |
| | | } |
| | | } |
| | |
| | | /// <param name="orderId"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent FeedbackReceiveOrder(int orderId); |
| | | WebResponseContent GetReceiveOrders(SaveModel saveModel); |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using Org.BouncyCastle.Crypto; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | |
| | | public InboundOrderDetailService(IInboundOrderDetailRepository BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | public WebResponseContent GetInboundOrderDetails(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | string orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | Dt_InboundOrder inboundOrder = Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == orderNo).Includes(x => x.Details).First(); |
| | | content.OK(data: inboundOrder.Details); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| | |
| | | _recordService = recordService; |
| | | _invokeERPService = invokeERPService; |
| | | } |
| | | public WebResponseContent GetInboundOrders(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | int pageNo = saveModel.MainData["pageNo"].ObjToInt(); |
| | | string orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | List<Dt_InboundOrder> dt_ReceiveOrders = new List<Dt_InboundOrder>(); |
| | | if (string.IsNullOrEmpty(orderNo)) |
| | | { |
| | | dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderStatus < InOrderStatusEnum.å
¥åºå®æ.ObjToInt()).ToPageList(pageNo, 5); |
| | | } |
| | | else |
| | | { |
| | | dt_ReceiveOrders = Db.Queryable<Dt_InboundOrder>().Where(x => (x.InboundOrderNo.Contains(orderNo)) && x.OrderStatus < InOrderStatusEnum.å
¥åºå®æ.ObjToInt()).ToPageList(pageNo, 5); |
| | | } |
| | | |
| | | content.OK(data: dt_ReceiveOrders); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | public WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, string serNum) |
| | | { |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_BasicRepository; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_InboundRepository; |
| | |
| | | { |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IPurchaseOrderDetailRepository _purchaseOrderDetailRepository; |
| | | private readonly IBasicRepository _basicRepository; |
| | | |
| | | public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | public PurchaseOrderService(IPurchaseOrderRepository BaseDal, IPurchaseOrderDetailRepository purchaseOrderDetailRepository, IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository) : base(BaseDal) |
| | | { |
| | | _purchaseOrderDetailRepository = purchaseOrderDetailRepository; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _basicRepository = basicRepository; |
| | | } |
| | | |
| | | public WebResponseContent ReceivePurchaseOrder(PurchaseOrderModel model) |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"éè´åå·éå¤"); |
| | | } |
| | | |
| | | List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>(); |
| | | List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(); |
| | | List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>(); |
| | | foreach (var item in model.MList) |
| | | { |
| | | Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseCode == item.WaId); |
| | | if(warehouse == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°ä»åºä¿¡æ¯"); |
| | | } |
| | | Dt_PurchaseOrderDetail purchaseOrderDetail = new Dt_PurchaseOrderDetail() |
| | | { |
| | | MaterielCode = item.MCode, |
| | | PurchaseDetailQuantity = item.Qty, |
| | | PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(), |
| | | Unit = item.Unit, |
| | | WarehouseId = item.WaId, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | RowNo = item.RowId, |
| | | }; |
| | | purchaseOrderDetails.Add(purchaseOrderDetail); |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°éè´åæç»ä¿¡æ¯"); |
| | | } |
| | | |
| | | List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(); |
| | | List<Dt_PurchaseOrderDetail> purchaseOrderDetails = new List<Dt_PurchaseOrderDetail>(); |
| | | List<Dt_PurchaseOrderDetail> updatePurchaseOrderDetails = new List<Dt_PurchaseOrderDetail>(); |
| | | List<int> detailIds = new List<int>(); |
| | | foreach (var item in model.MList) |
| | | { |
| | | Dt_Warehouse? warehouse = warehouses.FirstOrDefault(x => x.WarehouseCode == item.WaId); |
| | | if (warehouse == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°ä»åºä¿¡æ¯"); |
| | | } |
| | | Dt_PurchaseOrderDetail? purchaseOrderDetail = purchaseOrder.Details.FirstOrDefault(x => x.RowNo == item.RowId); |
| | | if (purchaseOrderDetail == null) |
| | | { |
| | |
| | | PurchaseDetailQuantity = item.Qty, |
| | | PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(), |
| | | Unit = item.Unit, |
| | | WarehouseId = item.WaId, |
| | | WarehouseId = warehouse.WarehouseId, |
| | | RowNo = item.RowId, |
| | | }; |
| | | purchaseOrderDetails.Add(purchaseOrderDetail); |
| | |
| | | purchaseOrderDetail.PurchaseDetailQuantity = item.Qty; |
| | | purchaseOrderDetail.PurchaseDetailStatus = PurchaseOrderDetailStatusEnum.NotReceived.ObjToInt(); |
| | | purchaseOrderDetail.Unit = item.Unit; |
| | | purchaseOrderDetail.WarehouseId = item.WaId; |
| | | purchaseOrderDetail.WarehouseId = warehouse.WarehouseId; |
| | | purchaseOrderDetail.RowNo = item.RowId; |
| | | updatePurchaseOrderDetails.Add(purchaseOrderDetail); |
| | | detailIds.Add(purchaseOrderDetail.Id); |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent GetReceiveOrderInfos(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | string searchValue = saveModel.MainData["searchValue"].ToString(); |
| | | string orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | Dt_ReceiveOrder receiveOrder = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderNo == orderNo).First(); |
| | | if (receiveOrder == null) throw new Exception($"æªæ¾å°åæ®ç¼å·ã{orderNo}ãä¿¡æ¯"); |
| | | List<Dt_ReceiveOrderDetail> receiveOrderDetails = new List<Dt_ReceiveOrderDetail>(); |
| | | if (string.IsNullOrEmpty(searchValue)) |
| | | { |
| | | receiveOrderDetails = Db.Queryable<Dt_ReceiveOrderDetail>().Where(x => x.ReceiveOrderId == receiveOrder.ReceiveOrderId).ToList(); |
| | | } |
| | | else |
| | | { |
| | | receiveOrderDetails = Db.Queryable<Dt_ReceiveOrderDetail>().Where(x => x.ReceiveOrderId == receiveOrder.ReceiveOrderId && x.MaterielCode == searchValue).ToList(); |
| | | } |
| | | |
| | | content.OK(data: receiveOrderDetails); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| | |
| | | using System; |
| | | using MailKit.Search; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | public WebResponseContent GetReceiveOrders(SaveModel saveModel) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | int pageNo = saveModel.MainData["pageNo"].ObjToInt(); |
| | | string orderNo = saveModel.MainData["orderNo"].ToString(); |
| | | List<Dt_ReceiveOrder> dt_ReceiveOrders = new List<Dt_ReceiveOrder>(); |
| | | if (string.IsNullOrEmpty(orderNo)) |
| | | { |
| | | dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt()).ToPageList(pageNo, 5); |
| | | } |
| | | else |
| | | { |
| | | dt_ReceiveOrders = Db.Queryable<Dt_ReceiveOrder>().Where(x => (x.ReceiveOrderNo.Contains(orderNo) || x.SuppliersId.Contains(orderNo)) && x.ReceiveOrderStatus < ReceiveOrderStatusEnum.Completed.ObjToInt()).ToPageList(pageNo, 5); |
| | | } |
| | | |
| | | content.OK(data: dt_ReceiveOrders); |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | public WebResponseContent CreateInboundOrder(int receiveOrderId) |
| | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "")] |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "")] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent ReceivePurchaseOrder([FromBody] PurchaseOrderModel model) |
| | | public WebResponseContent ReceivePurchaseOrder([FromBody] Root model) |
| | | { |
| | | return _purchaseOrderService.ReceivePurchaseOrder(model); |
| | | return _purchaseOrderService.ReceivePurchaseOrder(model.Content); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("ReceiveSupplier"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent ReceiveSupplier([FromBody] SupplierDTO model) |
| | | public WebResponseContent ReceiveSupplier([FromBody] Supplier model) |
| | | { |
| | | return _supplierInfoService.ReceiveSupplier(model); |
| | | return _supplierInfoService.ReceiveSupplier(model.Content); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("ReceiveMaterial"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent ReceiveMaterial([FromBody] MaterielInfoDTO model) |
| | | public WebResponseContent ReceiveMaterial([FromBody] MaterielInfo model) |
| | | { |
| | | return _materielInfoService.ReceiveMaterial(model); |
| | | return _materielInfoService.ReceiveMaterial(model.Content); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="erpOutOrder"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("ReceiveOutOrder"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent ReceiveOutOrder([FromBody] ErpOutOrderDTO erpOutOrder) |
| | | public WebResponseContent ReceiveOutOrder([FromBody] ErpOutOrder erpOutOrder) |
| | | { |
| | | return _outboundOrderService.ReceiveOutOrder(erpOutOrder); |
| | | return _outboundOrderService.ReceiveOutOrder(erpOutOrder.Content); |
| | | } |
| | | } |
| | | } |
| | |
| | | public InboundOrderController(IInboundOrderService service) : base(service) |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// æ¥è¯¢å
¥åºåä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("GetInboundOrders")] |
| | | public WebResponseContent GetInboundOrders([FromBody] SaveModel saveModel) |
| | | { |
| | | return Service.GetInboundOrders(saveModel); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åä¸ªç©æç ç»ç |
| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | |
| | | public InboundOrderDetailController(IInboundOrderDetailService service) : base(service) |
| | | { |
| | | } |
| | | /// <summary> |
| | | /// æ¥è¯¢å
¥åºå详æ
|
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("GetInboundOrderDetails")] |
| | | public WebResponseContent GetInboundOrderDetails([FromBody] SaveModel saveModel) |
| | | { |
| | | return Service.GetInboundOrderDetails(saveModel); |
| | | } |
| | | } |
| | | } |
| | |
| | | return Service.FeedbackReceiveOrder(orderId); |
| | | } |
| | | |
| | | /// æ¥è¯¢æ¶è´§åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("GetReceiveOrders")] |
| | | public WebResponseContent GetReceiveOrders([FromBody]SaveModel saveModel) |
| | | { |
| | | return Service.GetReceiveOrders(saveModel); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | return Service.AddReceiveOrderDetail(serNum, orderNo); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥è¯¢æ¶è´§åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("GetReceiveOrderInfos")] |
| | | public WebResponseContent GetReceiveOrderInfos([FromBody] SaveModel saveModel) |
| | | { |
| | | return Service.GetReceiveOrderInfos(saveModel); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | unpackage |
| | | node_modules |
| | | uview-ui |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | // launch.json é
ç½®äºå¯å¨è°è¯æ¶ç¸å
³è®¾ç½®ï¼configurationsä¸èç¹åç§°å¯ä¸º app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ |
| | | // launchtype项å¯é
ç½®å¼ä¸ºlocalæremote, local代表åç«¯è¿æ¬å°äºå½æ°ï¼remote代表å端è¿äºç«¯äºå½æ° |
| | | "version" : "0.0", |
| | | "configurations" : [ |
| | | { |
| | | "app-plus" : { |
| | | "launchtype" : "local" |
| | | }, |
| | | "default" : { |
| | | "launchtype" : "local" |
| | | }, |
| | | "type" : "uniCloud" |
| | | }, |
| | | { |
| | | "playground" : "standard", |
| | | "type" : "uni-app:app-android" |
| | | } |
| | | ] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | // ä½¿ç¨ IntelliSense äºè§£ç¸å
³å±æ§ã |
| | | // æ¬å以æ¥çç°æå±æ§çæè¿°ã |
| | | // 欲äºè§£æ´å¤ä¿¡æ¯ï¼è¯·è®¿é®: https://go.microsoft.com/fwlink/?linkid=830387 |
| | | "version": "0.2.0", |
| | | "configurations": [ |
| | | { |
| | | "type": "chrome", |
| | | "request": "launch", |
| | | "name": "é对 localhost å¯å¨ Chrome", |
| | | "url": "http://localhost:8080", |
| | | "webRoot": "${workspaceFolder}" |
| | | } |
| | | ] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <script> |
| | | export default { |
| | | onLaunch: function() { |
| | | // console.log('App Launch') |
| | | }, |
| | | onShow: function() { |
| | | // this.interval = setInterval(function() { |
| | | // uni.hideKeyboard(); //éè软é®ç |
| | | // }, 50); |
| | | // console.log('App Show') |
| | | }, |
| | | onHide: function() { |
| | | // console.log('App Hide') |
| | | }, |
| | | onLoad() { |
| | | |
| | | }, |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import './tuniao-ui/index.scss'; |
| | | @import './tuniao-ui/iconfont.css'; |
| | | @import "uview-ui/index.scss"; |
| | | /*æ¯ä¸ªé¡µé¢å
Œ
±css */ |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | MIT License |
| | | |
| | | Copyright (c) 2020 www.uviewui.com |
| | | |
| | | Permission is hereby granted, free of charge, to any person obtaining a copy |
| | | of this software and associated documentation files (the "Software"), to deal |
| | | in the Software without restriction, including without limitation the rights |
| | | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| | | copies of the Software, and to permit persons to whom the Software is |
| | | furnished to do so, subject to the following conditions: |
| | | |
| | | The above copyright notice and this permission notice shall be included in all |
| | | copies or substantial portions of the Software. |
| | | |
| | | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| | | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| | | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| | | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| | | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| | | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| | | SOFTWARE. |
¶Ô±ÈÐÂÎļþ |
| | |
| | | let config = { |
| | | baseUrl: 'http://localhost:9293', |
| | | urls: [ |
| | | 'http://127.0.0.1:9293', |
| | | 'http://localhost:9293' |
| | | ] |
| | | } |
| | | export { |
| | | config |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { config } from "./config"; |
| | | |
| | | // let baseUrl = 'http://10.1.105.155:9995' |
| | | // let baseUrl = 'http://10.1.211.101:9004' |
| | | let baseUrl = ''; |
| | | // let baseUrl = 'http://192.168.43.71:9995' |
| | | // let baseUrl = 'http://47.112.196.253:8881' |
| | | |
| | | const install = (Vue, vm) => { |
| | | baseUrl = config.baseUrl; |
| | | // æ¤ä¸ºèªå®ä¹é
ç½®åæ°ï¼å
·ä½åæ°è§ä¸æ¹è¯´æ |
| | | Vue.prototype.$u.http.setConfig({ |
| | | baseUrl: baseUrl, |
| | | loadingText: 'åªåå è½½ä¸~', |
| | | loadingTime: 5000, |
| | | originalData: true, |
| | | // ...... |
| | | }); |
| | | |
| | | // è¯·æ±æ¦æªï¼é
ç½®Tokençåæ° |
| | | Vue.prototype.$u.http.interceptor.request = (config) => { |
| | | // å¼ç¨token |
| | | // æ¹å¼ä¸ï¼åæ¾å¨vuexçtokenï¼å设使ç¨äºuViewå°è£
çvuexæ¹å¼ |
| | | // è§ï¼https://uviewui.com/components/globalVariable.html |
| | | // config.header.token = vm.token; |
| | | |
| | | // æ¹å¼äºï¼å¦ææ²¡æä½¿ç¨uViewå°è£
çvuexæ¹æ³ï¼é£ä¹éè¦ä½¿ç¨$store.stateè·å |
| | | // config.header.token = vm.$store.state.token; |
| | | |
| | | // æ¹å¼ä¸ï¼å¦ætokenæ¾å¨äºglobalDataï¼éè¿getApp().globalDataè·å |
| | | // config.header.token = getApp().globalData.username; |
| | | |
| | | // æ¹å¼åï¼å¦ætokenæ¾å¨äºStorageæ¬å°åå¨ä¸ï¼æ¦æªæ¯æ¯æ¬¡è¯·æ±é½æ§è¡ç |
| | | // æä»¥åªææ¨éæ°ç»å½ä¿®æ¹äºStorageï¼ä¸ä¸æ¬¡ç请æ±å°ä¼æ¯ææ°å¼ |
| | | // const token = uni.getStorageSync('token'); |
| | | // config.header.token = token; |
| | | // debugger |
| | | // var aaa = "Bearer " + uni.getStorageSync('jo_id_token'); |
| | | // var bbb = "a" + uni.getStorageSync('remAcc'); |
| | | // var ccc = "a" + uni.getStorageSync('remPwd'); |
| | | // var ddd = "a" + uni.getStorageSync('acc'); |
| | | // var eee = "a" + uni.getStorageSync('pwd'); |
| | | config.header.Token = 'xxxxxx'; |
| | | config.header.Authorization = "Bearer " + uni.getStorageSync('jo_id_token'); |
| | | config.header.uniapp = '1'; |
| | | // å¯ä»¥å¯¹æä¸ªurlè¿è¡ç¹å«å¤çï¼æ¤urlåæ°ä¸ºthis.$u.get(url)ä¸çurlå¼ |
| | | if (config.url == '/api/User/login') config.header.noToken = true; |
| | | // æåéè¦å°configè¿è¡return |
| | | return config; |
| | | // 妿returnä¸ä¸ªfalseå¼ï¼åä¼åæ¶æ¬æ¬¡è¯·æ± |
| | | // if(config.url == '/user/rest') return false; // åæ¶ææ¬¡è¯·æ± |
| | | } |
| | | |
| | | // ååºæ¦æªï¼å¤æç¶æç æ¯å¦éè¿ |
| | | Vue.prototype.$u.http.interceptor.response = (res) => { |
| | | if(!res.statusCode){ |
| | | if (res.errMsg) { |
| | | vm.$u.toast("请æ±å¤±è´¥,è¯·æ£æ¥åå°ç¨åºæ¯å¦æå¼,é误信æ¯:" + res.errMsg); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if (res.statusCode == 200) { |
| | | // res为æå¡ç«¯è¿åå¼ï¼å¯è½æcodeï¼resultçåæ®µ |
| | | // è¿é对res.resultè¿è¡è¿åï¼å°ä¼å¨this.$u.post(url).then(res => {})çthenåè°ä¸çresçå° |
| | | // 妿é
ç½®äºoriginalData为trueï¼è¯·çæè¿éçè¿åå¼ |
| | | return res.data; |
| | | } else if (res.statusCode == 401) { |
| | | // å设201为token失æï¼è¿é跳转ç»å½ |
| | | vm.$u.toast('éªè¯å¤±è´¥ï¼è¯·éæ°ç»å½'); |
| | | uni.reLaunch({ |
| | | url: '/pages/login/login' |
| | | }); |
| | | return false; |
| | | } else if (res.statusCode == 202) { |
| | | // 妿è¿åfalseï¼åä¼è°ç¨Promiseçrejectåè°ï¼ |
| | | // å¹¶å°è¿å
¥this.$u.post(url).then().catch(res=>{})çcatchåè°ä¸ï¼res为æå¡ç«¯çè¿åå¼ |
| | | vm.$u.post("/api/User/replaceToken").then(res => { |
| | | if (x.data.status) { |
| | | vm.$u.vuex('vuex_token', x.data.data) |
| | | vm.$u.route({ |
| | | type: "navigateBack", |
| | | delta: -1 |
| | | }) |
| | | } else { |
| | | vm.$u.toast('éªè¯è¿æï¼è¯·éæ°ç»å½'); |
| | | uni.reLaunch({ |
| | | url: '/pages/login/login' |
| | | }); |
| | | } |
| | | }).catch(err => { |
| | | uni.reLaunch({ |
| | | url: '/pages/login/login' |
| | | }); |
| | | }) |
| | | // uni.request({ |
| | | // url: "http://192.168.12.245:8099/api/User/replaceToken", |
| | | // param: {}, |
| | | // method: 'POST', |
| | | // responseType: "text", |
| | | // header: { |
| | | // Authorization: "Bearer " + vm.vuex_token |
| | | // }, |
| | | // async: false, |
| | | // success: function(x) { |
| | | // if (x.data.status) { |
| | | // vm.$u.vuex('vuex_token',x.data.data) |
| | | // vm.$u.route({ |
| | | // type: "navigateBack", |
| | | // delta: -1 |
| | | // }) |
| | | // } else { |
| | | // console.log(x.data.message); |
| | | // vm.$u.toast('éªè¯è¿æï¼è¯·éæ°ç»å½'); |
| | | // setTimeout(() => { |
| | | // // æ¤ä¸ºuViewçæ¹æ³ï¼è¯¦è§è·¯ç±ç¸å
³ææ¡£ |
| | | // vm.$u.route('/pages/user/login') |
| | | // }, 1500) |
| | | // } |
| | | // }, |
| | | // errror: function(ex) { |
| | | // console.log(ex); |
| | | // uni.reLaunch({ |
| | | // url: '/pages/user/login' |
| | | // }); |
| | | // }, |
| | | // }); |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | |
| | | export default { |
| | | install, |
| | | baseUrl |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | .uni-flex { |
| | | display: flex; |
| | | } |
| | | |
| | | .uni-flex-row { |
| | | @extend .uni-flex; |
| | | flex-direction: row; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .uni-flex-column { |
| | | @extend .uni-flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .uni-color-gary { |
| | | color: #3b4144; |
| | | } |
| | | |
| | | /* æ é¢ */ |
| | | .uni-title { |
| | | display: flex; |
| | | margin-bottom: $uni-spacing-col-base; |
| | | font-size: $uni-font-size-lg; |
| | | font-weight: bold; |
| | | color: #3b4144; |
| | | } |
| | | |
| | | .uni-title-sub { |
| | | display: flex; |
| | | // margin-bottom: $uni-spacing-col-base; |
| | | font-size: $uni-font-size-base; |
| | | font-weight: 500; |
| | | color: #3b4144; |
| | | } |
| | | |
| | | /* æè¿° é¢å¤ææ¬ */ |
| | | .uni-note { |
| | | margin-top: 10px; |
| | | color: #999; |
| | | font-size: $uni-font-size-sm; |
| | | } |
| | | |
| | | /* å表å
容 */ |
| | | .uni-list-box { |
| | | @extend .uni-flex-row; |
| | | flex: 1; |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | /* ç¥ç¼©å¾ */ |
| | | .uni-thumb { |
| | | flex-shrink: 0; |
| | | margin-right: $uni-spacing-row-base; |
| | | width: 125px; |
| | | height: 75px; |
| | | border-radius: $uni-border-radius-lg; |
| | | overflow: hidden; |
| | | border: 1px #f5f5f5 solid; |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .uni-media-box { |
| | | @extend .uni-flex-row; |
| | | // margin-bottom: $uni-spacing-col-base; |
| | | border-radius: $uni-border-radius-lg; |
| | | overflow: hidden; |
| | | .uni-thumb { |
| | | margin: 0; |
| | | margin-left: 4px; |
| | | flex-shrink: 1; |
| | | width: 33%; |
| | | border-radius:0; |
| | | &:first-child { |
| | | margin: 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* å
容 */ |
| | | .uni-content { |
| | | @extend .uni-flex-column; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | /* å表footer */ |
| | | .uni-footer { |
| | | @extend .uni-flex-row; |
| | | justify-content: space-between; |
| | | margin-top: $uni-spacing-col-lg; |
| | | } |
| | | .uni-footer-text { |
| | | font-size: $uni-font-size-sm; |
| | | color: $uni-text-color-grey; |
| | | margin-left: 5px; |
| | | } |
| | | |
| | | /* æ ç¾ */ |
| | | |
| | | .uni-tag { |
| | | flex-shrink: 0; |
| | | padding: 0 5px; |
| | | border: 1px $uni-border-color solid; |
| | | margin-right: $uni-spacing-row-sm; |
| | | border-radius: $uni-border-radius-base; |
| | | background: $uni-bg-color-grey; |
| | | color: $uni-text-color; |
| | | font-size: $uni-font-size-sm; |
| | | } |
| | | |
| | | /* 龿¥ */ |
| | | .uni-link { |
| | | margin-left: 10px; |
| | | color: $uni-text-color; |
| | | text-decoration: underline; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "id": "99999", |
| | | "name": "Section", |
| | | "desc": "æ 颿 ", |
| | | "edition": "0.0.1", |
| | | "url": "section", |
| | | "type": "å¸å±ç»ä»¶", |
| | | "path": "https://ext.dcloud.net.cn/plugin?id=", |
| | | "hidden": true, |
| | | "test":true, |
| | | "update_log": [] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | ### Section æ 颿 |
| | | |
| | | æ 颿 ï¼ç¨äºæ¾ç¤ºæ é¢ï¼ç»ä»¶åï¼``uni-section``ï¼ä»£ç åï¼ uSectionã |
| | | |
| | | ### ä½¿ç¨æ¹å¼ |
| | | |
| | | å¨ ``script`` ä¸å¼ç¨ç»ä»¶ |
| | | |
| | | ```javascript |
| | | import uniSection from "@/components/uni-section/uni-section.vue" |
| | | export default { |
| | | components: {uniSection} |
| | | } |
| | | ``` |
| | | |
| | | å¨ ``template`` ä¸ä½¿ç¨ç»ä»¶ |
| | | |
| | | ```html |
| | | <uni-section title="åªæä¸»æ é¢"></uni-section> |
| | | <uni-section title="ç«çº¿è£
饰" sub-title="坿 é¢" type="line"></uni-section> |
| | | <uni-section title="åå½¢è£
饰" sub-title="坿 é¢" type="circle"></uni-section> |
| | | ``` |
| | | |
| | | ### 屿§è¯´æ |
| | | |
| | | |屿§å |ç±»å |é»è®¤å¼ |说æ | |
| | | |--- |---- |--- |--- | |
| | | |type |String |- |æ é¢è£
饰类å ï¼å¯éå¼ï¼lineï¼ç«çº¿ï¼ãcircleï¼åå½¢ï¼| |
| | | |title |String |- |主æ é¢ | |
| | | |sub-title |String |- |坿 é¢ | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="uni-section" nvue> |
| | | <view v-if="type" class="uni-section__head"> |
| | | <view :class="type" class="uni-section__head-tag" /> |
| | | </view> |
| | | <view class="uni-section__content"> |
| | | <text :class="{'distraction':!subTitle}" class="uni-section__content-title">{{ title }}</text> |
| | | <text v-if="subTitle" class="uni-section__content-sub">{{ subTitle }}</text> |
| | | </view> |
| | | <slot /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | /** |
| | | * Section æ 颿 |
| | | * @description æ 颿 |
| | | * @property {String} type = [line|circle] æ é¢è£
饰类å |
| | | * @value line ç«çº¿ |
| | | * @value circle åå½¢ |
| | | * @property {String} title 主æ é¢ |
| | | * @property {String} subTitle 坿 é¢ |
| | | */ |
| | | |
| | | export default { |
| | | name: 'UniSection', |
| | | props: { |
| | | type: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | subTitle: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | }, |
| | | watch: { |
| | | title(newVal) { |
| | | if (uni.report && newVal !== '') { |
| | | uni.report('title', newVal) |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | onClick() { |
| | | this.$emit('click') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .uni-section { |
| | | position: relative; |
| | | /* #ifndef APP-NVUE */ |
| | | display: flex; |
| | | /* #endif */ |
| | | margin-top: 10px; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | padding: 0 10px; |
| | | height: 50px; |
| | | background-color: $uni-bg-color-grey; |
| | | /* #ifdef APP-NVUE */ |
| | | // border-bottom-color: $uni-border-color; |
| | | // border-bottom-style: solid; |
| | | // border-bottom-width: 0.5px; |
| | | /* #endif */ |
| | | font-weight: normal; |
| | | } |
| | | /* #ifndef APP-NVUE */ |
| | | // .uni-section:after { |
| | | // position: absolute; |
| | | // bottom: 0; |
| | | // right: 0; |
| | | // left: 0; |
| | | // height: 1px; |
| | | // content: ''; |
| | | // -webkit-transform: scaleY(.5); |
| | | // transform: scaleY(.5); |
| | | // background-color: $uni-border-color; |
| | | // } |
| | | /* #endif */ |
| | | |
| | | .uni-section__head { |
| | | flex-direction: row; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .line { |
| | | height: 15px; |
| | | background-color: $uni-text-color-disable; |
| | | border-radius: 5px; |
| | | width: 3px; |
| | | } |
| | | |
| | | .circle { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-top-right-radius: 50px; |
| | | border-top-left-radius: 50px; |
| | | border-bottom-left-radius: 50px; |
| | | border-bottom-right-radius: 50px; |
| | | background-color: $uni-text-color-disable; |
| | | } |
| | | |
| | | .uni-section__content { |
| | | flex-direction: column; |
| | | flex: 1; |
| | | color: $uni-text-color; |
| | | } |
| | | |
| | | .uni-section__content-title { |
| | | font-size: $uni-font-size-base; |
| | | color: $uni-text-color; |
| | | } |
| | | |
| | | .distraction { |
| | | flex-direction: row; |
| | | align-items: center; |
| | | } |
| | | |
| | | .uni-section__content-sub { |
| | | font-size: $uni-font-size-sm; |
| | | color: $uni-text-color-grey; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import Vue from 'vue' |
| | | import App from './App' |
| | | |
| | | Vue.config.productionTip = false |
| | | |
| | | App.mpType = 'app' |
| | | |
| | | // å°è£
çå±ç¤ºæ¶æ¯æç¤ºçæ¹æ³ |
| | | uni.$showMsg = function (title = 'æ°æ®å 载失败ï¼', duration = 1500) { |
| | | uni.showToast({ |
| | | title, |
| | | duration, |
| | | icon: 'none', |
| | | }) |
| | | } |
| | | |
| | | // å¼å
¥å
¨å±uView |
| | | import uView from 'uview-ui' |
| | | Vue.use(uView); |
| | | // å¼å
¥å
¨å±TuniaoUI |
| | | import TuniaoUI from 'tuniao-ui' |
| | | Vue.use(TuniaoUI) |
| | | // httpæ¦æªå¨ï¼æ¤ä¸ºéè¦å å
¥çå
容ï¼å¦æä¸æ¯åå¨commonç®å½ï¼è¯·èªè¡ä¿®æ¹å¼å
¥è·¯å¾ |
| | | import httpInterceptor from '@/common/http.interceptor.js' |
| | | const app = new Vue({ |
| | | ...App |
| | | }) |
| | | // è¿ééè¦å卿åï¼æ¯ä¸ºäºçVueåå»ºå¯¹è±¡å®æï¼å¼å
¥"app"对象(ä¹å³é¡µé¢ç"this"å®ä¾) |
| | | Vue.use(httpInterceptor, app) |
| | | app.$mount() |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "name" : "WMS-PDA", |
| | | "appid" : "__UNI__BFEF6BA", |
| | | "description" : "", |
| | | "versionName" : "25", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus" : { |
| | | "safearea" : { |
| | | "bottom" : { |
| | | "offset" : "none" |
| | | } |
| | | }, |
| | | "usingComponents" : true, |
| | | "nvueCompiler" : "uni-app", |
| | | "compilerVersion" : 3, |
| | | "splashscreen" : { |
| | | "alwaysShowBeforeRender" : true, |
| | | "waiting" : true, |
| | | "autoclose" : true, |
| | | "delay" : 0 |
| | | }, |
| | | /* 模åé
ç½® */ |
| | | "modules" : { |
| | | "Barcode" : {}, |
| | | "Bluetooth" : {} |
| | | }, |
| | | /* åºç¨åå¸ä¿¡æ¯ */ |
| | | "distribute" : { |
| | | /* androidæå
é
ç½® */ |
| | | "android" : { |
| | | "permissions" : [ |
| | | "<uses-feature android:name=\"android.hardware.camera\"/>", |
| | | "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CAMERA\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
| | | "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
| | | "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", |
| | | "<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
| | | "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
| | | "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
| | | ] |
| | | }, |
| | | /* iosæå
é
ç½® */ |
| | | "ios" : { |
| | | "dSYMs" : false |
| | | }, |
| | | /* SDKé
ç½® */ |
| | | "sdkConfigs" : { |
| | | "ad" : {} |
| | | }, |
| | | "icons" : { |
| | | "android" : { |
| | | "hdpi" : "unpackage/res/icons/72x72.png", |
| | | "xhdpi" : "unpackage/res/icons/96x96.png", |
| | | "xxhdpi" : "unpackage/res/icons/144x144.png", |
| | | "xxxhdpi" : "unpackage/res/icons/192x192.png" |
| | | }, |
| | | "ios" : { |
| | | "appstore" : "unpackage/res/icons/1024x1024.png", |
| | | "ipad" : { |
| | | "app" : "unpackage/res/icons/76x76.png", |
| | | "app@2x" : "unpackage/res/icons/152x152.png", |
| | | "notification" : "unpackage/res/icons/20x20.png", |
| | | "notification@2x" : "unpackage/res/icons/40x40.png", |
| | | "proapp@2x" : "unpackage/res/icons/167x167.png", |
| | | "settings" : "unpackage/res/icons/29x29.png", |
| | | "settings@2x" : "unpackage/res/icons/58x58.png", |
| | | "spotlight" : "unpackage/res/icons/40x40.png", |
| | | "spotlight@2x" : "unpackage/res/icons/80x80.png" |
| | | }, |
| | | "iphone" : { |
| | | "app@2x" : "unpackage/res/icons/120x120.png", |
| | | "app@3x" : "unpackage/res/icons/180x180.png", |
| | | "notification@2x" : "unpackage/res/icons/40x40.png", |
| | | "notification@3x" : "unpackage/res/icons/60x60.png", |
| | | "settings@2x" : "unpackage/res/icons/58x58.png", |
| | | "settings@3x" : "unpackage/res/icons/87x87.png", |
| | | "spotlight@2x" : "unpackage/res/icons/80x80.png", |
| | | "spotlight@3x" : "unpackage/res/icons/120x120.png" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /* å¿«åºç¨ç¹æç¸å
³ */ |
| | | "quickapp" : {}, |
| | | /* å°ç¨åºç¹æç¸å
³ */ |
| | | "mp-weixin" : { |
| | | "appid" : "wxc256e348c4032ebd", |
| | | "setting" : { |
| | | "urlCheck" : false |
| | | }, |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-alipay" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-baidu" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "mp-toutiao" : { |
| | | "usingComponents" : true |
| | | }, |
| | | "h5" : { |
| | | "template" : "template.h5.html", |
| | | "router" : { |
| | | "mode" : "history" |
| | | } |
| | | }, |
| | | "fallbackLocale" : "zh-Hans" |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "name": "PDA", |
| | | "lockfileVersion": 2, |
| | | "requires": true, |
| | | "packages": { |
| | | "": { |
| | | "dependencies": { |
| | | "vue-touch-keyboard": "^0.3.2" |
| | | } |
| | | }, |
| | | "node_modules/babel-runtime": { |
| | | "version": "6.26.0", |
| | | "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", |
| | | "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", |
| | | "dependencies": { |
| | | "core-js": "^2.4.0", |
| | | "regenerator-runtime": "^0.11.0" |
| | | } |
| | | }, |
| | | "node_modules/core-js": { |
| | | "version": "2.6.12", |
| | | "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz", |
| | | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", |
| | | "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", |
| | | "hasInstallScript": true |
| | | }, |
| | | "node_modules/regenerator-runtime": { |
| | | "version": "0.11.1", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" |
| | | }, |
| | | "node_modules/vue-touch-keyboard": { |
| | | "version": "0.3.2", |
| | | "resolved": "https://registry.npmmirror.com/vue-touch-keyboard/-/vue-touch-keyboard-0.3.2.tgz", |
| | | "integrity": "sha512-+GAZSMdiPfop2At9fhGLzs2Jodd6BQla4q4Mm+VkpQLUaxmFFU64NWsjxvkkYjncAgbv/oO5wi+rM1X4eVHCbg==", |
| | | "dependencies": { |
| | | "babel-runtime": "^6.26.0" |
| | | } |
| | | } |
| | | }, |
| | | "dependencies": { |
| | | "babel-runtime": { |
| | | "version": "6.26.0", |
| | | "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz", |
| | | "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", |
| | | "requires": { |
| | | "core-js": "^2.4.0", |
| | | "regenerator-runtime": "^0.11.0" |
| | | } |
| | | }, |
| | | "core-js": { |
| | | "version": "2.6.12", |
| | | "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz", |
| | | "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" |
| | | }, |
| | | "regenerator-runtime": { |
| | | "version": "0.11.1", |
| | | "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", |
| | | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" |
| | | }, |
| | | "vue-touch-keyboard": { |
| | | "version": "0.3.2", |
| | | "resolved": "https://registry.npmmirror.com/vue-touch-keyboard/-/vue-touch-keyboard-0.3.2.tgz", |
| | | "integrity": "sha512-+GAZSMdiPfop2At9fhGLzs2Jodd6BQla4q4Mm+VkpQLUaxmFFU64NWsjxvkkYjncAgbv/oO5wi+rM1X4eVHCbg==", |
| | | "requires": { |
| | | "babel-runtime": "^6.26.0" |
| | | } |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "dependencies": { |
| | | "vue-touch-keyboard": "^0.3.2" |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "easycom": { |
| | | "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" |
| | | }, |
| | | "pages": [ //pagesæ°ç»ä¸ç¬¬ä¸é¡¹è¡¨ç¤ºåºç¨å¯å¨é¡µï¼åèï¼https://uniapp.dcloud.io/collocation/pages |
| | | { |
| | | "path": "pages/index/index", |
| | | "style": { |
| | | "navigationBarTitleText": "é¦é¡µ" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/home/home", |
| | | "style": { |
| | | "navigationBarTitleText": "æç" |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/login/login", |
| | | "style": { |
| | | "navigationBarTitleText": "ç»å½" |
| | | } |
| | | }, |
| | | // { |
| | | // "path": "pages/materielGroup/inboundOrder", |
| | | // "style": { |
| | | // "navigationBarTitleText": "å
¥åºè®¢å", |
| | | // "enablePullDownRefresh": false |
| | | // } |
| | | // }, |
| | | //åææç»ç(订å) |
| | | { |
| | | "path": "pages/raworderboxing/inboundorder", |
| | | "style": { |
| | | "navigationBarTitleText": "å
¥åºè®¢å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/raworderboxing/raworderboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "ç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/raworderboxing/orderboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "ç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/raworderboxing/releaseboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "è§£ç»æç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | //å
¶ä»ç»ç |
| | | { |
| | | "path": "pages/otherboxing/otherboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "å
¶ä»ç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //æåç»ç |
| | | { |
| | | "path": "pages/productboxing/productboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "æåç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //æå¨åºåºç®¡ç |
| | | { |
| | | "path": "pages/rawhandoutbound/rawhandoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "åææå¨åºåº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/rawhandoutbound/handoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "ZBæå¨åºåº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/rawhandoutbound/kbhandoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "KBæå¨åºåº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/rawhandoutbound/manualoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "æ æ¿åºæå®åºåº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //æååºåº |
| | | { |
| | | "path": "pages/productoutbound/productoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "æååºåº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //åæåç»ç |
| | | { |
| | | "path": "pages/halfproduct/hpreceiveorder", |
| | | "style": { |
| | | "navigationBarTitleText": "åæåç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/halfproduct/halfproductboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "åæåç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //çäº§é¢æå(ä»åºæå¨å¤æ) |
| | | { |
| | | "path": "pages/receiveorder/receiveorder", |
| | | "style": { |
| | | "navigationBarTitleText": "æ¶è´§å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/receiveorder/receiveorderoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "æ¶è´§å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/receiveorder/multiplereceiveorder", |
| | | "style": { |
| | | "navigationBarTitleText": "çäº§é¢æå(å¤)", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/receiveorder/multiplereceiveorderout", |
| | | "style": { |
| | | "navigationBarTitleText": "çäº§é¢æå(å¤)", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //è°æ¨ç³è¯·å(ä»åºæå¨å¤æ) |
| | | { |
| | | "path": "pages/allocationorder/allocationorder", |
| | | "style": { |
| | | "navigationBarTitleText": "è°æ¨ç³è¯·å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/allocationorder/allocationorderoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "è°æ¨ç³è¯·å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //ç´æ¥è°æ¨å(ä»åºæå¨å¤æ) |
| | | { |
| | | "path": "pages/directorder/directorder", |
| | | "style": { |
| | | "navigationBarTitleText": "ç´æ¥è°æ¨å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/directorder/directorderoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "ç´æ¥è°æ¨å", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //å
¶ä»åºåºå(ä»åºæå¨å¤æ) |
| | | { |
| | | "path": "pages/otheroutboundorder/otheroutboundorder", |
| | | "style": { |
| | | "navigationBarTitleText": "å
¶ä»åºåºå", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/otheroutboundorder/otherorderoutbound", |
| | | "style": { |
| | | "navigationBarTitleText": "å
¶ä»åºåºå", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //ç§»åºç®¡ç |
| | | { |
| | | "path": "pages/relocation/relocation", |
| | | "style": { |
| | | "navigationBarTitleText": "ç§»åº", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //空箱管ç |
| | | { |
| | | "path": "pages/emptybox/emptyboxmanage", |
| | | "style": { |
| | | "navigationBarTitleText": "空箱管ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //æ£é管ç |
| | | { |
| | | "path": "pages/picking/pickingMat", |
| | | "style": { |
| | | "navigationBarTitleText": "æ£é", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //çäº§å«æç®¡ç |
| | | { |
| | | "path": "pages/callmat/receiveorder", |
| | | "style": { |
| | | "navigationBarTitleText": "çäº§å«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/callmat/ordercallmat", |
| | | "style": { |
| | | "navigationBarTitleText": "çäº§å«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | |
| | | //é
é管ç |
| | | { |
| | | "path": "pages/delivery/delivery", |
| | | "style": { |
| | | "navigationBarTitleText": "é
é管ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/delivery/getcarryinfo", |
| | | "style": { |
| | | "navigationBarTitleText": "é
éä¿¡æ¯æ¥è¯¢", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/delivery/carrycheck", |
| | | "style": { |
| | | "navigationBarTitleText": "é
éæ ¡éª", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/delivery/trainstockbind", |
| | | "style": { |
| | | "navigationBarTitleText": "å°ç«è½¦åºåç»å®", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //Cåºç®¡ç |
| | | { |
| | | "path": "pages/carea/carea", |
| | | "style": { |
| | | "navigationBarTitleText": "Cåºç®¡ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/carea/zbareaboxing", |
| | | "style": { |
| | | "navigationBarTitleText": "Cåºç»ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/carea/cacheareacallmat", |
| | | "style": { |
| | | "navigationBarTitleText": "Cåºå«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | |
| | | //åºå管ç |
| | | { |
| | | "path": "pages/stock/stock", |
| | | "style": { |
| | | "navigationBarTitleText": "åºå管ç", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/stock/bindstock", |
| | | "style": { |
| | | "navigationBarTitleText": "åºåç»å®", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/stock/releasestock", |
| | | "style": { |
| | | "navigationBarTitleText": "åºåè§£ç»", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //åºåºæ«æ |
| | | { |
| | | "path": "pages/outboundscan/matoutboundscan", |
| | | "style": { |
| | | "navigationBarTitleText": "åææåºåºæ«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/outboundscan/productoutboundscan", |
| | | "style": { |
| | | "navigationBarTitleText": "æååºåºæ«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //å
ç®±æå |
| | | { |
| | | "path": "pages/other/other", |
| | | "style": { |
| | | "navigationBarTitleText": "å
ç®±æå", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/other/printtag", |
| | | "style": { |
| | | "navigationBarTitleText": "å
ç®±æå(F2)", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/other/printtagf4", |
| | | "style": { |
| | | "navigationBarTitleText": "å
ç®±æå(F4)", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/other/printtagf7", |
| | | "style": { |
| | | "navigationBarTitleText": "å
ç®±æå(F7)", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //å«æè¯·æ± |
| | | { |
| | | "path": "pages/carry/getCarryRequest", |
| | | "style": { |
| | | "navigationBarTitleText": "å«æè¯·æ±", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //åæ¶ä»»å¡ |
| | | { |
| | | "path": "pages/taskInfo/cancelTask", |
| | | "style": { |
| | | "navigationBarTitleText": "åæ¶ä»»å¡", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //ç¹å¯¹ç¹ |
| | | { |
| | | "path": "pages/test/qianfushitest", |
| | | "style": { |
| | | "navigationBarTitleText": "ç¹å¯¹ç¹ä»»å¡", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/test/acrossfloor", |
| | | "style": { |
| | | "navigationBarTitleText": "è·¨æ¥¼å±æ¬è¿", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //设置 |
| | | { |
| | | "path": "pages/index/settings", |
| | | "style": { |
| | | "navigationBarTitleText": "设置", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | |
| | | //跨楼å±å«æ |
| | | { |
| | | "path": "pages/acrossfloor/matbind", |
| | | "style": { |
| | | "navigationBarTitleText": "跨楼å±å«æç»å®", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | }, |
| | | { |
| | | "path": "pages/acrossfloor/acrossfloorcallmat", |
| | | "style": { |
| | | "navigationBarTitleText": "跨楼å±å«æ", |
| | | "enablePullDownRefresh": false |
| | | } |
| | | } |
| | | ], |
| | | "globalStyle": { |
| | | "navigationBarTextStyle": "black", |
| | | "navigationBarTitleText": "uView", |
| | | "navigationBarBackgroundColor": "#F8F8F8", |
| | | "backgroundColor": "#F8F8F8" |
| | | }, |
| | | "tabBar": { |
| | | "color": "#909399", |
| | | "selectedColor": "#303133", |
| | | "borderStyle": "black", |
| | | "backgroundColor": "#ffffff", |
| | | "list": [{ |
| | | "pagePath": "pages/index/index", |
| | | "iconPath": "static/index.png", |
| | | "selectedIconPath": "static/index-selected.png", |
| | | "text": "é¦é¡µ" |
| | | }, { |
| | | "pagePath": "pages/home/home", |
| | | "iconPath": "static/center.png", |
| | | "selectedIconPath": "static/center-selected.png", |
| | | "text": "æ" |
| | | }] |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view style="padding: 5%;"> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="ç»ç¹å°å"> |
| | | <uni-data-select v-model="value" :localdata="range"></uni-data-select> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">嫿</button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | istrue: false, |
| | | range: [], |
| | | value: "" |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.getEndLocations(); |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.value.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ç»ç¹å°å", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param = { |
| | | MainData: { |
| | | matCode: this.value, |
| | | endPoint: this.value |
| | | } |
| | | } |
| | | this.$u.post('/api/AcrossFloorCarry/AcrossFloorCallMat', param).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "嫿æå", |
| | | type: "success" |
| | | }) |
| | | this.carNo = ""; |
| | | this.value = ""; |
| | | this.locationNo = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | getEndLocations() { |
| | | this.$u.post('/api/AcrossFloorCarry/GetEndPoints?floor=F6', null).then(res => { |
| | | if (res.status) { |
| | | this.range = res.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view style="padding: 5%;"> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æè½¦ç¼å·"> |
| | | <uni-easyinput type="text" :focus="!istrue" @input="carNoInputChange" v-model="carNo" |
| | | placeholder="è¯·æ«ææè½¦ç¼å·" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="istrue" v-model="locationNo" placeholder="è¯·æ«æåºä½ç¼å·" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç¹å°å"> |
| | | <uni-data-select v-model="value" :localdata="range"></uni-data-select> |
| | | </uni-forms-item> |
| | | |
| | | </uni-forms> |
| | | |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»å®</button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | istrue: false, |
| | | carNo: "", |
| | | locationNo: "", |
| | | endpoint: "", |
| | | range: [], |
| | | value: "" |
| | | } |
| | | }, |
| | | onLoad() { |
| | | this.getEndLocations(); |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.locationNo.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æåºä½ç¼å·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.carNo.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææè½¦ç¼å·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.value.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ç»ç¹å°å", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param = { |
| | | MainData: { |
| | | carNo: this.carNo, |
| | | locationNo: this.locationNo, |
| | | endPoint: this.value |
| | | } |
| | | } |
| | | this.$u.post('/api/AcrossFloorCarry/MatBind', param).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "ç»å®æå", |
| | | type: "success" |
| | | }) |
| | | this.carNo = ""; |
| | | this.value = ""; |
| | | this.locationNo = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | carNoInputChange() { |
| | | this.$nextTick(() => { |
| | | this.istrue = true; |
| | | }); |
| | | }, |
| | | getEndLocations() { |
| | | this.$u.post('/api/AcrossFloorCarry/GetEndPoints?floor=F6', null).then(res => { |
| | | if (res.status) { |
| | | this.range = res.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.allocation_code)" link |
| | | :to="page+item.allocation_code" v-for="item in allReceivingOrders" :key="item.allocation_code"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> è°æ¨åå·:{{item.allocation_code}} </view> |
| | | <view> è°æ¨ç±»å:{{item.allocation_order_type}} </view> |
| | | <view> åæ®æ¥æ:{{item.allocation_date}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/allocationorder/allocationorderoutbound?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetAllocationOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if(res.data){ |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | }else{ |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms style="margin-left: 2%;margin-top: 20px;" label-width="180"> |
| | | <uni-forms-item :label="label"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼è°æ¨ç³è¯·å"></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±ç ï¼"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±ç " ref='midInput' :focus="focus" |
| | | v-model="innerCode" @input="innercodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="matCode"></uni-forms-item> |
| | | <uni-forms-item :label="matName"></uni-forms-item> |
| | | <uni-forms-item :label="currentQty"></uni-forms-item> |
| | | <uni-forms-item :label="orderQty"></uni-forms-item> |
| | | <uni-forms-item :label="scanQty"></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="åºå"><uni-data-select v-model="value" |
| | | :localdata="range"></uni-data-select></uni-forms-item> |
| | | <uni-forms-item label="楼å±"><uni-data-select v-model="floor" |
| | | :localdata="floorrange"></uni-data-select></uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <button type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="outbound(item.matCode)">åºåº</button> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">åæ®æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">å·²åé
æ°éï¼{{item.processQty}}</view> |
| | | <view style="font-size: 18px;">åºåºæ°éï¼{{item.outQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="printfloor" :localdata="printfloorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <uni-forms-item :label="tagmatName"></uni-forms-item> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['åºåºæ¡ç æ«æ', 'æç»', 'æå', 'å
¥åº'], |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | focus: true, |
| | | tag: "", |
| | | number: "", |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | value: "KB", |
| | | range: [{ |
| | | value: "KB", |
| | | text: "KB" |
| | | }, |
| | | { |
| | | value: "ZB", |
| | | text: "ZB" |
| | | } |
| | | ], |
| | | floor: "F2", |
| | | floorrange: [{ |
| | | value: "F2", |
| | | text: "F2" |
| | | }, |
| | | { |
| | | value: "F3", |
| | | text: "F3" |
| | | }, |
| | | { |
| | | value: "F4", |
| | | text: "F4" |
| | | }, |
| | | { |
| | | value: "F7", |
| | | text: "F7" |
| | | } |
| | | ], |
| | | printfloor: "F2", |
| | | printfloorrange: [{ |
| | | value: "F2", |
| | | text: "F2" |
| | | }, |
| | | { |
| | | value: "F2-ZB", |
| | | text: "F2-ZB" |
| | | }, |
| | | { |
| | | value: "F3", |
| | | text: "F3" |
| | | }, |
| | | { |
| | | value: "F4", |
| | | text: "F4" |
| | | }, |
| | | { |
| | | value: "F7", |
| | | text: "F7" |
| | | }, |
| | | { |
| | | value: "F7-2", |
| | | text: "F7-2" |
| | | } |
| | | ], |
| | | barcode: "", |
| | | address: "", |
| | | istrue: false |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.innerCode = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | inbound() { |
| | | if (this.barcode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçå·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.address.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå°åæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetAllocationOrderInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | innercodeInput() { |
| | | this.$nextTick(() => { |
| | | if (this.innerCode == "") { |
| | | return; |
| | | } |
| | | var innerCode = this.innerCode; |
| | | setTimeout(() => { |
| | | this.innerCode = ""; |
| | | }, 10); |
| | | |
| | | // this.focus = false; |
| | | if (innerCode.split('|').length == 7) { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | innerCode: innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/UpdateAlloctionOrder', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matCode = "ç©æç¼ç ï¼" + res.data.matCode; |
| | | this.matName = "ç©æåç§°ï¼" + res.data.matName; |
| | | this.orderQty = "éæ±æ°éï¼" + res.data.orderQty; |
| | | this.currentQty = "å·²æ«æ°éï¼" + res.data.currentQty; |
| | | this.scanQty = "累计æ°éï¼" + res.data.scanQty; |
| | | if (res.message) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | return; |
| | | } |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | }) |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | // this.innerCode = ""; |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥æ°é", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printfloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | outbound(code) { |
| | | var postData = { |
| | | MainData: { |
| | | matCode: code, |
| | | orderNo: this.orderNo, |
| | | system: this.value, |
| | | floor: this.floor |
| | | } |
| | | } |
| | | this.$u.post('/api/ErpOrder/AllocationOrderOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }) |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item :label="label"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼çäº§é¢æå"></uni-forms-item> |
| | | <uni-forms-item label="产线ç«ç¹"> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="endPoint" placeholder="è¯·æ«æäº§çº¿ç«ç¹" |
| | | ref='midInput' @input="inputChangebarcode()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-combox :candidates="candidates" @input="inputChange()" placeholder="è¯·éæ©ç©æç¼å·" |
| | | v-model="materialsns"></uni-combox> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">嫿</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-if="innersn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(innersn.matCode)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{innersn.matCode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">åæ®æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">åºåºæ°éï¼{{item.outQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['çäº§å«æ', 'æç»'], |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | istrue: false, |
| | | endPoint: "", |
| | | materialsns: "", |
| | | innersn: null, |
| | | callMatCode: "", |
| | | candidates: [] |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrderInfoByCode', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data.receiving_Dtls; |
| | | this.candidates = res.data.matCodes; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | // this.innersn = null; |
| | | |
| | | // this.$nextTick(() => { |
| | | // if (this.materialsns.length < 14 && this.materialsns.indexOf("åæå") == -1) { |
| | | // return; |
| | | // } |
| | | |
| | | // var matInfo = this.materialsns.split('|'); |
| | | // if (matInfo.length == 6) { |
| | | // this.callMatCode = ""; |
| | | // var matObj = { |
| | | // matCode: matInfo[1], |
| | | // } |
| | | // this.callMatCode = matInfo[1]; |
| | | // this.innersn = matObj; |
| | | // } else { |
| | | // var matObj = { |
| | | // matCode: this.materialsns |
| | | // } |
| | | // this.innersn = matObj; |
| | | // this.callMatCode = this.materialsns; |
| | | // } |
| | | |
| | | // setTimeout(() => { |
| | | // this.materialsns = ""; |
| | | // }, 100); |
| | | // }) |
| | | }, |
| | | inputChange(e) { |
| | | this.innersn = null; |
| | | |
| | | this.$nextTick(() => { |
| | | if (this.materialsns.length < 14 && this.materialsns.indexOf("åæå") == -1) { |
| | | return; |
| | | } |
| | | var matInfo = this.materialsns.split('|'); |
| | | if (matInfo.length > 6) { |
| | | this.callMatCode = ""; |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | } |
| | | this.callMatCode = matInfo[1]; |
| | | this.innersn = matObj; |
| | | } else { |
| | | // this.$refs.uToast.show({ |
| | | // title: "æ«ç é误,è¯·æ«ææ£ç¡®å¤ç®±ç ", |
| | | // type: "error" |
| | | // }) |
| | | var matObj = { |
| | | matCode: this.materialsns |
| | | } |
| | | this.innersn = matObj; |
| | | this.callMatCode = this.materialsns; |
| | | } |
| | | |
| | | setTimeout(() => { |
| | | this.materialsns = ""; |
| | | }, 100); |
| | | }) |
| | | }, |
| | | submit() { |
| | | if(this.callMatCode == ''){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æç©æç¼å·", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | this.$u.post('/api/Carry/CallMaterial2', { |
| | | MainData: { |
| | | "endPoint": this.endPoint, |
| | | "matCode": this.callMatCode, |
| | | "orderNo": this.orderNo |
| | | } |
| | | }).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('嫿æå!') |
| | | this.innersn = null; |
| | | this.callMatCode = ""; |
| | | this.materialsns = ""; |
| | | // this.endPoint = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.receive_code)" link |
| | | :to="page+item.receive_code" v-for="item in allReceivingOrders" :key="item.receive_code"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> å·¥åå·:{{item.receive_code}} </view> |
| | | <view> 产åæå·:{{item.receive_productNo}} </view> |
| | | <view> 产线:{{item.receive_line}} </view> |
| | | <view> æ°é:{{item.receive_quantity}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/callmat/ordercallmat?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrderCodes', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | } else { |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" @input="inputChange()" v-model="materialsns" placeholder="è¯·æ«æå
ç®±æ ç¾" |
| | | ref='midInput' :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="产线ç¼å·"> |
| | | <uni-easyinput type="text" v-model="line" placeholder="请è¾å
¥äº§çº¿ç¼å·" ref='midInput' :focus="!istrue" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">嫿</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-if="innersn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(innersn.matCode)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{innersn.matCode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | istrue: true, |
| | | endPoint: '', |
| | | materialsns: "", |
| | | matCode: "", |
| | | innersn: null, |
| | | line: "" |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | submit() { |
| | | if (this.line == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥äº§çº¿ç¼å·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.matCode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥ç©æç¼å·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var temp = this.line.split('-'); |
| | | this.$u.post('/api/Carry/CallMaterial', { |
| | | MainData: { |
| | | "endPoint": "A-" + temp[0] + "-TEMP-" + temp[1] + "-01ï¼01-01", |
| | | "matCode": this.matCode, |
| | | "system": "ZB" |
| | | } |
| | | }).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('嫿æå!') |
| | | this.innersn = null; |
| | | this.matCode = ""; |
| | | this.materialsns = ""; |
| | | this.endPoint = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.innersn = null; |
| | | |
| | | this.$nextTick(() => { |
| | | if (this.materialsns.length < 14) { |
| | | return; |
| | | } |
| | | |
| | | var matInfo = this.materialsns.split('|'); |
| | | if (matInfo.length > 6) { |
| | | this.matCode = ""; |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | } |
| | | this.matCode = matInfo[1]; |
| | | this.innersn = matObj; |
| | | } else { |
| | | var matObj = { |
| | | matCode: this.materialsns |
| | | } |
| | | this.innersn = matObj; |
| | | this.matCode = this.materialsns; |
| | | } |
| | | setTimeout(() => { |
| | | this.materialsns = ""; |
| | | }, 100); |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | width: 100%; |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" |
| | | v-model="barcode" @input="barcodeInput" @focus="barcodeFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="focus" v-model="materSn" |
| | | @input="snInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matInfos" :key="item.orderNo"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.orderNo)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">çäº§æ¥æï¼{{item.matProductionDate}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="!bindbarcodefocus" v-model="locationNo" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @input="locationNoinputChange" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="bindbarcodefocus" v-model="bindbarcode" placeholder="è¯·æ«ææçæ¡ç " ref='midInput'/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="bindstock" type="primary" size="default" style="margin-top: 2%;">åºåç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" @input="inputChange()" v-model="materialsns" placeholder="è¯·æ«æå
ç®±æ ç¾" |
| | | ref='midInput' :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="产线ç¼å·"> |
| | | <uni-easyinput type="text" v-model="line" placeholder="请è¾å
¥äº§çº¿ç¼å·" ref='midInput' :focus="!istrue" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">嫿</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-if="innersn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(innersn.matCode)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{innersn.matCode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['Cåºç»ç', 'Cåºåºåç»å®', 'Cåºå«æ'], |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | locationNo: "", |
| | | bindbarcode: '', |
| | | bindbarcodefocus: false, |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | updateFocus() { |
| | | this.materSn = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }, |
| | | barcodeFocus() {}, |
| | | onClickItem(e) { |
| | | if (this.barcode == "") { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | } else { |
| | | this.focus = true; |
| | | this.addressFocus = true; |
| | | } |
| | | |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.focus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.focus = true; |
| | | } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | // this.focus = false; |
| | | var matInfo = this.materSn.split('|'); |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: this.materSn |
| | | } |
| | | var orderInfo = matObj.orderNo.split('.'); |
| | | var temp = this.matInfos.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push(this.materSn); |
| | | this.matInfos.push(matObj); |
| | | // setTimeout(this.updateFocus, 200); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus, 200); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus, 200); |
| | | } |
| | | } |
| | | this.materSn = ''; |
| | | }) |
| | | }, |
| | | bindstock() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.bindbarcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.locationNo, |
| | | "barcode": this.bindbarcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/BindStock', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | locationNoinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/Bill_group_stock/OtherBoxing', { |
| | | MainData: { |
| | | "pallet_barcode": this.barcode, |
| | | "orderNo": this.orderNo |
| | | }, |
| | | DetailData: this.matInfos, |
| | | DelKeys: this.sns |
| | | }).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.showToast.show({ |
| | | title: err.message, |
| | | type: 'error' |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0"> |
| | | <uni-forms style="margin-top: 20px;margin-left: 20px;width: 100%;" label-width="180"> |
| | | <uni-forms-item :label="label"> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" |
| | | v-model="barcode" @input="barcodeInput" @focus="barcodeFocus"/> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="focus" v-model="materSn" |
| | | @input="snInput"/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default"style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matInfos" :key="item.orderNo"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.orderNo)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">çäº§æ¥æï¼{{item.matProductionDate}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | <view v-if="current === 1"> |
| | | <uni-forms style="margin-top: 20px;margin-left: 20px;width: 100%;" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode()" @focus="barcodeFocus"/> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus"/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">åºåç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['ç»ç', 'åºåç»å®'], |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | }, |
| | | methods: { |
| | | updateFocus() { |
| | | this.materSn = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }, |
| | | barcodeFocus() { |
| | | }, |
| | | onClickItem(e) { |
| | | if(this.barcode == ""){ |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | }else{ |
| | | this.focus = true; |
| | | this.addressFocus = true; |
| | | } |
| | | |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.focus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.focus = true; |
| | | } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | this.focus = false; |
| | | var matInfo = this.materSn.split('|'); |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: this.materSn |
| | | } |
| | | var orderInfo = matObj.orderNo.split('.'); |
| | | var temp = this.matInfos.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push(this.materSn); |
| | | this.matInfos.push(matObj); |
| | | setTimeout(this.updateFocus, 200); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/Bill_group_stock/OtherBoxing', { |
| | | MainData: { |
| | | "pallet_barcode": this.barcode, |
| | | "orderNo": this.orderNo |
| | | }, |
| | | DetailData: this.matInfos, |
| | | DelKeys: this.sns |
| | | }).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.showToast.show({ |
| | | title: err.message, |
| | | type: 'error' |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-data-select v-model="value" :localdata="range" @change="change"></uni-data-select> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="item in allReceivingOrders" :key="item.id"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> ç©æç¼å·:{{item.request_matcode}} </view> |
| | | <view> 嫿ç»ç¹:{{item.request_endpoint}} </view> |
| | | <view> å·¥åå·:{{item.request_orderno}} </view> |
| | | <view> å«ææ¥¼å±:{{item.request_floor}} </view> |
| | | <view> å«æäºº:{{item.creator}} </view> |
| | | <view> 嫿æ¶é´:{{item.createtime}} </view> |
| | | <!-- <view> æ¥æ:{{item.purchase_date}} </view> --> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/outorder/receiveorderinfo?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0, |
| | | city: "city", |
| | | value: "F2", |
| | | range: [{ |
| | | value: "F2", |
| | | text: "F2" |
| | | }, |
| | | { |
| | | value: "F3", |
| | | text: "F3" |
| | | }, |
| | | { |
| | | value: "F4", |
| | | text: "F4" |
| | | }, |
| | | { |
| | | value: "F5", |
| | | text: "F5" |
| | | }, |
| | | ], |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | change(res) { |
| | | this.value = res; |
| | | this.getData(); |
| | | // console.log(res) |
| | | }, |
| | | confirm() { |
| | | |
| | | }, |
| | | search(res) { |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | floor: this.value |
| | | }, |
| | | } |
| | | this.$u.post('/api/Carry/GetCallMatRequest', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | // console.log(this.allReceivingOrders) |
| | | } else { |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | $nav-height: 30px; |
| | | |
| | | .box-bg { |
| | | background-color: #F5F5F5; |
| | | padding: 5px 0; |
| | | } |
| | | |
| | | .city { |
| | | /* #ifndef APP-PLUS-NVUE */ |
| | | display: flex; |
| | | /* #endif */ |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: flex-start; |
| | | // width: 160rpx; |
| | | margin-left: 4px; |
| | | } |
| | | |
| | | .input-view { |
| | | /* #ifndef APP-PLUS-NVUE */ |
| | | display: flex; |
| | | /* #endif */ |
| | | flex-direction: row; |
| | | // width: 500rpx; |
| | | flex: 1; |
| | | background-color: #f8f8f8; |
| | | height: $nav-height; |
| | | border-radius: 15px; |
| | | padding: 0 15px; |
| | | flex-wrap: nowrap; |
| | | margin: 7px 0; |
| | | line-height: $nav-height; |
| | | } |
| | | |
| | | .input-uni-icon { |
| | | line-height: $nav-height; |
| | | } |
| | | |
| | | .nav-bar-input { |
| | | height: $nav-height; |
| | | line-height: $nav-height; |
| | | /* #ifdef APP-PLUS-NVUE */ |
| | | width: 370rpx; |
| | | /* #endif */ |
| | | padding: 0 5px; |
| | | font-size: 12px; |
| | | background-color: #f8f8f8; |
| | | } |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' |
| | | @input="barcodeinputChange" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="barcodefocus" v-model="locationNo" @input="locationNoinputChange" |
| | | placeholder="è¯·æ«æè´§ä½ç¼å·" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="label"> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | label:"" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | }, |
| | | methods: { |
| | | locationNoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo == "") { |
| | | return; |
| | | } |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/Carry/PutMatCheck', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | this.locationNo = ""; |
| | | } |
| | | this.label = res.message; |
| | | }) |
| | | }) |
| | | }, |
| | | barcodeinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="barcodeinputChange" @confirm="submit" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="barcodefocus" v-model="locationNo" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @confirm="submit" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item> |
| | | <button @click="confirm" type="primary" size="default" style="margin-top: 2%;">æ°é确认</button> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="trainStockBind" type="primary" size="default" |
| | | style="margin-top: 2%;">æå¨ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!checkbarcodefocus" v-model="checkbarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç " ref='midInput' @input="checkbarcodeinputChange" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="checkbarcodefocus" v-model="checklocationNo" |
| | | @input="locationNoinputChange" placeholder="è¯·æ«æè´§ä½ç¼å·" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="label"> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æ¡ç ä¿¡æ¯"> |
| | | <uni-easyinput type="text" :focus="!infobarcodefocus" v-model="infobarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç æå°ç«è½¦æ¡ç " ref='midInput' @input="infoinputChange" /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="(item,index) in infos" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼å·ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">åºåºæ°éï¼{{item.quantity}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">é
éå°åï¼{{item.address}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">å½åä½ç½®ï¼{{item.currentAddress}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['åºåç»å®', 'é
éæ ¡éª', 'é
éä¿¡æ¯æ¥è¯¢'], |
| | | current: 0, |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | |
| | | checklocationNo: "", |
| | | checkbarcode: '', |
| | | checkbarcodefocus: false, |
| | | label: "", |
| | | |
| | | infos: [], |
| | | infobarcode: '', |
| | | infobarcodefocus: false, |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | confirm() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "trainCode": this.locationNo, |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/TrainStockBindConfirm', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | trainStockBind() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "trainCode": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/TrainStockBind', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | barcodeinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | locationNoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.checklocationNo == "") { |
| | | return; |
| | | } |
| | | if (this.checkbarcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.checklocationNo, |
| | | "barcode": this.checkbarcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/Carry/PutMatCheck', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.checklocationNo = ""; |
| | | this.checkbarcode = ""; |
| | | this.checkbarcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | this.checklocationNo = ""; |
| | | this.checkbarcode = ""; |
| | | this.checkbarcodefocus = false; |
| | | } |
| | | this.label = res.message; |
| | | }) |
| | | }) |
| | | }, |
| | | checkbarcodeinputChange() { |
| | | this.checkbarcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.checkbarcode != '') { |
| | | this.checkbarcodefocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | infoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.infobarcode != '') { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.infobarcode |
| | | } |
| | | }; |
| | | this.$u.post('/api/Carry/GetCarryInfo', postData).then(res => { |
| | | if (res.status) { |
| | | this.infos = res.data |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.infobarcode = ""; |
| | | }) |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view > |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æ¡ç ä¿¡æ¯"> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç æå°ç«è½¦æ¡ç " ref='midInput' |
| | | @input="locationNoinputChange()" /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="(item,index) in infos" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼å·ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">åºåºæ°éï¼{{item.quantity}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">é
éå°åï¼{{item.address}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">å½åä½ç½®ï¼{{item.currentAddress}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | infos: [], |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | }, |
| | | methods: { |
| | | locationNoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode |
| | | } |
| | | }; |
| | | this.$u.post('/api/Carry/GetCarryInfo', postData).then(res => { |
| | | if (res.status) { |
| | | this.infos = res.data |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.barcode = ""; |
| | | }) |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 20%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' |
| | | @input="locationNoinputChange()" @confirm="submit" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="barcodefocus" v-model="locationNo" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @confirm="submit" /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item> |
| | | <button @click="confirm" type="primary" size="default" style="margin-top: 2%;">æ°é确认</button> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">æå¨ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | confirm(){ |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "trainCode": this.locationNo, |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/TrainStockBindConfirm', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "trainCode": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/TrainStockBind', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | locationNoinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.directorder_code)" link |
| | | :to="page+item.directorder_code" v-for="item in allReceivingOrders" :key="item.directorder_code"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> è°æ¨åå·:{{item.directorder_code}} </view> |
| | | <!-- <view> è°æ¨ç±»å:{{item.directorder_type}} </view> --> |
| | | <view> åæ®æ¥æ:{{item.directorder_date}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/directorder/directorderoutbound?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetDirectOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if(res.data){ |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | }else{ |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms style="margin-left: 2%;margin-top: 20px;" label-width="180"> |
| | | <uni-forms-item :label="label"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼ç´æ¥è°æ¨å"></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±ç ï¼"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±ç " ref='midInput' :focus="focus" |
| | | v-model="innerCode" @input="innercodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="matCode"></uni-forms-item> |
| | | <uni-forms-item :label="matName"></uni-forms-item> |
| | | <uni-forms-item :label="currentQty"></uni-forms-item> |
| | | <uni-forms-item :label="orderQty"></uni-forms-item> |
| | | <uni-forms-item :label="scanQty"></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="åºå"><uni-data-select v-model="value" |
| | | :localdata="range"></uni-data-select></uni-forms-item> |
| | | <uni-forms-item label="楼å±"><uni-data-select v-model="floor" |
| | | :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºåºå"> |
| | | <uni-data-select v-model="endType" :localdata="endTypeRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <button type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="outbound(item.matCode)">åºåº</button> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">åæ®æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">å·²åé
æ°éï¼{{item.processQty}}</view> |
| | | <view style="font-size: 18px;">åºåºæ°éï¼{{item.outQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="printfloor" :localdata="printfloorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <uni-forms-item :label="tagmatName"></uni-forms-item> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 4" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="releasevalue" placeholder="请æ«ç " |
| | | ref='midInput' :focus="releasefocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default" style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotals" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æ«æ', 'æç»', 'æå', 'å
¥åº', 'è§£ç'], |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | focus: true, |
| | | tag: "", |
| | | number: "", |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | value: "", |
| | | range: [], |
| | | floor: "", |
| | | floorrange: [], |
| | | printfloor: "", |
| | | printfloorrange: [], |
| | | barcode: "", |
| | | address: "", |
| | | istrue: false, |
| | | releasefocus: true, |
| | | releasevalue: "", |
| | | matInfo: [], |
| | | matTotals: [], |
| | | value2: "", |
| | | searchValue: "", |
| | | endType: "", |
| | | endTypeRange: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.printfloorrange = config.printFloorRange; |
| | | this.floorrange = config.outboundFloorRange; |
| | | if (config.outboundFloor) { |
| | | this.floor = config.outboundFloor; |
| | | } |
| | | if (config.printFloor) { |
| | | this.printfloor = config.printFloor; |
| | | } |
| | | this.range = config.warehouseRange; |
| | | this.endTypeRange = config.outboundAreaRange; |
| | | if (config.outboundArea) { |
| | | this.endType = config.outboundArea; |
| | | } |
| | | if (config.warehouseArea) { |
| | | this.value = config.warehouseArea; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | search() { |
| | | this.getData(); |
| | | }, |
| | | releasebox() { |
| | | if (this.releasevalue.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.releasevalue.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.releasevalue = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput() { |
| | | this.$nextTick(() => { |
| | | if (this.releasevalue.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.releasevalue.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.innerCode = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | inbound() { |
| | | if (this.barcode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçå·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.address.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå°åæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | searchValue: this.searchValue |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetDirectOrderInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | innercodeInput() { |
| | | this.$nextTick(() => { |
| | | if (this.innerCode == "") { |
| | | return; |
| | | } |
| | | var innerCode = this.innerCode; |
| | | setTimeout(() => { |
| | | this.innerCode = ""; |
| | | }, 10); |
| | | |
| | | // this.focus = false; |
| | | if (innerCode.split('|').length == 7) { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | innerCode: innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/UpdateDirectOrder', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matCode = "ç©æç¼ç ï¼" + res.data.matCode; |
| | | this.matName = "ç©æåç§°ï¼" + res.data.matName; |
| | | this.orderQty = "éæ±æ°éï¼" + res.data.orderQty; |
| | | this.currentQty = "å·²æ«æ°éï¼" + res.data.currentQty; |
| | | this.scanQty = "累计æ°éï¼" + res.data.scanQty; |
| | | if (res.message) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | return; |
| | | } |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | }) |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | // this.innerCode = ""; |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥æ°é", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printfloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | outbound(code) { |
| | | if (this.floor == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | matCode: code, |
| | | orderNo: this.orderNo, |
| | | system: this.value, |
| | | floor: this.floor, |
| | | endType: this.endType |
| | | } |
| | | } |
| | | this.$u.post('/api/ErpOrder/DirectOrderOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }) |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="barcodeFocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">ç³è¯·å
¥åº</button> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="åºåºåºå"> |
| | | <uni-data-select v-model="outArea" :localdata="outAreas"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æå¨æ¥¼å±"> |
| | | <uni-data-select v-model="floor" :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºæ°é"> |
| | | <uni-easyinput type="text" v-model="num" placeholder="请è¾å
¥åºåºæ°é" ref='midInput' |
| | | :focus="numFocus" /> |
| | | </uni-forms-item> |
| | | <button @click="outbound" type="primary" size="default" style="margin-top: 2%;">åºåº</button> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['空箱å
¥åº', '空箱åºåº'], |
| | | current: 0, |
| | | barcodeFocus: true, //空箱å
¥åºæçå·å
æ |
| | | addressFocus: false, //空箱å
¥åºå°åå
æ |
| | | barcode: '', //空箱æçå· |
| | | address: "", //空箱å
¥åºå°å |
| | | floorFocus: true, //空箱åºåºæ¥¼å±å
æ |
| | | numFocus: false, //空箱åºåºæ°éå
æ |
| | | floor: '', //æ¥¼å± |
| | | num: "", //空箱åºåºæ°é |
| | | floor: "", |
| | | floorrange: [], |
| | | outArea:"", |
| | | outAreas:[ |
| | | { |
| | | value: "1", |
| | | text: "å
¥åºåº" |
| | | },{ |
| | | value: "2", |
| | | text: "åºåºåº" |
| | | },{ |
| | | value: "6", |
| | | text: "å
¥åºè¾é线" |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.floorrange = config.outboundFloorRange; |
| | | if (config.outboundFloor) { |
| | | this.floor = config.outboundFloor; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.barcodeFocus = true; |
| | | this.addressFocus = false; |
| | | this.floorFocus = true; |
| | | this.numFocus = false; |
| | | }, |
| | | methods: { |
| | | onClickItem(e) { |
| | | this.addressFocus = false; |
| | | this.floorFocus = true; |
| | | this.numFocus = false; |
| | | this.barcodeFocus = true; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | |
| | | }, |
| | | inbound() { |
| | | if (this.barcode == '') { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.startPoint == '') { |
| | | this.$refs.uToast.show({ |
| | | title: "å°åä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/EmptyBoxInbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.barcodeFocus = true; |
| | | this.addressFocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.barcodeFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | outbound() { |
| | | if (this.floor == '') { |
| | | this.$refs.uToast.show({ |
| | | title: "楼å±ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.num == '') { |
| | | this.$refs.uToast.show({ |
| | | title: "æ°éä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "floor": this.floor, |
| | | "num": this.num, |
| | | "area": this.outArea |
| | | } |
| | | } |
| | | this.$u.post('/api/Outbound/EmptyBoxOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.barcodeFocus = true; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item :label="label"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼çäº§é¢æå"></uni-forms-item> |
| | | <uni-forms-item label="æè½¦ç¼ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææè½¦ç¼ç " |
| | | ref='midInput' @input="inputChangebarcode()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç©æç¼å·"> |
| | | <uni-combox :candidates="candidates" placeholder="è¯·éæ©ç©æç¼å·" v-model="matcode"></uni-combox> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç©ææ°é"> |
| | | <uni-easyinput type="number" v-model="quantity" placeholder="请è¾å
¥æ°é" ref='midInput' |
| | | :focus="quantityFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="addItem" type="primary" style="margin-left: 50px;" size="mini">æ·»å </button> |
| | | <button @click="submit" type="primary" style="margin-left: 100px;" size="mini">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matInfos" :key="item.index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matcode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©ææ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="locationNo" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @input="locationNoinputChange" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="barcodefocus" v-model="barcode2" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="bindStock" type="primary" size="default" |
| | | style="margin-top: 2%;">æå¨ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | // const SixUniTts = uni.requireNativePlugin("SmallSix-SixUniTts") |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['åæåç»ç', 'åºåç»å®'], |
| | | current: 0, |
| | | istrue: false, |
| | | barcode: '', |
| | | matInfos: [], |
| | | barcodefocus: true, |
| | | quantity: 0, |
| | | quantityFocus: false, |
| | | matcode: "", |
| | | index: 0, |
| | | locationNo: "", |
| | | barcode2: '', |
| | | barcodefocus: false, |
| | | label: "", |
| | | orderNo: "", |
| | | candidates: [] |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.barcodefocus = false; |
| | | this.istrue = false; |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrderInfoByCode', postData).then((res) => { |
| | | if (res.status) { |
| | | // this.orderInfo = res.data.receiving_Dtls; |
| | | this.candidates = res.data.matCodes; |
| | | // if (this.orderInfo.length > 3) { |
| | | // this.loadVisible = true; |
| | | // } |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.barcodeFo = true; |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | bindStock() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.barcode2 == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.locationNo, |
| | | "barcode": this.barcode2 |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/BindStock', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode2 = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | locationNoinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææè½¦ç¼ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.matInfos.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请å½å
¥ç©æä¿¡æ¯", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var params = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "orderNo": this.orderNo |
| | | }, |
| | | DetailData: this.matInfos |
| | | }; |
| | | this.$u.post('/api/StockOperate/BCPBoxing', params).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.matInfos = []; |
| | | this.barcode = ""; |
| | | this.matcode = ""; |
| | | this.quantity = 0; |
| | | this.quantityFocus = true; |
| | | this.istrue = false; |
| | | this.index = 0; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | addItem() { |
| | | this.$nextTick(() => { |
| | | if (this.matcode != "" && this.quantity > 0) { |
| | | this.matInfos.push({ |
| | | matcode: this.matcode, |
| | | quantity: parseInt(this.quantity), |
| | | index: this.index++ |
| | | }); |
| | | this.$refs.uToast.show({ |
| | | title: "æ·»å æå", |
| | | type: "success" |
| | | }) |
| | | this.matcode = ""; |
| | | this.quantity = 0; |
| | | this.quantityFocus = false; |
| | | this.istrue = true; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ°æ®è¾å
¥é误", |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.$nextTick(() => { |
| | | this.istrue = false; |
| | | this.quantityFocus = true; |
| | | }) |
| | | }, |
| | | updateFocus() { |
| | | this.materialsns = ''; |
| | | if (!this.istrue) { |
| | | this.istrue = true; |
| | | } |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | this.matInfos.map((item, index) => { |
| | | if (item.matcode == res) { |
| | | this.matInfos.splice(index, 1); |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.receive_code)" link |
| | | :to="page+item.receive_code" v-for="item in allReceivingOrders" :key="item.receive_code"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> å·¥åå·:{{item.receive_code}} </view> |
| | | <view> 产åæå·:{{item.receive_productNo}} </view> |
| | | <view> 产线:{{item.receive_line}} </view> |
| | | <view> æ°é:{{item.receive_quantity}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/halfproduct/halfproductboxing?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrderCodes', postData).then((res) => { |
| | | if (res.status) { |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="page"> |
| | | <view class="top"> |
| | | <view class="background"></view> |
| | | </view> |
| | | <view class="user-card"> |
| | | <view class="card"> |
| | | <view class="top"> |
| | | <view class="userImage"> |
| | | <!-- <open-data type="userAvatarUrl"></open-data> --> |
| | | <u-avatar :src="src" size="146"></u-avatar> |
| | | </view> |
| | | </view> |
| | | <view class="bottom" @tap.native="Login"> |
| | | <view class="left"> |
| | | <view class="user-text"> |
| | | <!-- <open-data type="userNickName"></open-data> --> |
| | | <text style="text-align: center;">{{userNickName}}</text> |
| | | </view> |
| | | <!-- <view class="user-phone"> 171****4133 </view> --> |
| | | </view> |
| | | <view class="right flex-center"> |
| | | <u-icon class="icon" name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="settings" @click="settings"> |
| | | <view class="left"> |
| | | <view class="settings-text"> |
| | | <open-data type="userNickName"></open-data> |
| | | <text style="text-align: center;">设置</text> |
| | | </view> |
| | | <view class="user-phone"> 171****4133 </view> |
| | | </view> |
| | | <view class="right flex-center"> |
| | | <u-icon class="icon" name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> --> |
| | | </view> |
| | | </view> |
| | | <view class="list-card"> |
| | | </view> |
| | | <view class="quit flex-center"> |
| | | <!-- <view class="btn flex-center" @click="LastLogin"> |
| | | æ´æ°ç¨åº |
| | | </view> --> |
| | | <view class="btn flex-center" @click="LastLogin"> |
| | | éåºç»å½ |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | <style lang="scss" scoped> |
| | | .top { |
| | | height: 250rpx; |
| | | position: relative; |
| | | |
| | | .background { |
| | | background-color: #5199ff; |
| | | border-bottom-left-radius: 22px; |
| | | border-bottom-right-radius: 22px; |
| | | position: absolute; |
| | | height: 180rpx; |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .icon { |
| | | color: #96a1ae; |
| | | font-size: 20rpx; |
| | | } |
| | | |
| | | .user-card { |
| | | height: 170rpx; |
| | | padding: 0 15px; |
| | | |
| | | .card { |
| | | position: relative; |
| | | bottom: 62px; |
| | | height: 250rpx; |
| | | background-color: white; |
| | | border-radius: 5px; |
| | | |
| | | .top { |
| | | height: 30%; |
| | | position: relative; |
| | | |
| | | .userImage { |
| | | position: absolute; |
| | | bottom: 24%; |
| | | left: 10%; |
| | | width: 150rpx; |
| | | height: 150rpx; |
| | | overflow: hidden; |
| | | border-radius: 50%; |
| | | border: 2px solid white; |
| | | } |
| | | } |
| | | |
| | | .bottom { |
| | | display: flex; |
| | | height: 70%; |
| | | |
| | | .left { |
| | | width: 80%; |
| | | height: 100%; |
| | | position: relative; |
| | | |
| | | .user-text { |
| | | width: 100%; |
| | | font-size: 1.6em; |
| | | padding-left: 80rpx; |
| | | height: 50%; |
| | | } |
| | | |
| | | .user-phone { |
| | | width: 100%; |
| | | font-size: 1.3em; |
| | | padding-left: 80rpx; |
| | | height: 50%; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | width: 20%; |
| | | height: 50%; |
| | | } |
| | | |
| | | .right2 { |
| | | width: 10%; |
| | | height: 10%; |
| | | } |
| | | } |
| | | |
| | | .settings { |
| | | display: flex; |
| | | height: 70%; |
| | | |
| | | .left { |
| | | width: 80%; |
| | | height: 50%; |
| | | position: relative; |
| | | margin-left: 5%; |
| | | |
| | | .settings-text { |
| | | width: 100%; |
| | | font-size: 1.2em; |
| | | padding-left: 80rpx; |
| | | height: 50%; |
| | | align-items: center; |
| | | padding-top: 10px; |
| | | } |
| | | } |
| | | |
| | | .right { |
| | | width: 20%; |
| | | height: 50%; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .list-card { |
| | | padding: 0 15px; |
| | | |
| | | .card { |
| | | border-radius: 5px; |
| | | position: relative; |
| | | background-color: white; |
| | | border-radius: 5px; |
| | | padding: 5px 30px; |
| | | |
| | | .item { |
| | | display: flex; |
| | | height: 120rpx; |
| | | |
| | | .left { |
| | | width: 15%; |
| | | |
| | | image { |
| | | width: 70rpx; |
| | | height: 70rpx; |
| | | } |
| | | } |
| | | |
| | | .center { |
| | | width: 65%; |
| | | display: flex; |
| | | justify-content: start; |
| | | align-items: center; |
| | | font-size: 1.1em; |
| | | } |
| | | |
| | | .right { |
| | | width: 20%; |
| | | justify-content: flex-end; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .item-bottom-solid { |
| | | border-bottom: 1px solid #d4d6da; |
| | | } |
| | | |
| | | .quit { |
| | | height: 100rpx; |
| | | margin-top: 50px; |
| | | |
| | | .btn { |
| | | background-color: #4f99ff; |
| | | border-radius: 30px; |
| | | width: 80%; |
| | | color: white; |
| | | font-size: 1.2em; |
| | | height: 100%; |
| | | } |
| | | } |
| | | |
| | | .flex-center { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | | |
| | | <script> |
| | | //import { } from "@/common/api/{$}.js"; |
| | | import httpInterceptor from '@/common/http.interceptor.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | src: "", |
| | | userNickName: '请ç»å½', |
| | | }; |
| | | }, |
| | | //çå¬é¡µé¢åå§åï¼å
¶åæ°å onLoad åæ°ï¼ä¸ºä¸ä¸ªé¡µé¢ä¼ éçæ°æ®ï¼åæ°ç±»å为 Objectï¼ç¨äºé¡µé¢ä¼ åï¼ï¼è§¦åæ¶æºæ©äº onLoad |
| | | onInit() {}, |
| | | //çå¬é¡µé¢å è½½ï¼å
¶åæ°ä¸ºä¸ä¸ªé¡µé¢ä¼ éçæ°æ®ï¼åæ°ç±»å为 Objectï¼ç¨äºé¡µé¢ä¼ åï¼ |
| | | onLoad() { |
| | | let isLogin = this.hasLogin(); |
| | | if (isLogin) { |
| | | let haslogin = uni.getStorageSync('jo_user') |
| | | this.userNickName = haslogin.userName; |
| | | this.src = httpInterceptor.baseUrl + "/" + haslogin.img; |
| | | } |
| | | }, |
| | | //çå¬é¡µé¢å次渲æå®æã注æå¦ææ¸²æé度快ï¼ä¼å¨é¡µé¢è¿å
¥å¨ç»å®æå触å |
| | | onReady() {}, |
| | | //çå¬é¡µé¢æ¾ç¤ºã页颿¯æ¬¡åºç°å¨å±å¹ä¸é½è§¦åï¼å
æ¬ä»ä¸çº§é¡µé¢ç¹è¿åé²åºå½åé¡µé¢ |
| | | beforeDestroy() {}, |
| | | //页颿»å¨å°åºé¨çäºä»¶ï¼ä¸æ¯scroll-viewæ»å°åºï¼ï¼å¸¸ç¨äºä¸æä¸ä¸é¡µæ°æ®ã |
| | | onReachBottom() {}, |
| | | onShareAppMessage(res) {}, |
| | | created() {}, |
| | | methods: { |
| | | hasLogin() { |
| | | let haslogin = uni.getStorageSync('jo_user') |
| | | if (haslogin == null || haslogin == "") { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | }, |
| | | |
| | | LastLogin() { |
| | | //uni.clearStorage(); |
| | | uni.removeStorageSync('jo_id_token'); |
| | | uni.removeStorageSync('jo_user'); |
| | | uni.removeStorageSync('jo_userImg'); |
| | | this.$u.route('/pages/login/login'); |
| | | }, |
| | | |
| | | Login() { |
| | | this.$u.route('/pages/login/login'); |
| | | }, |
| | | settings(){ |
| | | this.$u.route('/pages/index/settings'); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- <u-card :title="title" > --> |
| | | <view class="" slot="body"> |
| | | <!-- <view v-for="(item,index) in tree" :key="item.id"> --> |
| | | <u-grid :col="3"> |
| | | <u-grid-item @tap="clickCoupon(item.url)" v-for="(item) in tree" :key="item.id"> |
| | | <u-icon name="coupon" :size="50"></u-icon> |
| | | <view class="grid-text">{{item.name}}</view> |
| | | </u-grid-item> |
| | | </u-grid> |
| | | <!-- </view> --> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | |
| | | <!-- </u-card> --> |
| | | </template> |
| | | |
| | | <script> |
| | | import { config } from '../../common/config.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | // title: 'æä½åè½' |
| | | datas: [], |
| | | tree: [], |
| | | version:"" |
| | | } |
| | | }, |
| | | onShow() { |
| | | // uni.getSystemInfo({ |
| | | // success: (res) => { |
| | | // this.version = res.appWgtVersion; |
| | | // // console.log(res); |
| | | // //æ£æµå½åå¹³å°ï¼å¦ææ¯å®ååå¯å¨å®åæ´æ° |
| | | // if (res.platform == "android") { |
| | | // this.AndroidCheckUpdate(); |
| | | // } |
| | | // } |
| | | // }); |
| | | }, |
| | | onLoad() { |
| | | this.getCurrentTree(); |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | methods: { |
| | | AndroidCheckUpdate: function() { |
| | | var _this = this; |
| | | uni.request({ |
| | | url: 'http://10.1.211.101:9004/api/PDA/GetPDAVersion?version=' + this.version, |
| | | method: 'GET', |
| | | data: {}, |
| | | success: res => { |
| | | if (res.data.data) { |
| | | |
| | | uni.showToast({ |
| | | title: 'ææ°ççæ¬åå¸ï¼æ£æµå°æ¨ç®å为Wifiè¿æ¥ï¼ç¨åºå·²å¯å¨èªå¨æ´æ°ãæ°çæ¬ä¸è½½å®æåå°èªå¨å¼¹åºå®è£
ç¨åºã', |
| | | mask: false, |
| | | duration: 5000, |
| | | icon: "none" |
| | | }); |
| | | var dtask = plus.downloader.createDownload("http://10.1.211.101:9004/api/PDA/DownLoadApp", {}, |
| | | function(d, status) { |
| | | // ä¸è½½å®æ |
| | | if (status == 200) { |
| | | plus.runtime.install(plus.io.convertLocalFileSystemURL(d |
| | | .filename), {}, {}, function(error) { |
| | | uni.showToast({ |
| | | title: 'å®è£
失败', |
| | | mask: false, |
| | | duration: 1500 |
| | | }); |
| | | }) |
| | | } else { |
| | | uni.showToast({ |
| | | title: 'æ´æ°å¤±è´¥', |
| | | mask: false, |
| | | duration: 1500 |
| | | }); |
| | | } |
| | | }); |
| | | dtask.start(); |
| | | } |
| | | }, |
| | | fail: () => { |
| | | console.log('请æ±å¤±è´¥') |
| | | }, |
| | | complete: () => {} |
| | | }); |
| | | }, |
| | | getCurrentTree() { |
| | | this.$u.post('/api/Sys_Menu/getTreeMenu', {}).then(result => { |
| | | this.tree = result; |
| | | }) |
| | | }, |
| | | getTree(id, data, isRootId) { |
| | | this.datas.forEach((x) => { |
| | | if (x.pid == id) { |
| | | x.lv = data.lv + 1; |
| | | if (isRootId) { |
| | | x.rootId = id; |
| | | } |
| | | if (!data.children) data.children = []; |
| | | data.children.push(x); |
| | | this.getTree(x.id, x, isRootId); |
| | | } |
| | | }); |
| | | }, |
| | | getPermission(text) { |
| | | // return true; |
| | | return this.datas.find(x => x.text == text); |
| | | }, |
| | | clickCoupon(url) { |
| | | // console.log("clickCoupon") |
| | | if (this.hasLogin()) { |
| | | this.$u.route(url) |
| | | } else { |
| | | this.$t.message.loading('ç»å½å¤±æè¯·éæ°ç»å½') |
| | | uni.reLaunch({ |
| | | url: '/pages/login/login' |
| | | }); |
| | | } |
| | | }, |
| | | lock() { |
| | | console.log("lock") |
| | | if (this.hasLogin()) { |
| | | this.$u.route("pages/feeding/feeding") |
| | | } else { |
| | | this.$t.message.loading('ç»å½å¤±æè¯·éæ°ç»å½') |
| | | uni.reLaunch({ |
| | | url: '/pages/login/login' |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | //夿æ¯å¦ç»å½ |
| | | hasLogin() { |
| | | let haslogin = uni.getStorageSync('jo_user') |
| | | if (haslogin == null || haslogin == "") { |
| | | return false |
| | | } else { |
| | | return true |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .grid-text { |
| | | font-size: 28rpx; |
| | | margin-top: 4rpx; |
| | | color: $u-type-info; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view style="padding: 5%;"> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æå°æ¥¼å±è®¾ç½®"> |
| | | <uni-data-select v-model="printFloor" :localdata="printFloorRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºæ¥¼å±è®¾ç½®"> |
| | | <uni-data-select v-model="outboundFloor" :localdata="outboundFloorRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç»è®¾ç½®"> |
| | | <uni-data-select v-model="organizeValue" :localdata="organizeRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºå"> |
| | | <uni-data-select v-model="warehouseArea" :localdata="warehouseRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºåºå"> |
| | | <uni-data-select v-model="outboundArea" :localdata="outboundAreaRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ä¿å</button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | printFloor: "", |
| | | outboundFloor: "", |
| | | organizeValue:"", |
| | | warehouseArea:"", |
| | | outboundArea:"", |
| | | printFloorRange:[], |
| | | outboundFloorRange:[], |
| | | organizeRange:[] |
| | | } |
| | | }, |
| | | mounted() { |
| | | var print = uni.getStorageSync('printFloor'); |
| | | if (print) { |
| | | this.printFloor = print; |
| | | config.printFloor = print; |
| | | } |
| | | |
| | | var outbound = uni.getStorageSync('outboundFloor'); |
| | | if (outbound) { |
| | | this.outboundFloor = outbound; |
| | | config.outboundFloor = outbound; |
| | | } |
| | | |
| | | var organize = uni.getStorageSync('organizeValue'); |
| | | if (organize) { |
| | | this.organizeValue = organize; |
| | | config.organizeValue = organize; |
| | | } |
| | | |
| | | var outbound2 = uni.getStorageSync('outboundArea'); |
| | | if (outbound2) { |
| | | this.outboundArea = outbound2; |
| | | config.outboundArea = outbound2; |
| | | } |
| | | |
| | | var warehouse = uni.getStorageSync('warehouseArea'); |
| | | if (warehouse) { |
| | | this.warehouseArea = warehouse; |
| | | config.warehouseArea = warehouse; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.printFloorRange = config.printFloorRange; |
| | | this.outboundFloorRange = config.printFloorRange; |
| | | this.organizeRange = config.organizeRange; |
| | | this.outboundAreaRange = config.outboundAreaRange; |
| | | this.warehouseRange = config.warehouseRange; |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | uni.setStorage({ |
| | | key: 'printFloor', |
| | | data: this.printFloor, |
| | | }); |
| | | config.printFloor = this.printFloor; |
| | | uni.setStorage({ |
| | | key: 'outboundFloor', |
| | | data: this.outboundFloor, |
| | | }); |
| | | config.outboundFloor = this.outboundFloor; |
| | | uni.setStorage({ |
| | | key: 'organizeValue', |
| | | data: this.organizeValue, |
| | | }); |
| | | config.organizeValue = this.organizeValue; |
| | | uni.setStorage({ |
| | | key: 'warehouseArea', |
| | | data: this.warehouseArea, |
| | | }); |
| | | config.warehouseArea = this.warehouseArea; |
| | | uni.setStorage({ |
| | | key: 'outboundArea', |
| | | data: this.outboundArea, |
| | | }); |
| | | config.outboundArea = this.outboundArea; |
| | | this.$refs.uToast.show({ |
| | | title: "ä¿åæå", |
| | | type: "success" |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="template-login"> |
| | | <!-- é¡¶é¨èªå®ä¹å¯¼èª --> |
| | | <!-- <tn-nav-bar fixed alpha customBack> |
| | | <view slot="back" class='tn-custom-nav-bar__back' |
| | | @click="goBack"> |
| | | <text class='icon tn-icon-left'></text> |
| | | <text class='icon tn-icon-home-capsule-fill'></text> |
| | | </view> |
| | | </tn-nav-bar> --> |
| | | |
| | | <view class="login"> |
| | | <!-- é¡¶é¨èæ¯å¾ç--> |
| | | <view class="login__bg login__bg--top"> |
| | | <image class="bg" src="/static/login_top2.jpg" mode="widthFix"></image> |
| | | </view> |
| | | <view class="login__bg login__bg--top"> |
| | | <image class="rocket rocket-sussuspension" src="/static/login_top3.png" mode="widthFix"></image> |
| | | </view> |
| | | |
| | | <view class="login__wrapper"> |
| | | |
| | | <!-- è¾å
¥æ¡å
容--> |
| | | <view class="login__info tn-flex tn-flex-direction-column tn-flex-col-center tn-flex-row-center"> |
| | | <!-- ç»å½ --> |
| | | <block v-if="currentModeIndex === 0"> |
| | | <view |
| | | class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left"> |
| | | <view class="login__info__item__input__left-icon"> |
| | | <view class="tn-icon-my"></view> |
| | | </view> |
| | | <view class="login__info__item__input__content"> |
| | | <input maxlength="45" placeholder-class="input-placeholder" v-model="user" |
| | | placeholder="请è¾å
¥ç»å½ç¨æ·åç§°" /> |
| | | </view> |
| | | </view> |
| | | |
| | | <view |
| | | class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left"> |
| | | <view class="login__info__item__input__left-icon"> |
| | | <view class="tn-icon-lock"></view> |
| | | </view> |
| | | <view class="login__info__item__input__content"> |
| | | <input :password="!showPassword" placeholder-class="input-placeholder" v-model="pass" |
| | | placeholder="请è¾å
¥ç»å½å¯ç " /> |
| | | </view> |
| | | <view class="login__info__item__input__right-icon" @click="showPassword = !showPassword"> |
| | | <view :class="[showPassword ? 'tn-icon-eye' : 'tn-icon-eye-hide']"></view> |
| | | </view> |
| | | </view> |
| | | <view |
| | | class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left"> |
| | | <view class="login__info__item__input__left-icon"> |
| | | <view class="tn-icon-my"></view> |
| | | </view> |
| | | <view class="login__info__item__input__content"> |
| | | <input maxlength="45" placeholder-class="input-placeholder" v-model="code" |
| | | placeholder="请è¾å
¥éªè¯ç " /> |
| | | </view> |
| | | <view class="login__info__item__input__right-icon u-border" style="width: 30%;" |
| | | @click="getVierificationCode"> |
| | | <img v-show="codeImgSrc != ''" :src="codeImgSrc" /> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | <!-- 注å --> |
| | | <view class="login__info__item__input__content" style="margin-top: 20px;"> |
| | | <uni-data-checkbox multiple v-model="checkbox" :localdata="hobby"></uni-data-checkbox> |
| | | </view> |
| | | <view class="login__info__item__button tn-cool-bg-color-7--reverse" |
| | | @click="currentModeIndex === 0 ? login() : registra()" hover-class="tn-hover" |
| | | :hover-stay-time="150">{{ currentModeIndex === 0 ? 'ç»å½' : '注å'}}</view> |
| | | |
| | | <!-- <view v-if="currentModeIndex === 0" class="login__info__item__tips">å¿è®°å¯ç ?</view> --> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- <tn-tips ref="tips" position="top"></tn-tips> --> |
| | | <!-- åºé¨èæ¯å¾ç--> |
| | | <view class="login__bg login__bg--bottom"> |
| | | <image src="/static/login_bottom_bg.jpg" mode="widthFix"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | var app = getApp(); |
| | | export default { |
| | | name: 'login-demo-1', |
| | | // mixins: [template_page_mixin],* |
| | | data() { |
| | | return { |
| | | // å½åéä¸çæ¨¡å¼ |
| | | currentModeIndex: 0, |
| | | // 模å¼é䏿»å |
| | | modeSliderStyle: { |
| | | left: 0 |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºå¯ç |
| | | showPassword: false, |
| | | // åè®¡æ¶æç¤ºæå |
| | | tips: 'è·åéªè¯ç ', |
| | | email: '', |
| | | codeImgSrc: '', |
| | | pass: '', |
| | | code: '1234', |
| | | user: '', |
| | | isDetail: false, |
| | | hobby: [{ |
| | | text: 'è®°ä½è´¦å·', |
| | | value: 1 |
| | | }, |
| | | { |
| | | text: 'è®°ä½å¯ç ', |
| | | value: 2 |
| | | } |
| | | ], |
| | | checkbox: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | currentModeIndex(value) { |
| | | const sliderWidth = uni.upx2px(476 / 2) |
| | | this.modeSliderStyle.left = `${sliderWidth * value}px` |
| | | } |
| | | }, |
| | | onLoad(options) { |
| | | this.getVierificationCode() |
| | | if (options.id) { |
| | | this.isDetail = true |
| | | } |
| | | }, |
| | | mounted() { |
| | | var remAcc = uni.getStorageSync('remAcc'); |
| | | if (remAcc) { |
| | | this.checkbox.push(1); |
| | | } |
| | | |
| | | var remPwd = uni.getStorageSync('remPwd'); |
| | | if (remPwd) { |
| | | this.checkbox.push(2); |
| | | } |
| | | |
| | | var acc = uni.getStorageSync('acc'); |
| | | if (acc) { |
| | | this.user = acc;; |
| | | } |
| | | |
| | | var pwd = uni.getStorageSync('pwd'); |
| | | if (pwd) { |
| | | this.pass = pwd; |
| | | } |
| | | |
| | | }, |
| | | methods: { |
| | | ///è·åéªè¯ç |
| | | getVierificationCode() { |
| | | this.$u.get('/api/User/getVierificationCode', {}).then(res => { |
| | | if (res.img != null) { |
| | | this.codeImgSrc = "data:image/png;base64," + res.img; |
| | | this.email = res.uuid; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: 'è·åéªè¯ç å¤±è´¥è¯·éæ°è·å', |
| | | type: 'error', |
| | | }) |
| | | } |
| | | }) |
| | | // uni.request({ |
| | | // url:"http://192.168.0.101:8098/api/User/getVierificationCode", |
| | | // success: (res) => { |
| | | |
| | | // } |
| | | // }) |
| | | }, |
| | | login() { |
| | | if (this.pass == '') { |
| | | this.$t.message.toast('请è¾å
¥å¯ç ') |
| | | return; |
| | | } else if (this.user == '') { |
| | | this.$t.message.toast('请è¾å
¥ç¨æ·å') |
| | | return; |
| | | } else if (this.pass.length < 6) { |
| | | this.$t.message.toast('å¯ç åºå¤§äº6ä½') |
| | | return; |
| | | } else { |
| | | var userAcc = this.user; |
| | | var userPwd = this.pass; |
| | | var checkValues = this.checkbox; |
| | | var remAcc = this.checkbox.find(x => x == 1); |
| | | |
| | | if (remAcc) { |
| | | uni.setStorage({ |
| | | key: "remAcc", |
| | | data: "1", |
| | | }) |
| | | } else { |
| | | if (uni.getStorageSync('remAcc')) { |
| | | uni.removeStorageSync('remAcc'); |
| | | } |
| | | } |
| | | var remPwd = this.checkbox.find(x => x == 2); |
| | | if (remPwd) { |
| | | uni.setStorage({ |
| | | key: "remPwd", |
| | | data: "2", |
| | | }) |
| | | } else { |
| | | if (uni.getStorageSync('remPwd')) { |
| | | uni.removeStorageSync('remPwd'); |
| | | } |
| | | } |
| | | this.$t.message.loading('æ£å¨ç»å½') |
| | | let userInfo = this.userInfo; |
| | | let userifno = { |
| | | UUID: this.email, |
| | | passWord: this.pass, |
| | | userName: this.user, |
| | | verificationCode: this.code |
| | | } |
| | | this.$u.post('/api/User/login', { |
| | | UUID: this.email, |
| | | passWord: this.pass, |
| | | userName: this.user, |
| | | verificationCode: this.code |
| | | }).then(res => { |
| | | // this.$u.toast(res.message); |
| | | this.$t.message.toast(res.message) |
| | | this.$t.message.closeLoading() |
| | | uni.setStorage({ |
| | | key: 'jo_id_token', |
| | | data: res.data.token, |
| | | }); |
| | | uni.setStorage({ |
| | | key: 'jo_user', |
| | | data: res.data, |
| | | }); |
| | | uni.setStorage({ |
| | | key: 'jo_userImg', |
| | | data: res.data.img, |
| | | }); |
| | | var acc = checkValues.find(x => x == 1); |
| | | if (acc) { |
| | | uni.setStorage({ |
| | | key: 'acc', |
| | | data: userAcc, |
| | | }); |
| | | } else { |
| | | if (uni.getStorage({ |
| | | key: 'acc' |
| | | })) { |
| | | uni.removeStorage({ |
| | | key: 'acc' |
| | | }); |
| | | } |
| | | } |
| | | var pwd = checkValues.find(x => x == 2); |
| | | if (pwd) { |
| | | uni.setStorage({ |
| | | key: 'pwd', |
| | | data: userPwd, |
| | | }); |
| | | } else { |
| | | if (uni.getStorage({ |
| | | key: 'pwd' |
| | | })) { |
| | | uni.removeStorage({ |
| | | key: 'pwd' |
| | | }); |
| | | } |
| | | } |
| | | |
| | | |
| | | setTimeout(() => { |
| | | this.$u.route({ |
| | | type: 'reLaunch', |
| | | url: 'pages/index/index' |
| | | }) |
| | | // this.$Router.replace({name:"tabbar"}) |
| | | }, 200) |
| | | }).catch(res=>{ |
| | | this.getVierificationCode(); |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | codeInput: function(e) { |
| | | this.code = e.detail.value; |
| | | }, |
| | | passInput: function(e) { |
| | | this.pass = e.detail.value; |
| | | }, |
| | | userInput: function(e) { |
| | | this.user = e.detail.value; |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | // @import '@/static/css/templatePage/custom_nav_bar.scss'; |
| | | /* æ¬æµ® */ |
| | | .rocket-sussuspension { |
| | | animation: suspension 3s ease-in-out infinite; |
| | | } |
| | | |
| | | @keyframes suspension { |
| | | |
| | | 0%, |
| | | 100% { |
| | | transform: translate(0, 0); |
| | | } |
| | | |
| | | 50% { |
| | | transform: translate(-0.8rem, 1rem); |
| | | } |
| | | } |
| | | |
| | | .login { |
| | | position: relative; |
| | | height: 100%; |
| | | z-index: 1; |
| | | |
| | | /* èæ¯å¾ç start */ |
| | | &__bg { |
| | | z-index: -1; |
| | | position: fixed; |
| | | |
| | | &--top { |
| | | top: 0; |
| | | left: 0; |
| | | right: 0; |
| | | width: 100%; |
| | | |
| | | .bg { |
| | | width: 750rpx; |
| | | will-change: transform; |
| | | } |
| | | |
| | | .rocket { |
| | | margin: 50rpx 28%; |
| | | width: 400rpx; |
| | | will-change: transform; |
| | | } |
| | | } |
| | | |
| | | &--bottom { |
| | | bottom: -10rpx; |
| | | left: 0; |
| | | right: 0; |
| | | width: 100%; |
| | | // height: 144px; |
| | | margin-bottom: env(safe-area-inset-bottom); |
| | | |
| | | image { |
| | | width: 750rpx; |
| | | will-change: transform; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* èæ¯å¾ç end */ |
| | | |
| | | /* å
容 start */ |
| | | &__wrapper { |
| | | margin-top: 250rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | /* 忢 start */ |
| | | &__mode { |
| | | position: relative; |
| | | margin: 0 auto; |
| | | width: 476rpx; |
| | | height: 77rpx; |
| | | background-color: #FFFFFF; |
| | | box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1); |
| | | border-radius: 39rpx; |
| | | |
| | | &__item { |
| | | height: 77rpx; |
| | | width: 100%; |
| | | line-height: 77rpx; |
| | | text-align: center; |
| | | font-size: 31rpx; |
| | | color: #908f8f; |
| | | letter-spacing: 1em; |
| | | text-indent: 1em; |
| | | z-index: 2; |
| | | transition: all 0.4s; |
| | | |
| | | &--active { |
| | | font-weight: bold; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | |
| | | &__slider { |
| | | position: absolute; |
| | | height: inherit; |
| | | width: calc(476rpx); |
| | | border-radius: inherit; |
| | | box-shadow: 0rpx 18rpx 72rpx 18rpx rgba(0, 195, 255, 0.1); |
| | | z-index: 1; |
| | | transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); |
| | | } |
| | | } |
| | | |
| | | /* 忢 end */ |
| | | |
| | | /* ç»å½æ³¨åä¿¡æ¯ start */ |
| | | &__info { |
| | | margin: 0 30rpx; |
| | | margin-top: 105rpx; |
| | | padding: 30rpx 51rpx; |
| | | padding-bottom: 0; |
| | | border-radius: 20rpx; |
| | | background-color: #ffff; |
| | | box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1); |
| | | |
| | | &__item { |
| | | |
| | | &__input { |
| | | margin-top: 59rpx; |
| | | width: 100%; |
| | | height: 77rpx; |
| | | border: 1rpx solid #E6E6E6; |
| | | border-radius: 39rpx; |
| | | |
| | | &__left-icon { |
| | | width: 10%; |
| | | font-size: 44rpx; |
| | | margin-left: 20rpx; |
| | | color: #AAAAAA; |
| | | } |
| | | |
| | | &__content { |
| | | width: 80%; |
| | | padding-left: 10rpx; |
| | | |
| | | &--verify-code { |
| | | width: 56%; |
| | | } |
| | | |
| | | input { |
| | | font-size: 24rpx; |
| | | // letter-spacing: 0.1em; |
| | | } |
| | | } |
| | | |
| | | &__right-icon { |
| | | width: 10%; |
| | | font-size: 44rpx; |
| | | margin-right: 20rpx; |
| | | color: #AAAAAA; |
| | | } |
| | | |
| | | &__right-verify-code { |
| | | width: 34%; |
| | | margin-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | &__button { |
| | | margin-top: 75rpx; |
| | | margin-bottom: 39rpx; |
| | | width: 100%; |
| | | height: 77rpx; |
| | | text-align: center; |
| | | font-size: 31rpx; |
| | | font-weight: bold; |
| | | line-height: 77rpx; |
| | | letter-spacing: 1em; |
| | | text-indent: 1em; |
| | | border-radius: 39rpx; |
| | | box-shadow: 1rpx 10rpx 24rpx 0rpx rgba(60, 129, 254, 0.35); |
| | | } |
| | | |
| | | &__tips { |
| | | margin: 30rpx 0; |
| | | color: #AAAAAA; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* ç»å½æ³¨åä¿¡æ¯ end */ |
| | | |
| | | /* ç»å½æ¹å¼åæ¢ start */ |
| | | &__way { |
| | | margin: 0 auto; |
| | | margin-top: 110rpx; |
| | | |
| | | &__item { |
| | | &--icon { |
| | | width: 77rpx; |
| | | height: 77rpx; |
| | | font-size: 50rpx; |
| | | border-radius: 100rpx; |
| | | margin-bottom: 18rpx; |
| | | position: relative; |
| | | z-index: 1; |
| | | |
| | | &::after { |
| | | content: " "; |
| | | position: absolute; |
| | | z-index: -1; |
| | | width: 100%; |
| | | height: 100%; |
| | | left: 0; |
| | | bottom: 0; |
| | | border-radius: inherit; |
| | | opacity: 1; |
| | | transform: scale(1, 1); |
| | | background-size: 100% 100%; |
| | | background-image: url(https://tnuiimage.tnkjapp.com/cool_bg_image/icon_bg5.png); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* ç»å½æ¹å¼åæ¢ end */ |
| | | /* å
容 end */ |
| | | |
| | | } |
| | | |
| | | /deep/.input-placeholder { |
| | | font-size: 24rpx; |
| | | color: #E6E6E6; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-forms style="margin-top: 30px;margin-left: 5%;width: 90%;" label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="floor" :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <!-- <uni-forms-item :label="tagmatName"></uni-forms-item> --> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: 0, |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | floor: "F2", |
| | | floorrange: [{ |
| | | value: "F2", |
| | | text: "F2" |
| | | }, |
| | | { |
| | | value: "F4", |
| | | text: "F4" |
| | | }, |
| | | { |
| | | value: "F7", |
| | | text: "F7" |
| | | }, |
| | | { |
| | | value: "F7-2", |
| | | text: "F7-2" |
| | | } |
| | | ], |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.floor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-forms style="margin-top: 30px;margin-left: 30px;width: 100%;" label-width="120"> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <!-- <uni-forms-item :label="tagmatName"></uni-forms-item> --> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: 0, |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: "F2" |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-forms style="margin-top: 30px;margin-left: 30px;width: 100%;" label-width="120"> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <!-- <uni-forms-item :label="tagmatName"></uni-forms-item> --> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: 0, |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: "F4" |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-forms style="margin-top: 30px;margin-left: 30px;width: 100%;" label-width="120"> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <!-- <uni-forms-item :label="tagmatName"></uni-forms-item> --> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: 0, |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: "F7" |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item :label="label" style="display: none;"> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç»ç¼å·"> |
| | | <uni-data-select v-model="value" :localdata="range"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="barcodeFo" |
| | | v-model="barcode" @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="focus" |
| | | v-model="materSn" @input="snInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <checkbox checked="check">æ¯å¦æ»¡ç</checkbox> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="item.sn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.innerCode)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <!-- <view class="uni-note">çäº§æ¥æï¼{{item.matProductionDate}}</view> --> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç " ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åºç¡®è®¤</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="releasevalue" placeholder="请æ«ç " |
| | | ref='midInput' :focus="releasefocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default" |
| | | style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotals" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['ç»ç', 'å
¥åº', 'è§£ç'], |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "", |
| | | check: true, |
| | | value: "", |
| | | barcodeFo: true, |
| | | range: [], |
| | | releasefocus: true, |
| | | releasevalue: "", |
| | | matInfo: [], |
| | | matTotals: [], |
| | | value2: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.barcodeFo = true; |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | this.releasefocus = true; |
| | | this.range = config.organizeRange; |
| | | this.value = config.organizeValue; |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | releasebox() { |
| | | if (this.releasevalue.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.releasevalue.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.releasevalue = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput() { |
| | | this.$nextTick(() => { |
| | | if (this.releasevalue.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.releasevalue.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.focus = true; |
| | | }); |
| | | }, |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (e.currentIndex === 0) { |
| | | this.$nextTick(() => { |
| | | this.barcodeFo = true; |
| | | this.focus = false; |
| | | }) |
| | | } else if (e.currentIndex === 1) { |
| | | this.$nextTick(() => { |
| | | this.addressFocus = false; |
| | | }) |
| | | } else if (e.currentIndex === 2) { |
| | | this.$nextTick(() => { |
| | | this.releasefocus = true; |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.$nextTick(function(x) { |
| | | // if (this.barcode != '') { |
| | | // if (this.barcode.substring(0, 1) == 'A' || this.barcode.substring(0, 2) == 'TP') { |
| | | this.focus = true; |
| | | this.barcodeFo = false; |
| | | // } else { |
| | | // this.$refs.uToast.show({ |
| | | // title: "æ«ç é误,è¯·æ«ææçç ", |
| | | // type: "error" |
| | | // }) |
| | | // // setTimeout(this.barcodeFocus, 200); |
| | | // } |
| | | // } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | // this. |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | this.focus = false; |
| | | var matSn = this.materSn; |
| | | setTimeout(() => { |
| | | this.materSn = ""; |
| | | }, 10); |
| | | |
| | | var matInfo = matSn.split('|'); |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: matSn |
| | | } |
| | | var temp = this.matInfos.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push(matSn); |
| | | this.matInfos.push(matObj); |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | this.addressFocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | var sn = ''; |
| | | this.matInfos.map((item, index) => { |
| | | if (item.innerCode == res) { |
| | | this.matInfos.splice(index, 1); |
| | | sn = item.sn; |
| | | var tmp = this.matTotal.find(x => x.matCode == item.matCode); |
| | | if (tmp) { |
| | | tmp.matQuantity -= parseInt(item.matQty); |
| | | } |
| | | } |
| | | }) |
| | | this.sns.map((item, index) => { |
| | | if (item == res) { |
| | | this.sns.splice(index, 1); |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if(this.value.length == 0){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ç»ç»", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "pallet_barcode": this.barcode, |
| | | "organizeCode": this.value |
| | | }, |
| | | DetailData: this.matInfos |
| | | } |
| | | this.$u.post('/api/Bill_group_stock/OtherBoxing', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | this.barcodeFo = true; |
| | | this.focus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.showToast.show({ |
| | | title: err.message, |
| | | type: 'error' |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 30px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms style="margin-left: 2%;margin-top: 20px;" label-width="180"> |
| | | <uni-forms-item :label="label"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼å
¶ä»åºåºå"></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±ç ï¼"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±ç " ref='midInput' :focus="focus" |
| | | v-model="innerCode" @input="innercodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="matCode"></uni-forms-item> |
| | | <uni-forms-item :label="matName"></uni-forms-item> |
| | | <uni-forms-item :label="currentQty"></uni-forms-item> |
| | | <uni-forms-item :label="orderQty"></uni-forms-item> |
| | | <uni-forms-item :label="scanQty"></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="åºå"><uni-data-select v-model="value" |
| | | :localdata="range"></uni-data-select></uni-forms-item> |
| | | <uni-forms-item label="楼å±"><uni-data-select v-model="floor" |
| | | :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºåºå"> |
| | | <uni-data-select v-model="endType" :localdata="endTypeRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <button type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="outbound(item.matCode)">åºåº</button> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">åæ®æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">å·²åé
æ°éï¼{{item.processQty}}</view> |
| | | <view style="font-size: 18px;">åºåºæ°éï¼{{item.outQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="printfloor" :localdata="printfloorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <uni-forms-item :label="tagmatName"></uni-forms-item> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 4" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="releasevalue" placeholder="请æ«ç " |
| | | ref='midInput' :focus="releasefocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default" style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotals" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æ«æ', 'æç»', 'æå', 'å
¥åº', 'è§£ç'], |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | focus: true, |
| | | tag: "", |
| | | number: "", |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | value: "", |
| | | range: [], |
| | | floor: "", |
| | | floorrange: [], |
| | | printfloor: "", |
| | | printfloorrange: [], |
| | | barcode: "", |
| | | address: "", |
| | | istrue: false, |
| | | releasefocus: true, |
| | | releasevalue: "", |
| | | matInfo: [], |
| | | matTotals: [], |
| | | value2: "", |
| | | searchValue: "", |
| | | endType: "", |
| | | endTypeRange: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.printfloorrange = config.printFloorRange; |
| | | this.floorrange = config.outboundFloorRange; |
| | | if (config.outboundFloor) { |
| | | this.floor = config.outboundFloor; |
| | | } |
| | | if (config.printFloor) { |
| | | this.printfloor = config.printFloor; |
| | | } |
| | | this.range = config.warehouseRange; |
| | | this.endTypeRange = config.outboundAreaRange; |
| | | if (config.outboundArea) { |
| | | this.endType = config.outboundArea; |
| | | } |
| | | if (config.warehouseArea) { |
| | | this.value = config.warehouseArea; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | search() { |
| | | this.getData(); |
| | | }, |
| | | releasebox() { |
| | | if (this.releasevalue.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.releasevalue.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.releasevalue = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput() { |
| | | this.$nextTick(() => { |
| | | if (this.releasevalue.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.releasevalue.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.innerCode = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | inbound() { |
| | | if (this.barcode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçå·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.address.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå°åæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | searchValue: this.searchValue |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetOtherOutOrderInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | innercodeInput() { |
| | | this.$nextTick(() => { |
| | | if (this.innerCode == "") { |
| | | return; |
| | | } |
| | | var innerCode = this.innerCode; |
| | | setTimeout(() => { |
| | | this.innerCode = ""; |
| | | }, 10); |
| | | |
| | | // this.focus = false; |
| | | if (innerCode.split('|').length == 7) { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | innerCode: innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/UpdateOtherOutOrder', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matCode = "ç©æç¼ç ï¼" + res.data.matCode; |
| | | this.matName = "ç©æåç§°ï¼" + res.data.matName; |
| | | this.orderQty = "éæ±æ°éï¼" + res.data.orderQty; |
| | | this.currentQty = "å·²æ«æ°éï¼" + res.data.currentQty; |
| | | this.scanQty = "累计æ°éï¼" + res.data.scanQty; |
| | | if (res.message) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | return; |
| | | } |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | }) |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | // this.innerCode = ""; |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥æ°é", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printfloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | outbound(code) { |
| | | if (this.floor == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if(this.value == ""){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©åºå", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if(this.endType == ""){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©åºåºåºå", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | matCode: code, |
| | | orderNo: this.orderNo, |
| | | system: this.value, |
| | | floor: this.floor, |
| | | endType: this.endType |
| | | } |
| | | } |
| | | this.$u.post('/api/ErpOrder/OtherOutOrderOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }) |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.other_outbound_no)" link |
| | | :to="page+item.other_outbound_no" v-for="item in allReceivingOrders" :key="item.order_id"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> è°æ¨åå·:{{item.other_outbound_no}} </view> |
| | | <!-- <view> è°æ¨ç±»å:{{item.directorder_type}} </view> --> |
| | | <view> åæ®æ¥æ:{{item.other_outbound_date}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/otheroutboundorder/otherorderoutbound?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetOtherOutOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if(res.data){ |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | }else{ |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <view style="background-color: #fff; padding: 20px 20px 20px 20px;width: 96%;margin-left: 2%;margin-top: 20px;"> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="å
ç®±ç " style="background-color: #fff;"> |
| | | <uni-easyinput type="text" :focus="true" v-model="innerCode" placeholder="è¯·æ«æå
ç®±ç " |
| | | ref='midInput' @input="innerCodeInput"/> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | <uni-list class="body" style="width: 96%;margin-left: 2%;" v-if="matInfo"> |
| | | <uni-list-item direction="column"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <!-- <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> --> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{matInfo.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{matInfo.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{matInfo.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="outbound" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | innerCode: "", |
| | | matInfo: null |
| | | } |
| | | }, |
| | | methods: { |
| | | innerCodeInput(){ |
| | | if(this.innerCode != ""){ |
| | | var postData = { |
| | | MainData: { |
| | | innerCode: this.innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/Outbound/GetMatInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matInfo = res.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåä¿¡æ¯æ¥è¯¢å¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | outbound() { |
| | | if(this.innerCode == ""){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | innerCode: this.innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/Outbound/HandOutboundScan', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 60px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 40px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 30%; |
| | | } |
| | | |
| | | .body { |
| | | padding-bottom: 80px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | |
| | | .footerxy { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <view style="background-color: #fff; padding: 20px 20px 20px 20px;width: 96%;margin-left: 2%;margin-top: 20px;"> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="äº§åæ¡ç " style="background-color: #fff;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="sn" placeholder="è¯·æ«æäº§åæ¡ç " |
| | | ref='midInput' @input="outbound" /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | <uni-list class="body" style="width: 96%;margin-left: 2%;" v-if="matInfo"> |
| | | <uni-list-item direction="column"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <!-- <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> --> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{matInfo.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{matInfo.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{matInfo.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <!-- <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="outbound" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> --> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | sn: "", |
| | | matInfo: null |
| | | } |
| | | }, |
| | | methods: { |
| | | snInput() { |
| | | if (this.sn != "") { |
| | | var postData = { |
| | | MainData: { |
| | | sn: this.sn |
| | | }, |
| | | } |
| | | this.$u.post('/api/Outbound/GetProductInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | debugger |
| | | |
| | | this.outbound(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåä¿¡æ¯æ¥è¯¢å¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | outbound() { |
| | | this.$nextTick(() => { |
| | | if (this.sn == "") { |
| | | |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | sn: this.sn |
| | | }, |
| | | } |
| | | this.$u.post('/api/Outbound/ProductOutboundScan', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matInfo = res.data; |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.sn = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 60px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 40px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 30%; |
| | | } |
| | | |
| | | .body { |
| | | padding-bottom: 80px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | |
| | | .footerxy { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" @input="inputChange()" v-model="materialsns" |
| | | placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºæ°é"> |
| | | <uni-easyinput type="number" v-model="num" placeholder="请è¾å
¥åºåºæ°é" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <label style="margin-left: 0%;">æ»æ°é:{{totalNum}}</label> |
| | | <label style="margin-left: 30%;">åºåºæ°é:{{pickNum}}</label> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <label style="margin-left: 0%;">工忻æ°é:{{orderTotalNum}}</label> |
| | | <label style="margin-left: 21%;">累计åºåºæ°é:{{orderPickNum}}</label> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <label style="margin-left: 0%;">å·¥åå·:{{orderNo}}</label> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <checkbox :checked="isPicking" @click="checkedClick">æ¯å¦æ£é</checkbox> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="picking" type="primary" style="margin-left: 0px;">æ£é</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in boxBarcodes" :key="item.sn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.sn)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">çäº§æ¥æï¼{{item.matProductionDate}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | <view class="uni-note">æ¯å¦æ£éï¼{{item.isPicking}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue2" v-model="barcode2" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode2()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" @input="inputChange2()" v-model="innerboxcode" |
| | | placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="istrue2" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç " ref='midInput' @input="inputChangebarcode3" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åºç¡®è®¤</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | // const SixUniTts = uni.requireNativePlugin("SmallSix-SixUniTts") |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æ£é', 'æ£éç»ç', 'å
¥åº'], |
| | | current: 0, |
| | | isPicking: false, |
| | | istrue: false, |
| | | barcode: '', |
| | | materialsns: "", |
| | | boxBarcodes: [], |
| | | sns: [], |
| | | barcodefocus: true, |
| | | totalNum: 0, |
| | | pickNum: 0, |
| | | num: 0, |
| | | orderTotalNum: 0, |
| | | orderPickNum: 0, |
| | | orderNo: "", |
| | | matTotal: [], |
| | | istrue2: false, |
| | | barcode2: '', |
| | | innerboxcode: "", |
| | | sns2: [], |
| | | barcodefocus: true, |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "", |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.barcodefocus = false; |
| | | this.istrue = false; |
| | | }, |
| | | methods: { |
| | | onClickItem(e) { |
| | | this.barcodeFo = true; |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode3() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | picking() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var params = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "num": this.num, |
| | | "pickNum": this.pickNum |
| | | }, |
| | | DetailData: this.sns |
| | | } |
| | | this.$u.post('/api/StockOperate/MatPicking', params).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('æ£éæå!') |
| | | this.barcode = ""; |
| | | this.boxBarcodes = []; |
| | | this.sns = []; |
| | | this.materialsns = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.$nextTick(() => { |
| | | this.istrue = false; |
| | | var matInfo = this.materialsns.split('|'); |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: this.materialsns, |
| | | isPicking: this.isPicking |
| | | } |
| | | var temp = this.boxBarcodes.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push({ |
| | | innerboxcode: this.materialsns, |
| | | isSplit: this.isPicking |
| | | }); |
| | | this.boxBarcodes.push(matObj); |
| | | this.isPicking = false; |
| | | setTimeout(this.updateFocus, 100); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 100); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 100); |
| | | } |
| | | }) |
| | | }, |
| | | checkedClick() { |
| | | this.isPicking = !this.isPicking; |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | updateFocus() { |
| | | this.materialsns = ''; |
| | | if (!this.istrue) { |
| | | this.istrue = true; |
| | | } |
| | | }, |
| | | inputChangebarcode() { |
| | | this.boxBarcodes = []; |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode |
| | | } |
| | | }; |
| | | this.$u.post('/api/Bill_group_stock/IsAllOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | if (res.data.totalNum == res.data.pickNum) { |
| | | res.data.innerBoxCode.forEach(x => { |
| | | var matInfo = x.split('|'); |
| | | if (matInfo.length > 6) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: this.materialsns, |
| | | isPicking: this.isPicking |
| | | } |
| | | this.sns.push({ |
| | | innerboxcode: this.materialsns, |
| | | isSplit: this.isPicking |
| | | }); |
| | | if (!this.boxBarcodes.find(x => x.orderNo == matObj |
| | | .orderNo)) { |
| | | this.boxBarcodes.push(matObj); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | this.totalNum = res.data.totalNum; |
| | | this.pickNum = res.data.pickNum; |
| | | this.orderPickNum = res.data.orderPickNum; |
| | | this.orderTotalNum = res.data.orderTotalNum; |
| | | this.orderNo = res.data.orderNo; |
| | | } |
| | | }) |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | this.matTotal.map((item, index) => { |
| | | var temp = this.boxBarcodes.find(x => x.sn == res); |
| | | if (temp) { |
| | | if (item.matCode == temp.matCode) { |
| | | if (item.matQuantity - temp.matQty == 0) { |
| | | this.matTotal.splice(index, 1); |
| | | } else { |
| | | item.matQuantity -= temp.matQty; |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | this.sns.map((item, index) => { |
| | | if (item.innerboxcode == res) { |
| | | this.sns.splice(index, 1); |
| | | } |
| | | }) |
| | | this.boxBarcodes.map((item, index) => { |
| | | if (item.sn == res) { |
| | | this.boxBarcodes.splice(index, 1); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submit() { |
| | | if (this.barcode2 == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.innerboxcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/StockOperate/PickingBoxing', { |
| | | MainData: { |
| | | "barcode": this.barcode2, |
| | | "innerboxcode": this.innerboxcode |
| | | }, |
| | | DelKeys: this.sns2 |
| | | }).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.barcode2 = ""; |
| | | this.innerboxcode = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChange2(e) { |
| | | |
| | | }, |
| | | inputChangebarcode2() { |
| | | this.istrue2 = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode2 != '') { |
| | | this.istrue2 = true; |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="true" |
| | | v-model="barcode" @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="äº§åæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æäº§åæ¡ç " ref='midInput' :focus="focus" |
| | | v-model="materSn" @input="snInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matInfos" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">å®è§ï¼{{item.safety}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.qty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="(item,index) in sns" :key="item"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">äº§åæ¡ç ï¼{{item}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç " ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åºç¡®è®¤</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æåç»ç', 'æåå
¥åº'], |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "", |
| | | check: true |
| | | } |
| | | }, |
| | | onShow() {}, |
| | | onLoad(res) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | console.log(1); |
| | | this.materSn = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | barcodeFocus() { |
| | | this.barcode = ''; |
| | | if (this.focus) { |
| | | this.focus = false; |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceivingOrderInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 2) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode.length > 0) { |
| | | var param = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/GetProductByBarcode', param).then(res => { |
| | | if (res.status) { |
| | | this.matInfos = res.data.matTotal; |
| | | this.sns.push(res.data.matInfo); |
| | | } |
| | | this.focus = true; |
| | | }) |
| | | } else { |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | this.focus = false; |
| | | var code = this.materSn; |
| | | var param = { |
| | | MainData: { |
| | | "sn": code, |
| | | } |
| | | } |
| | | this.$u.post('/api/Bill_group_stock_product/GetProductInfoBySn', param).then(res => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | var tmp = this.sns.find(x => x == code); |
| | | if (!tmp) { |
| | | var matInfo = this.matInfos.find(x => x.matCode == res.data |
| | | .mater_code && x |
| | | .safety == res.data.safety_regulations); |
| | | if (matInfo) { |
| | | matInfo.qty += 1; |
| | | } else { |
| | | this.matInfos.push({ |
| | | matCode: res.data.mater_code, |
| | | safety: res.data.safety_regulations, |
| | | qty: 1 |
| | | }); |
| | | } |
| | | this.sns.push(code); |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | setTimeout(this.updateFocus, 200); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | setTimeout(this.updateFocus, 200); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误" + res.message, |
| | | type: "error" |
| | | }) |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | setTimeout(this.updateFocus, 200); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误" + res.message, |
| | | type: "error" |
| | | }) |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | setTimeout(this.updateFocus, 200); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/ProductRequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | var sn = ''; |
| | | this.matInfos.map((item, index) => { |
| | | if (item.innerCode == res) { |
| | | this.matInfos.splice(index, 1); |
| | | sn = item.sn; |
| | | var tmp = this.matTotal.find(x => x.matCode == item.matCode); |
| | | if (tmp) { |
| | | tmp.matQuantity -= parseInt(item.matQty); |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | }) |
| | | this.sns.map((item, index) => { |
| | | if (item == res) { |
| | | this.sns.splice(index, 1); |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æäº§åæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/Bill_group_stock_product/ProductBoxing', { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "orderNo": this.orderNo, |
| | | "isFull": this.check |
| | | }, |
| | | DetailData: this.matInfos, |
| | | DelKeys: this.sns |
| | | }).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg('ç»çæå!') |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.showToast.show({ |
| | | title: err.message, |
| | | type: 'error' |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 30px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" style="width: 95%;"> |
| | | <view style="margin-top: 10px;margin-left: 20px;"> |
| | | <u-sticky offset-top="0" zIndex="999" bgColor="#fff" style="width: 100%;"> |
| | | <view style="background-color: #fff; padding-bottom: 20rpx;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="åºåºå°å" style="background-color: #fff;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="outAddress" |
| | | placeholder="请è¾å
¥åºåºå°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in stockInfo" :key="item.id"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="click(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-note">å®è§ï¼{{item.safety_regulations}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="outbound()" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" style="width: 95%;"> |
| | | <uni-forms label-width="120" style="margin-top: 20px;margin-left: 20px;"> |
| | | <uni-forms-item label="åºåºåºä½"> |
| | | <uni-easyinput type="text" :focus="!focus" @input="getMatInfo" v-model="startpoint" |
| | | placeholder="请è¾å
¥åºåºåºä½" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºç«ç¹"> |
| | | <uni-easyinput type="text" :focus="focus" v-model="endpoint" placeholder="请è¾å
¥åºåºç«ç¹" |
| | | ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="manualOutbound" type="primary" size="default" |
| | | style="margin-top: 2%;">åéä»»å¡</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">åºå·ï¼{{index}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼å·ï¼{{item.mater_code}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æåç§°ï¼{{item.mater_name}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">å®è§ï¼{{item.safety}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">äº§åæ¡ç ï¼{{item.product_barcode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æå¨åºåº', 'æå®åºåº'], |
| | | current: 0, |
| | | stockInfo: [], |
| | | outItems: [], |
| | | outAddress: "", |
| | | pageNo: 1, |
| | | searchValue: "", |
| | | focus: false, |
| | | startpoint: "", |
| | | endpoint: "", |
| | | matInfos: [], |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | search() { |
| | | this.$nextTick(() => { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }) |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | system: "KB", |
| | | matCode: this.searchValue |
| | | }, |
| | | Extra: this.pageNo |
| | | } |
| | | this.$u.post('/api/VV_StockProduct/GetStockInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.pageNo == 1) { |
| | | this.stockInfo = res.data; |
| | | } else { |
| | | this.stockInfo = this.stockInfo.concat(res.data); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | }); |
| | | } |
| | | } else { |
| | | this.stockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | getMatInfo() { |
| | | this.$nextTick(() => { |
| | | if (this.startpoint != "") { |
| | | if (this.startpoint.length == 20) { |
| | | var postData = { |
| | | MainData: { |
| | | locationCode: this.startpoint |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/GetProductMatInfo', postData).then(res => { |
| | | if (res.status) { |
| | | this.matInfos = res.data; |
| | | this.focus = true; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | }) |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºä½å·æ«æé误", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | manualOutbound() { |
| | | if (this.startpoint == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥èµ·å§å°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.endpoint == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.matInfos.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "æ åºåä¿¡æ¯", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.startpoint, |
| | | "endPoint": this.endpoint |
| | | }, |
| | | } |
| | | this.$u.post('/api/Outbound/ProductOutboundByLocation', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.startpoint = ""; |
| | | this.endPoint = ""; |
| | | this.matInfos = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | outbound() { |
| | | if (this.outItems.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outItems.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outAddress == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.outItems[0].locationNo, |
| | | "endPoint": this.outAddress |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Outbound/ProductOutboundByLocation', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.outAddress = ""; |
| | | this.outItems = []; |
| | | this.stockInfo = []; |
| | | this.pageNo = 1; |
| | | this.search(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | click(e) { |
| | | if (this.outItems.find(x => x.barcode == e.barcode)) { |
| | | this.outItems.map((item, index) => { |
| | | if (item.barcode == e.barcode) { |
| | | this.outItems.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.outItems.push(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | |
| | | .footerxy { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | margin-left: 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky offset-top="0" zIndex="999" bgColor="#fff" style="width: 100%;"> |
| | | <view style="background-color: #fff; padding-bottom: 20rpx;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="åºåºå°å" style="background-color: #fff;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="outAddress" |
| | | placeholder="请è¾å
¥åºåºå°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in stockInfo" :key="item.id"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="click(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="outbound()" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | stockInfo: [], |
| | | outItems: [], |
| | | outAddress: "", |
| | | pageNo: 1, |
| | | searchValue: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | |
| | | }, |
| | | methods: { |
| | | search() { |
| | | this.$nextTick(() => { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }) |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | system: "ZB", |
| | | matCode: this.searchValue |
| | | }, |
| | | Extra: this.pageNo |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.pageNo == 1) { |
| | | this.stockInfo = res.data; |
| | | } else { |
| | | this.stockInfo = this.stockInfo.concat(res.data); |
| | | } |
| | | }else{ |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | }); |
| | | } |
| | | }else{ |
| | | this.stockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | outbound() { |
| | | if (this.outItems.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outItems.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outAddress == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "id": this.outItems[0].id, |
| | | "endPoint": this.outAddress |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Outbound/HandOutbound', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.outAddress = ""; |
| | | this.outItems = []; |
| | | this.stockInfo = []; |
| | | this.pageNo = 1; |
| | | this.search(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | click(e) { |
| | | if (this.outItems.find(x => x.barcode == e.barcode)) { |
| | | this.outItems.map((item, index) => { |
| | | if (item.barcode == e.barcode) { |
| | | this.outItems.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.outItems.push(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 60px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 40px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 30%; |
| | | } |
| | | |
| | | .body { |
| | | padding-bottom: 80px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | |
| | | .footerxy { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky offset-top="0" zIndex="999" bgColor="#fff" style="width: 100%;"> |
| | | <view style="background-color: #fff; padding-bottom: 20rpx;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="åºåºå°å" style="background-color: #fff;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="outAddress" |
| | | placeholder="请è¾å
¥åºåºå°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in stockInfo" :key="item.id"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="click(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footer"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="outbound()" type="primary" size="default" style="margin-top: 2%;">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | stockInfo: [], |
| | | outItems: [], |
| | | outAddress: "", |
| | | pageNo: 1, |
| | | searchValue: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search() { |
| | | this.$nextTick(() => { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }) |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | system: "KB", |
| | | matCode: this.searchValue |
| | | }, |
| | | Extra: this.pageNo |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.pageNo == 1) { |
| | | this.stockInfo = res.data; |
| | | } else { |
| | | this.stockInfo = this.stockInfo.concat(res.data); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | }); |
| | | } |
| | | } else { |
| | | this.stockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | outbound() { |
| | | if (this.outItems.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outItems.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.outAddress == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "id": this.outItems[0].id, |
| | | "endPoint": this.outAddress |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Outbound/HandOutbound', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.outAddress = ""; |
| | | this.outItems = []; |
| | | // this.stockInfo.map((x, index) => { |
| | | // this.stockInfo.splice(index, 1) |
| | | // }) |
| | | this.stockInfo = []; |
| | | this.pageNo = 1; |
| | | this.search(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | click(e) { |
| | | if (this.outItems.find(x => x.barcode == e.barcode)) { |
| | | this.outItems.map((item, index) => { |
| | | if (item.barcode == e.barcode) { |
| | | this.outItems.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.outItems.push(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 60px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 40px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .body { |
| | | padding-bottom: 80px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | |
| | | .footer { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 10rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <view class="header"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="inputChange()" v-model="locationCode" placeholder="请æ«ç " |
| | | ref='midInput' :focus="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">åºåº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <!-- <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">å
ç®±æ ç¾ï¼{{item.innerBoxCode}}</view> --> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | locationCode: "", |
| | | matInfo: [] |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | //this.hideboard(); |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.locationCode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param = { |
| | | MainData: { |
| | | "locationCode": this.locationCode |
| | | } |
| | | }; |
| | | this.$u.post('/api/StockOperate/ManualOutbound', param).then(resdt => { |
| | | if (resdt.status) { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "success" |
| | | }) |
| | | this.locationCode = ""; |
| | | this.matInfo = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.$nextTick(() => { |
| | | if (this.locationCode.length == 0) { |
| | | return; |
| | | } |
| | | this.matInfo = []; |
| | | var param = { |
| | | MainData: { |
| | | "locationCode": this.locationCode |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/GetStockByLocationCode', param).then(result => { |
| | | if (result.status) { |
| | | this.matInfo = result.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: result.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 30%; |
| | | } |
| | | |
| | | .header { |
| | | width: 100%; |
| | | height: 150px; |
| | | background-color: #ffffff; |
| | | padding: 20rpx 40rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky offset-top="1" zIndex="999" bgColor="#fff"> |
| | | <view style="background-color: #fff; padding-bottom: 20px;"> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | </view> |
| | | </u-sticky> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky offset-top="90" zIndex="999" bgColor="#fff"> |
| | | <view style="background-color: #fff; "> |
| | | <uni-search-bar @confirm="zbsearch" v-model="zbsearchValue"></uni-search-bar> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <!-- <uni-forms-item label="楼å±" style="background-color: #fff;width: 90%;margin-left: 5%;"> |
| | | <uni-data-select v-model="floor" :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> --> |
| | | <uni-forms-item label="åºåºå°å" style="background-color: #fff;width: 90%;margin-left: 5%;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="zboutAddress" |
| | | placeholder="请è¾å
¥åºåºå°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | |
| | | <uni-forms-item></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in zbstockInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="zbclick(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="zboutbound" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle" style="margin: 20px 5%;width: 90%;"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="inputChange" v-model="locationCode" placeholder="请æ«ç " |
| | | ref='midInput' :focus="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">åºåº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky offset-top="90" zIndex="999" bgColor="#fff"> |
| | | <view style="background-color: #fff;"> |
| | | <uni-search-bar @confirm="kbsearch" v-model="kbsearchValue"></uni-search-bar> |
| | | <uni-forms ref="formData" label-width="120"> |
| | | <uni-forms-item label="åºåºå°å" style="background-color: #fff;width: 90%;margin-left: 5%;"> |
| | | <uni-easyinput type="text" maxlength="25" :focus="true" v-model="kboutAddress" |
| | | placeholder="请è¾å
¥åºåºå°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list class="body"> |
| | | <uni-list-item direction="column" v-for="(item,index) in kbstockInfo" :key="item.id"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="kbclick(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">è´§ä½ç¼å·ï¼{{item.locationNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.quantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="footerxy"> |
| | | <u-sticky offset-top="80%" zIndex="999"> |
| | | <button @click="kboutbound" type="primary" size="default">åºåºç¡®è®¤</button> |
| | | </u-sticky> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms style="margin-top: 30px;margin-left: 5%;width: 90%;" label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="printFloor" :localdata="printFloorRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <!-- <uni-forms-item :label="tagmatName"></uni-forms-item> --> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { config } from '../../common/config.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æ æ¿æå¨åºåº', 'æ æ¿æå®åºåº', 'åºå®æå¨åºåº', 'å
ç®±æå'], |
| | | current: 0, |
| | | zbstockInfo: [], |
| | | zboutItems: [], |
| | | zboutAddress: "", |
| | | zbpageNo: 1, |
| | | zbsearchValue: "", |
| | | |
| | | kbstockInfo: [], |
| | | kboutItems: [], |
| | | kboutAddress: "", |
| | | kbpageNo: 1, |
| | | kbsearchValue: "", |
| | | |
| | | locationCode: "", |
| | | matInfo: null, |
| | | |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: 0, |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | printFloor: "", |
| | | printFloorRange: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.printFloorRange = config.printFloorRange; |
| | | if(config.printFloor){ |
| | | this.printFloor = config.outboundFloor; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.zbgetData(); |
| | | }, |
| | | onReachBottom() { |
| | | if (this.current === 0) { |
| | | this.zbpageNo += 1; |
| | | this.zbgetData(); |
| | | } else if (this.current === 2) { |
| | | this.kbpageNo += 1; |
| | | this.kbgetData(); |
| | | } |
| | | }, |
| | | methods: { |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current === 0) { |
| | | this.zbgetData(); |
| | | } else if (this.current === 2) { |
| | | this.kbgetData(); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printFloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | |
| | | submit() { |
| | | if (this.locationCode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param = { |
| | | MainData: { |
| | | "locationCode": this.locationCode |
| | | } |
| | | }; |
| | | this.$u.post('/api/StockOperate/ManualOutbound', param).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }) |
| | | this.locationCode = ""; |
| | | this.matInfo = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.$nextTick(() => { |
| | | if (this.locationCode == "") { |
| | | this.matInfo = []; |
| | | return; |
| | | } |
| | | // this.matInfo = []; |
| | | var param = { |
| | | MainData: { |
| | | "locationCode": this.locationCode |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/GetStockByLocationCode', param).then(result => { |
| | | if (result.status) { |
| | | this.matInfo = result.data; |
| | | console.log(this.matInfo); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: result.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | |
| | | zbsearch() { |
| | | this.$nextTick(() => { |
| | | this.zbpageNo = 1; |
| | | this.zbgetData(); |
| | | }) |
| | | }, |
| | | zbgetData() { |
| | | var postData = { |
| | | MainData: { |
| | | system: "ZB", |
| | | matCode: this.zbsearchValue |
| | | }, |
| | | Extra: this.zbpageNo |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.zbpageNo == 1) { |
| | | this.zbstockInfo = res.data; |
| | | } else { |
| | | this.zbstockInfo = this.zbstockInfo.concat(res.data); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | }); |
| | | } |
| | | } else { |
| | | this.zbstockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | zboutbound() { |
| | | if (this.zboutItems.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.zboutItems.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.zboutAddress == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "id": this.zboutItems[0].id, |
| | | "endPoint": this.zboutAddress |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Outbound/HandOutbound', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.zboutAddress = ""; |
| | | this.zboutItems = []; |
| | | this.zbstockInfo = []; |
| | | this.zbpageNo = 1; |
| | | this.zbsearch(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | zbclick(e) { |
| | | if (this.zboutItems.find(x => x.barcode == e.barcode)) { |
| | | this.zboutItems.map((item, index) => { |
| | | if (item.barcode == e.barcode) { |
| | | this.zboutItems.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.zboutItems.push(e); |
| | | } |
| | | }, |
| | | |
| | | |
| | | kbsearch() { |
| | | this.$nextTick(() => { |
| | | this.kbpageNo = 1; |
| | | this.kbgetData(); |
| | | }) |
| | | }, |
| | | kbgetData() { |
| | | var postData = { |
| | | MainData: { |
| | | system: "kb", |
| | | matCode: this.kbsearchValue |
| | | }, |
| | | Extra: this.kbpageNo |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.kbpageNo == 1) { |
| | | this.kbstockInfo = res.data; |
| | | } else { |
| | | this.kbstockInfo = this.kbstockInfo.concat(res.data); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | }); |
| | | } |
| | | } else { |
| | | this.kbstockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | kboutbound() { |
| | | if (this.kboutItems.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.kboutItems.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åºåºçæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.kboutAddress == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥åºåºå°å", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "id": this.kboutItems[0].id, |
| | | "endPoint": this.kboutAddress |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Outbound/HandOutbound', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºæå", |
| | | type: "success" |
| | | }); |
| | | this.kboutAddress = ""; |
| | | this.kboutItems = []; |
| | | this.kbstockInfo = []; |
| | | this.kbpageNo = 1; |
| | | this.kbsearch(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åºåºå¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | kbclick(e) { |
| | | if (this.kboutItems.find(x => x.barcode == e.barcode)) { |
| | | this.kboutItems.map((item, index) => { |
| | | if (item.barcode == e.barcode) { |
| | | this.kboutItems.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.kboutItems.push(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .itemstyle { |
| | | // margin-top: 30px; |
| | | // margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 100%; |
| | | } |
| | | |
| | | .body { |
| | | padding-bottom: 80px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | |
| | | .footerxy { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.inboundOrderNo)" link |
| | | :to="page+item.inboundOrderNo" v-for="item in allReceivingOrders" :key="item.inboundOrderNo"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> åå·:{{item.inboundOrderNo}} </view> |
| | | <view> å建人:{{item.creater}} </view> |
| | | <view> æ¥æ:{{item.createDate}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/raworderboxing/raworderboxing?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/InboundOrder/GetInboundOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data.length > 0) { |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | } else { |
| | | this.status = 'noMore'; |
| | | //this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0"> |
| | | <uni-forms style="margin-top: 30px;margin-left: 20px;width: 100%;" label-width="180"> |
| | | <uni-forms-item :label="label"> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="true" v-model="barcode" |
| | | @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="focus" v-model="materSn" |
| | | @input="snInput" /> |
| | | </uni-forms-item> |
| | | <!-- <uni-forms-item style="display: none;" label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="!focus" /> |
| | | </uni-forms-item> --> |
| | | <uni-forms-item> |
| | | <checkbox checked="check">æ¯å¦æ»¡ç</checkbox> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="item.sn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.sn)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <!-- <view class="uni-note">çäº§æ¥æï¼{{item.matProductionDate}}</view> --> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | <view v-if="current === 1"> |
| | | <uni-forms style="margin-top: 30px;margin-left: 20px;width: 100%;" label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åºç¡®è®¤</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | <view v-if="current === 2"> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">åä½ï¼{{item.matUnit}}</view> |
| | | <view style="font-size: 18px;">ç»çæ°éï¼{{item.boxQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['ç»ç', 'å
¥åº', 'åæ®ä¿¡æ¯'], |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "", |
| | | check: true |
| | | } |
| | | }, |
| | | onShow() {}, |
| | | onLoad(res) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | // this.materSn = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | barcodeFocus() { |
| | | this.barcode = ''; |
| | | if (this.focus) { |
| | | this.focus = false; |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceivingOrderInfo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 2) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode.length > 0) { |
| | | if (this.barcode.substring(0, 1) == 'A' || this.barcode.substring(0, 2) == 'TP') { |
| | | this.focus = true; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææçç ", |
| | | type: "error" |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | this.focus = false; |
| | | var matSn = this.materSn; |
| | | setTimeout(() => { |
| | | this.materSn = ""; |
| | | }, 10); |
| | | var matInfo = matSn.split('|'); |
| | | |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: matSn |
| | | } |
| | | var temp = this.matInfos.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push(matSn); |
| | | this.matInfos.push(matObj); |
| | | setTimeout(this.updateFocus,200); |
| | | setTimeout(()=>{ |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | },100); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus,200); |
| | | setTimeout(()=>{ |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | },100); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus,200); |
| | | setTimeout(()=>{ |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | },100); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | var sn = ''; |
| | | this.matInfos.map((item, index) => { |
| | | if (item.sn == res) { |
| | | this.matInfos.splice(index, 1); |
| | | sn = item.sn; |
| | | var tmp = this.matTotal.find(x => x.matCode == item.matCode); |
| | | if (tmp) { |
| | | tmp.matQuantity -= parseInt(item.matQty); |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | }) |
| | | this.sns.map((item, index) => { |
| | | if (item == res) { |
| | | this.sns.splice(index, 1); |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/Bill_group_stock/PDA_ScanInStock', { |
| | | MainData: { |
| | | "pallet_barcode": this.barcode, |
| | | "orderNo": this.orderNo, |
| | | "isFull": this.check |
| | | }, |
| | | DelKeys: this.sns |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "ç»çæå", |
| | | type: "success" |
| | | }) |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view class="content"> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="180"> |
| | | <uni-forms-item :label="label"> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç :"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«ææçæ¡ç " ref='midInput' :focus="!focus" |
| | | v-model="barcode" @input="barcodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾:"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' :focus="focus" |
| | | v-model="materSn" @input="snInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <checkbox checked="check">æ¯å¦æ»¡ç</checkbox> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç»ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfos" :key="item.sn"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <uni-icons type="trash" size="22" style="position: absolute;right: 5%;" |
| | | @click="deleteList(item.sn)"> |
| | | </uni-icons> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">订åå·ï¼{{item.orderNo}}</view> |
| | | <view class="uni-note">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-note">æ°éï¼{{item.matQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!addressFocus" v-model="inboundBarcode" |
| | | placeholder="è¯·æ«ææçæ¡ç " ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="addressFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åºç¡®è®¤</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.materielCode}}</view> |
| | | <!-- <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> --> |
| | | <view style="font-size: 18px;">æ°éï¼{{item.orderQuantity}}</view> |
| | | <view style="font-size: 18px;">åä½ï¼{{item.unit}}</view> |
| | | <view style="font-size: 18px;">ç»çæ°éï¼{{item.receiptQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="value" placeholder="请æ«ç " |
| | | ref='midInput' :focus="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['ç»ç', 'å
¥åº', 'åæ®ä¿¡æ¯'],//, 'è§£ç' |
| | | current: 0, |
| | | matTotal: [], |
| | | matInfos: [], |
| | | orderNo: "", |
| | | label: "", |
| | | orderInfo: [], |
| | | focus: false, |
| | | barcode: "", |
| | | materSn: "", |
| | | sns: [], |
| | | addressFocus: false, |
| | | inboundBarcode: "", |
| | | address: "", |
| | | check: true, |
| | | value: "", |
| | | matInfo: [], |
| | | value2: "", |
| | | matTotals:[] |
| | | } |
| | | }, |
| | | onShow() {}, |
| | | onLoad(res) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | //è§£ç |
| | | releasebox(){ |
| | | if (this.value.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.value.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.value |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.value |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.value = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput(){ |
| | | this.$nextTick(() => { |
| | | if (this.value.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.value.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.value |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.value |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.materSn = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | barcodeFocus() { |
| | | this.barcode = ''; |
| | | if (this.focus) { |
| | | this.focus = false; |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/InboundOrderDetail/GetInboundOrderDetails', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 2) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | barcodeInput() { |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode.length > 0) { |
| | | // if (this.barcode.substring(0, 1) == 'A' || this.barcode.substring(0, 2) == 'TP') { |
| | | this.focus = true; |
| | | // } else { |
| | | // this.$refs.uToast.show({ |
| | | // title: "æ«ç é误,è¯·æ«ææçç ", |
| | | // type: "error" |
| | | // }) |
| | | // } |
| | | } |
| | | }) |
| | | }, |
| | | snInput() { |
| | | this.$nextTick(() => { |
| | | if (this.materSn != "") { |
| | | this.focus = false; |
| | | var matSn = this.materSn; |
| | | setTimeout(() => { |
| | | this.materSn = ""; |
| | | }, 10); |
| | | var matInfo = matSn.split('|'); |
| | | |
| | | if (matInfo.length == 7) { |
| | | var matObj = { |
| | | matCode: matInfo[1], |
| | | matProductionDate: matInfo[3], |
| | | matQty: matInfo[5], |
| | | orderNo: matInfo[6], |
| | | sn: matSn |
| | | } |
| | | var temp = this.matInfos.find(x => x.orderNo == matObj.orderNo); |
| | | if (!temp) { |
| | | var tmp = this.matTotal.find(x => x.matCode == matObj.matCode); |
| | | if (!tmp) { |
| | | this.matTotal.push({ |
| | | matCode: matObj.matCode, |
| | | matQuantity: parseInt(matObj.matQty) |
| | | }) |
| | | } else { |
| | | tmp.matQuantity += parseInt(matObj.matQty); |
| | | } |
| | | this.sns.push(matSn); |
| | | this.matInfos.push(matObj); |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç éå¤", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "æ«ç é误,è¯·æ«ææ£ç¡®å
ç®±ç ", |
| | | type: "error" |
| | | }) |
| | | setTimeout(this.updateFocus, 200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | inbound() { |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.inboundBarcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.inboundBarcode = ""; |
| | | this.address = ""; |
| | | setTimeout(()=>{ |
| | | this.addressFocus = false; |
| | | },200); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.addressFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.inboundBarcode != '') { |
| | | this.addressFocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | deleteList(res) { |
| | | var sn = ''; |
| | | this.matInfos.map((item, index) => { |
| | | if (item.sn == res) { |
| | | this.matInfos.splice(index, 1); |
| | | sn = item.sn; |
| | | var tmp = this.matTotal.find(x => x.matCode == item.matCode); |
| | | if (tmp) { |
| | | tmp.matQuantity -= parseInt(item.matQty); |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | }) |
| | | this.sns.map((item, index) => { |
| | | if (item == res) { |
| | | this.sns.splice(index, 1); |
| | | } |
| | | }) |
| | | }, |
| | | submit() { |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçæ¡ç ", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | if (this.sns.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: 'error' |
| | | }) |
| | | return; |
| | | } |
| | | this.$u.post('/api/InboundOrder/MaterielGroup', { |
| | | MainData: { |
| | | "pallet_barcode": this.barcode, |
| | | "orderNo": this.orderNo, |
| | | "isFull": this.check |
| | | }, |
| | | DelKeys: this.sns |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "ç»çæå", |
| | | type: "success" |
| | | }) |
| | | this.focus = false; |
| | | this.barcode = ""; |
| | | this.matInfos = []; |
| | | this.sns = []; |
| | | this.matTotal = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 30px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <view class="header"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="inputChange()" v-model="value" placeholder="请æ«ç " ref='midInput' |
| | | :focus="true" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <label>{{value2}}</label> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotal" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;">æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | value: "", |
| | | matInfo: [], |
| | | value2: "", |
| | | matTotal:[] |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | //this.hideboard(); |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.value.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.value.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.value |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.value |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.value = ""; |
| | | this.matInfo = []; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChange(e) { |
| | | this.$nextTick(() => { |
| | | if (this.value.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.value.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.value |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotal = res.data.stockTotal; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.value |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotal = res.data.stockTotal; |
| | | // console.log(res.data); |
| | | // console.log(this.matTotal); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 30%; |
| | | } |
| | | |
| | | .header { |
| | | width: 100%; |
| | | height: 150px; |
| | | background-color: #ffffff; |
| | | padding: 20rpx 40rpx; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | <view> |
| | | <navigator :url="page+codes" > |
| | | <button type="primary">确认</button> |
| | | </navigator> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in allReceivingOrders" :key="item.receive_no"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> |
| | | <checkbox @click="click(item.receive_no)" ></checkbox> 颿åå·:{{item.receive_no}} |
| | | </view> |
| | | <view style="margin-left: 30px;"> å·¥åå·:{{item.receive_code}} </view> |
| | | <!-- <view> æ¥æ:{{item.purchase_date}} </view> --> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/receiveorder/multiplereceiveorderout?receiveCodes=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0, |
| | | receiveCodes: [], |
| | | codes:"" |
| | | } |
| | | }, |
| | | onShow() { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | onLoad(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | click(e) { |
| | | if (this.receiveCodes.find(x => x == e)) { |
| | | this.receiveCodes.map((item, index) => { |
| | | if (item == e) { |
| | | this.receiveCodes.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.receiveCodes.push(e); |
| | | } |
| | | this.codes = encodeURIComponent(JSON.stringify(this.receiveCodes)); |
| | | }, |
| | | gotoOut() { |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if (res.data) { |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | } else { |
| | | this.status = 'noMore'; |
| | | this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="åæ®ç¼å·ï¼"> |
| | | <uni-data-select v-model="orderNo" |
| | | :localdata="orderNosRange"></uni-data-select></uni-forms-item> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼çäº§é¢æå"></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±ç ï¼"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±ç " ref='midInput' :focus="true" |
| | | v-model="innerCode" @input="innercodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="matCode"></uni-forms-item> |
| | | <uni-forms-item :label="matName"></uni-forms-item> |
| | | <uni-forms-item :label="currentQty"></uni-forms-item> |
| | | <uni-forms-item :label="orderQty"></uni-forms-item> |
| | | <uni-forms-item :label="scanQty"></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="åºå"><uni-data-select v-model="value" |
| | | :localdata="range"></uni-data-select></uni-forms-item> |
| | | <uni-forms-item label="楼å±"><uni-data-select v-model="floor" |
| | | :localdata="floorrange"></uni-data-select></uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <button type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="outbound(item.matCode)">åºåº</button> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <!-- <view style="font-size: 18px;">åæ®å·ï¼{{orderNo}}</view> --> |
| | | <view style="font-size: 18px;">ç©æåç§°ï¼{{item.matName}}</view> |
| | | <view style="font-size: 18px;">åæ®æ°éï¼{{item.totalQty}}</view> |
| | | <view style="font-size: 18px;">å·²åé
æ°éï¼{{item.processQty}}</view> |
| | | <view style="font-size: 18px;">åºåºæ°éï¼{{item.outQty}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-model="printfloor" |
| | | :localdata="printfloorrange"></uni-data-select></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" |
| | | ref='midInput' @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <uni-forms-item :label="tagmatName"></uni-forms-item> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" |
| | | style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 4" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="releasevalue" placeholder="请æ«ç " |
| | | ref='midInput' :focus="releasefocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default" |
| | | style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotals" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['æ¡ç æ«æ', 'æç»', 'æå', 'å
¥åº'], |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | tag: "", |
| | | number: "", |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | value: "KB", |
| | | range: [], |
| | | floor: "", |
| | | floorrange: [], |
| | | orderNos: [], |
| | | orderNosRange: [], |
| | | printfloor: "", |
| | | printfloorrange: [], |
| | | releasefocus: true, |
| | | releasevalue: "", |
| | | matInfo: [], |
| | | matTotals: [], |
| | | value2: "", |
| | | searchValue: "" |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.printfloorrange = config.printFloorRange; |
| | | this.floorrange = config.outboundFloorRange; |
| | | if (config.outboundFloor) { |
| | | this.floor = config.outboundFloor; |
| | | } |
| | | if (config.printFloor) { |
| | | this.printfloor = config.printFloor; |
| | | } |
| | | this.range = config.warehouseRange; |
| | | this.endTypeRange = config.outboundAreaRange; |
| | | if (config.outboundArea) { |
| | | this.endType = config.outboundArea; |
| | | } |
| | | if (config.warehouseArea) { |
| | | this.value = config.warehouseArea; |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | |
| | | this.orderNos = JSON.parse(decodeURIComponent(res.receiveCodes)); |
| | | for (var i = 0; i < this.orderNos.length; i++) { |
| | | this.orderNosRange.push({ |
| | | value: this.orderNos[i], |
| | | text: this.orderNos[i] |
| | | }); |
| | | } |
| | | }, |
| | | methods: { |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.innerCode = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | search() { |
| | | this.getData(); |
| | | }, |
| | | releasebox() { |
| | | if (this.releasevalue.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.releasevalue.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.releasevalue = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput() { |
| | | this.$nextTick(() => { |
| | | if (this.releasevalue.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.releasevalue.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | inbound() { |
| | | if (this.barcode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçå·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.address.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå°åæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNos: JSON.stringify(this.orderNos), |
| | | searchValue: this.searchValue |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/GetReceiveOrderInfos', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | innercodeInput() { |
| | | this.$nextTick(() => { |
| | | if (this.innerCode == "") { |
| | | return; |
| | | } |
| | | if (this.orderNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©é¢æå", |
| | | type: "error" |
| | | }) |
| | | this.innerCode = ""; |
| | | return; |
| | | } |
| | | var innerCode = this.innerCode; |
| | | setTimeout(() => { |
| | | this.innerCode = ""; |
| | | }, 10); |
| | | |
| | | if (innerCode.split('|').length == 7) { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | scanValue: innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/ErpOrder/UpdateReceiveOrder', postData).then((res) => { |
| | | if (res.status) { |
| | | this.matCode = "ç©æç¼ç ï¼" + res.data.matCode; |
| | | this.matName = "ç©æåç§°ï¼" + res.data.matName; |
| | | this.orderQty = "éæ±æ°éï¼" + res.data.orderQty; |
| | | this.currentQty = "å·²æ«æ°éï¼" + res.data.currentQty; |
| | | this.scanQty = "累计æ°éï¼" + res.data.scanQty; |
| | | if (res.message) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | return; |
| | | } |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | }) |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | // this.innerCode = ""; |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥æ°é", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.printfloor.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printfloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | outbound(code) { |
| | | if (this.floor == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if(this.value == ""){ |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©åºå", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | matCode: code, |
| | | orderNos: JSON.stringify(this.orderNos), |
| | | system: this.value, |
| | | floor: this.floor |
| | | } |
| | | } |
| | | this.$u.post('/api/ErpOrder/ReceiveOrdersOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }) |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <u-sticky> |
| | | <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> |
| | | </u-sticky> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" clickable @click="groupClick(item.receiveOrderNo)" link |
| | | :to="page+item.receiveOrderNo" v-for="item in allReceivingOrders" :key="item.receiveOrderNo"> |
| | | <template v-slot:body> |
| | | <uni-group margin-top="20"> |
| | | <view> æ¶è´§åå·:{{item.receiveOrderNo}} </view> |
| | | <!-- <view> 订åç±»å:{{item.receiveOrderType}} </view> |
| | | <view> 订åç¶æ:{{item.receiveOrderStatus}} </view> --> |
| | | <view> ä¾åºå代å·:{{item.suppliersId}} </view> |
| | | </uni-group> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | </uni-list> |
| | | <uni-load-more :status="status" v-if="loadVisible"></uni-load-more> |
| | | |
| | | <u-back-top :scroll-top="scrollTop" top="400"></u-back-top> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | page: "/pages/receiveorder/receiveorderoutbound?orderNo=", |
| | | loadVisible: false, |
| | | searchValue: "", |
| | | status: "more", |
| | | allReceivingOrders: [], |
| | | pageNo: 1, |
| | | scrollTop: 0 |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | onPageScroll(e) { |
| | | this.scrollTop = e.scrollTop; |
| | | }, |
| | | onReachBottom() { |
| | | this.pageNo += 1; |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | search(res) { |
| | | this.pageNo = 1; |
| | | this.getData(); |
| | | }, |
| | | groupClick() { |
| | | |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.searchValue, |
| | | pageNo: this.pageNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/ReceiveOrder/GetReceiveOrders', postData).then((res) => { |
| | | if (res.status) { |
| | | if(res.data.length > 0){ |
| | | if (this.searchValue == '') { |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | // this.allReceivingOrders = res.data; |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } else { |
| | | // this.allReceivingOrders = res.data; |
| | | if(postData.MainData.pageNo==1){ |
| | | this.allReceivingOrders = []; |
| | | } |
| | | this.allReceivingOrders = this.allReceivingOrders.concat(res.data); |
| | | if (this.allReceivingOrders.length > 3) { |
| | | this.loadVisible = true; |
| | | } else { |
| | | this.loadVisible = false; |
| | | } |
| | | } |
| | | }else{ |
| | | this.status = 'noMore'; |
| | | //this.allReceivingOrders = []; |
| | | this.loadVisible = true; |
| | | } |
| | | |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | display: flex; |
| | | position: fixed; |
| | | width: 100%; |
| | | top: 10px; |
| | | text-align: center; |
| | | z-index: 999; |
| | | left: 30px; |
| | | height: 20%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms style="margin-left: 2%;margin-top: 20px;" label-width="180"> |
| | | <uni-forms-item :label="label" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item label="åæ®ç±»åï¼çäº§é¢æå" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item label="å
ç®±ç ï¼" style="margin-top: -20px;"> |
| | | <uni-easyinput type="text" placeholder="è¯·æ«æå
ç®±ç " ref='midInput' :focus="focus" |
| | | v-model="innerCode" @input="innercodeInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="matCode" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item :label="matName" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item :label="currentQty" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item :label="orderQty" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item :label="scanQty" style="margin-top: -20px;"></uni-forms-item> |
| | | <uni-forms-item :label="remaindQty" style="margin-top: -20px;"></uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <u-sticky> |
| | | <!-- <view style="background-color: #ffffff;"> |
| | | <uni-search-bar @confirm="search" v-model="searchValue"></uni-search-bar> |
| | | </view> --> |
| | | </u-sticky> |
| | | <!-- <uni-forms label-width="180"> |
| | | <uni-forms-item label="åºå"> |
| | | <uni-data-select v-if="show" v-model="value" :localdata="range"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-if="show" v-model="floor" :localdata="floorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="åºåºåºå"> |
| | | <uni-data-select v-if="show" v-model="endType" :localdata="endTypeRange"></uni-data-select> |
| | | </uni-forms-item> |
| | | </uni-forms> --> |
| | | <uni-list :border="true"> |
| | | <uni-list-item direction="column" v-for="(item,index) in orderInfo" :key="item.dtlId"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <!-- <button class="button" type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="inputDialogToggle(item.matCode)"><text |
| | | class="button-text">åºåº</text></button> --> |
| | | <!-- <button type="primary" style="position: absolute;right: 1%;" size="mini" |
| | | @click="outbound(item.matCode)">åºåº</button> --> |
| | | <view class="uni-content"> |
| | | <view style="font-size: 18px;">æ¶è´§åå·ï¼{{orderNo}}</view> |
| | | <view style="font-size: 18px;">éè´åå·ï¼{{item.purchaseOrderNo}}</view> |
| | | <view style="font-size: 18px;">ç©æç¼å·ï¼{{item.materielCode}}</view> |
| | | <view style="font-size: 18px;">æ¹æ¬¡å·ï¼{{item.lotNo}}</view> |
| | | <view style="font-size: 18px;">æ¶è´§æ°éï¼{{item.receivedQuantity}}</view> |
| | | <view style="font-size: 18px;">æ¯å¦è´¨æ£ï¼{{item.ifInspection==1?"æ¯":"å¦"}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | <view> |
| | | <!-- è¾å
¥æ¡ç¤ºä¾ --> |
| | | <uni-popup ref="inputDialog" type="dialog"> |
| | | <uni-popup-dialog ref="inputClose" mode="input" title="è¾å
¥å
容" :value="outNum" placeholder="请è¾å
¥å
容" |
| | | @confirm="outbound"></uni-popup-dialog> |
| | | </uni-popup> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 2" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="楼å±"> |
| | | <uni-data-select v-if="show" v-model="printfloor" |
| | | :localdata="printfloorrange"></uni-data-select> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å
ç®±æ ç¾"> |
| | | <uni-easyinput type="text" :focus="tagFocus" v-model="tag" placeholder="è¯·æ«æå
ç®±æ ç¾" ref='midInput' |
| | | @input="tagInput" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item :label="tagmatCode"></uni-forms-item> |
| | | <uni-forms-item :label="tagmatName"></uni-forms-item> |
| | | <uni-forms-item :label="tagQty"></uni-forms-item> |
| | | <uni-forms-item label="æåæ°é"> |
| | | <uni-easyinput type="number" v-model="number" placeholder="请è¾å
¥æåæ°é" ref='midInput' |
| | | :focus="numberFocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="printTag" type="primary" size="default" style="margin-top: 2%;">æå°æ ç¾</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 3" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="!istrue" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " |
| | | ref='midInput' @input="inputChangebarcode" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="å°åæ¡ç "> |
| | | <uni-easyinput type="text" v-model="address" placeholder="è¯·æ«æå°åæ¡ç " ref='midInput' |
| | | :focus="istrue" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="inbound" type="primary" size="default" style="margin-top: 2%;">å
¥åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 4" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item> |
| | | <uni-easyinput type="text" @input="releaseboxInput" v-model="releasevalue" placeholder="请æ«ç " |
| | | ref='midInput' :focus="releasefocus" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="releasebox" type="primary" size="default" style="margin-top: 2%;">è§£ç</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list> |
| | | <uni-list-item direction="column" v-if="value2"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">æçå·ï¼{{value2}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | <uni-list-item direction="column" v-for="item in matTotals" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.matQuantity}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | |
| | | <uni-list-item direction="column" v-for="(item,index) in matInfo" :key="index"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æç¼ç ï¼{{item.matCode}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | ç©æåç§°ï¼{{item.matName}} |
| | | </view> |
| | | <view class="uni-title-sub uni-ellipsis-2" style="font-size: 1.1em;"> |
| | | æ°éï¼{{item.matQty}} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | config |
| | | } from '../../common/config'; |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | export default { |
| | | data() { |
| | | return { |
| | | show: true, |
| | | items: ['æ«æ', 'æç»'], //, 'æå', 'å
¥åº', 'è§£ç' |
| | | current: 0, |
| | | orderNo: "", |
| | | orderInfo: [], |
| | | label: "", |
| | | innerCode: "", |
| | | matCode: "ç©æç¼ç ï¼", |
| | | matName: "ç©æåç§°ï¼", |
| | | orderQty: "éæ±æ°éï¼", |
| | | currentQty: "å·²æ«æ°éï¼", |
| | | scanQty: "累计æ°éï¼", |
| | | remaindQty: "å©ä½æ°éï¼", |
| | | tagFocus: true, |
| | | numberFocus: false, |
| | | focus: true, |
| | | tag: "", |
| | | number: "", |
| | | tagmatCode: "ç©æç¼ç ï¼", |
| | | tagmatName: "ç©æåç§°ï¼", |
| | | tagQty: "å
è£
æ°éï¼", |
| | | value: "", |
| | | range: [], |
| | | floor: "", |
| | | floorrange: [], |
| | | printfloor: "", |
| | | printfloorrange: [], |
| | | barcode: "", |
| | | address: "", |
| | | istrue: false, |
| | | outNum: 0, |
| | | itemCode: "", |
| | | releasefocus: true, |
| | | releasevalue: "", |
| | | matInfo: [], |
| | | matTotals: [], |
| | | value2: "", |
| | | searchValue: "", |
| | | endType: "", |
| | | endTypeRange: [] |
| | | } |
| | | }, |
| | | |
| | | onLoad(res) { |
| | | this.range = config.warehouseRange; |
| | | this.endTypeRange = config.outboundAreaRange; |
| | | if (config.outboundArea) { |
| | | this.endType = config.outboundArea; |
| | | } |
| | | if (config.warehouseArea) { |
| | | this.value = config.warehouseArea; |
| | | } |
| | | this.orderNo = res.orderNo; |
| | | this.label = "åæ®ç¼å·ï¼" + this.orderNo; |
| | | this.getData(); |
| | | }, |
| | | mounted() { |
| | | this.printfloorrange = config.printFloorRange; |
| | | this.floorrange = config.outboundFloorRange; |
| | | if (config.outboundFloor) { |
| | | this.floor = config.outboundFloor; |
| | | } |
| | | if (config.printFloor) { |
| | | this.printfloor = config.printFloor; |
| | | } |
| | | }, |
| | | methods: { |
| | | inputDialogToggle(itemCode) { |
| | | this.itemCode = itemCode; |
| | | this.$refs.inputDialog.open() |
| | | }, |
| | | voiceSpeech(src) { |
| | | innerAudioContext.src = src; // '../../static/success.mp3'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | search() { |
| | | this.getData(); |
| | | }, |
| | | releasebox() { |
| | | if (this.releasevalue.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请æ«ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var param; |
| | | var matInfo = this.releasevalue.split('|'); |
| | | if (matInfo.length == 7) { |
| | | param = { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | } |
| | | } else { |
| | | param = { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseAllBox', param).then(resdt => { |
| | | if (resdt.status) { |
| | | uni.$showMsg('è§£çæå!') |
| | | this.releasevalue = ""; |
| | | this.matInfo = []; |
| | | this.matTotals = []; |
| | | this.value2 = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: resdt.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | releaseboxInput() { |
| | | this.$nextTick(() => { |
| | | if (this.releasevalue.length == 0) { |
| | | return; |
| | | } |
| | | var matInfo = this.releasevalue.split('|'); |
| | | this.matInfo = []; |
| | | if (matInfo.length == 7) { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByInnerCode', { |
| | | MainData: { |
| | | "innerCode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | this.$u.post('/api/StockOperate/GetStockInfoByBarcode', { |
| | | MainData: { |
| | | "barcode": this.releasevalue |
| | | } |
| | | }).then(res => { |
| | | if (res.status) { |
| | | this.matInfo = res.data.stockInfo; |
| | | this.matTotals = res.data.stockTotal; |
| | | this.value2 = res.data.barcode; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | updateFocus() { |
| | | this.$nextTick(() => { |
| | | this.innerCode = ''; |
| | | if (!this.focus) { |
| | | this.focus = true; |
| | | } |
| | | }); |
| | | }, |
| | | inbound() { |
| | | if (this.barcode.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«ææçå·", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.address.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå°åæ¡ç ", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "barcode": this.barcode, |
| | | "startPoint": this.address |
| | | } |
| | | } |
| | | this.$u.post('/api/Inbound/RequestInbound', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg(res.message); |
| | | this.barcode = ""; |
| | | this.address = ""; |
| | | this.istrue = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | inputChangebarcode() { |
| | | this.istrue = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.barcode != '') { |
| | | this.istrue = true; |
| | | } |
| | | }) |
| | | }, |
| | | onClickItem(e) { |
| | | this.focus = false; |
| | | this.addressFocus = false; |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | if (this.current == 1) { |
| | | this.getData(); |
| | | } |
| | | } |
| | | }, |
| | | getData() { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | searchValue: this.searchValue |
| | | }, |
| | | } |
| | | this.$u.post('/api/ReceiveOrderDetail/GetReceiveOrderInfos', postData).then((res) => { |
| | | if (res.status) { |
| | | this.orderInfo = res.data; |
| | | if (this.orderInfo.length > 3) { |
| | | this.loadVisible = true; |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | innercodeInput() { |
| | | this.$nextTick(() => { |
| | | if (this.innerCode == "") { |
| | | return; |
| | | } |
| | | var innerCode = this.innerCode; |
| | | setTimeout(() => { |
| | | this.innerCode = ""; |
| | | }, 10); |
| | | |
| | | // if (innerCode.split('|').length == 7) { |
| | | var postData = { |
| | | MainData: { |
| | | orderNo: this.orderNo, |
| | | scanValue: innerCode |
| | | }, |
| | | } |
| | | this.$u.post('/api/ReceiveOrderDetail/AddReceiveOrderDetail?serNum=' + innerCode + |
| | | '&orderNo=' + this.orderNo, postData).then((res) => { |
| | | if (res.status) { |
| | | var remaind = parseInt(res.data.orderQty) - parseInt(res.data.scanQty); |
| | | this.matCode = "ç©æç¼ç ï¼" + res.data.matCode; |
| | | this.matName = "ç©æåç§°ï¼" + res.data.matName; |
| | | this.orderQty = "éæ±æ°éï¼" + res.data.orderQty; |
| | | this.currentQty = "å·²æ«æ°éï¼" + res.data.currentQty; |
| | | this.scanQty = "累计æ°éï¼" + res.data.scanQty; |
| | | this.remaindQty = "å©ä½æ°éï¼" + remaind; |
| | | if (res.message) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | return; |
| | | } |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/success.mp3'); |
| | | }, 100); |
| | | } else { |
| | | // this.innerCode = ""; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | // setTimeout(this.updateFocus,200); |
| | | setTimeout(() => { |
| | | this.voiceSpeech('../../static/fail.mp3'); |
| | | }, 100); |
| | | } |
| | | }) |
| | | // } else { |
| | | // // this.innerCode = ""; |
| | | // this.$refs.uToast.show({ |
| | | // title: "å
ç®±ç æ«æé误", |
| | | // type: "error" |
| | | // }) |
| | | // // setTimeout(this.updateFocus,200); |
| | | // setTimeout(() => { |
| | | // this.voiceSpeech('../../static/fail.mp3'); |
| | | // }, 100); |
| | | // } |
| | | // this.innerCode = ""; |
| | | }) |
| | | }, |
| | | tagInput() { |
| | | this.$nextTick(() => { |
| | | var tagInfos = this.tag.split('|'); |
| | | if (tagInfos.length == 7) { |
| | | this.tagmatCode = "ç©æç¼ç ï¼" + tagInfos[1]; |
| | | this.tagQty = "ç©ææ°éï¼" + tagInfos[5]; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "å
ç®±ç æ«æé误", |
| | | type: "error" |
| | | }) |
| | | } |
| | | this.numberFocus = true; |
| | | }) |
| | | }, |
| | | printTag() { |
| | | if (this.tag == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·æ«æå
ç®±æ ç¾", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.number <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥æ°é", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.printfloor.length <= 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | tag: this.tag, |
| | | number: this.number, |
| | | floor: this.printfloor |
| | | } |
| | | } |
| | | this.$u.post('/api/StockOperate/PrintTag', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå°æå", |
| | | type: "success" |
| | | }) |
| | | this.tagmatCode = "ç©æç¼ç ï¼"; |
| | | this.tagQty = "å
è£
æ°éï¼"; |
| | | this.tag = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | outbound(val) { |
| | | if (this.floor == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©æ¥¼å±", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.value == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©åºå", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if (this.endType == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©åºåºåºå", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | matCode: this.itemCode, |
| | | orderNo: this.orderNo, |
| | | system: this.value, |
| | | floor: this.floor, |
| | | outNum: val, |
| | | endType: this.endType |
| | | } |
| | | } |
| | | this.$u.post('/api/ErpOrder/ReceiveOrderOutbound', postData).then(res => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: "æå", |
| | | type: "success" |
| | | }) |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="èµ·ç¹åºä½"> |
| | | <uni-easyinput type="text" :focus="locationFocus" v-model="fromLocationNo" placeholder="请è¾å
¥èµ·ç¹åºä½" |
| | | ref='midInput' @input="locationNoinputChange()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç¹åºä½"> |
| | | <uni-easyinput type="text" :focus="!locationFocus" v-model="toLocationNo" placeholder="请è¾å
¥ç»ç¹åºä½" |
| | | ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">ç§»åº</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | fromLocationNo: "", |
| | | toLocationNo: "", |
| | | locationFocus: true |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if(this.fromLocationNo == ''){ |
| | | this.$refs.uToast.show({ |
| | | title: "èµ·ç¹åºä½ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if(this.toLocationNo == ''){ |
| | | this.$refs.uToast.show({ |
| | | title: "ç»ç¹åºä½ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "fromLocation": this.fromLocationNo, |
| | | "toLocation": this.toLocationNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/Relocation/RelocationTask', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.fromLocationNo = ""; |
| | | this.toLocationNo = ""; |
| | | this.locationFocus = true; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | locationNoinputChange(){ |
| | | this.locationFocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.fromLocationNo != '') { |
| | | this.locationFocus = false; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms class="customcss" label-width="120"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="!barcodefocus" v-model="locationNo" @confirm="submit" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @input="locationNoinputChange()" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="barcodefocus" v-model="barcode" placeholder="è¯·æ«ææçæ¡ç " @confirm="submit" ref='midInput'/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">æå¨ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | uni.hideKeyboard(); |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.barcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/BindStock', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | locationNoinputChange() { |
| | | this.barcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo != '') { |
| | | this.barcodefocus = true; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 50%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view > |
| | | <uni-forms label-width="120" class="customcss"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" v-model="locationNo" :focus="!barcodefocus" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | @input="locationNoinputChange()" ref='midInput'/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">è§£é¤ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in stockInfo" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">容å¨ç¼å·ï¼{{item.palletCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æåç§°ï¼{{item.mater_name}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.quantity}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">è´§ä½ç¼å·ï¼{{item.locationCode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | stockInfo: [] |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var _this = this; |
| | | var isDelete = false; |
| | | uni.showModal({ |
| | | title: "æç¤º", |
| | | cancelText:'å¦', |
| | | confirmText:'æ¯', |
| | | confirmColor:'blue', |
| | | content: "æ¯å¦å é¤åºå?", |
| | | showCancel: true, |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | isDelete = true; |
| | | } else if (res.cancel) { |
| | | isDelete = false; |
| | | } |
| | | _this.releaseStock(isDelete); |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | releaseStock(isDelete) { |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | Extra: isDelete |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseStock', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.stockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | updateFocus() { |
| | | |
| | | }, |
| | | locationNoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo != '') { |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.locationNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfoByLocationNo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.stockInfo = res.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | background-color: #fff; |
| | | padding: 20rpx 40rpx; |
| | | width: 100%; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 20%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" :focus="!bindbarcodefocus" v-model="bindlocationNo" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | ref='midInput' @input="bindinputChange" /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="æçæ¡ç "> |
| | | <uni-easyinput type="text" :focus="bindbarcodefocus" v-model="bindbarcode" placeholder="è¯·æ«ææçæ¡ç "ref='midInput'/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="bindstock" type="primary" size="default" style="margin-top: 2%;">æå¨ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | </view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"> |
| | | <uni-forms label-width="120" class="customcss"> |
| | | <uni-forms-item label="è´§ä½ç¼å·"> |
| | | <uni-easyinput type="text" v-model="locationNo" :focus="!barcodefocus" placeholder="请è¾å
¥è´§ä½ç¼å·" |
| | | @input="locationNoinputChange" ref='midInput'/> |
| | | </uni-forms-item> |
| | | <uni-forms-item> |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">è§£é¤ç»å®</button> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in stockInfo" :key="item.matCode"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">容å¨ç¼å·ï¼{{item.palletCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æç¼ç ï¼{{item.matCode}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">ç©æåç§°ï¼{{item.mater_name}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">æ°éï¼{{item.quantity}}</view> |
| | | <view class="uni-title-sub uni-ellipsis-2">è´§ä½ç¼å·ï¼{{item.locationCode}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['åºåç»å®', 'åºåè§£ç»'], |
| | | current: 0, |
| | | |
| | | bindlocationNo: "", |
| | | bindbarcode: '', |
| | | bindbarcodefocus: false, |
| | | |
| | | locationNo: "", |
| | | barcode: '', |
| | | barcodefocus: false, |
| | | stockInfo: [] |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | }, |
| | | bindstock() { |
| | | if (this.bindlocationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.bindbarcode == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "æçå·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.bindlocationNo, |
| | | "barcode": this.bindbarcode |
| | | }, |
| | | } |
| | | this.$u.post('/api/StockOperate/BindStock', postData).then((res) => { |
| | | if (res.status) { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.bindlocationNo = ""; |
| | | this.bindbarcode = ""; |
| | | this.bindbarcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | bindinputChange() { |
| | | this.bindbarcodefocus = false; |
| | | this.$nextTick(function(x) { |
| | | if (this.bindlocationNo != '') { |
| | | this.bindbarcodefocus = true; |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submit() { |
| | | if (this.locationNo == "") { |
| | | this.$refs.uToast.show({ |
| | | title: "è´§ä½å·ä¸è½ä¸ºç©º", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var _this = this; |
| | | var isDelete = false; |
| | | uni.showModal({ |
| | | title: "æç¤º", |
| | | cancelText:'å¦', |
| | | confirmText:'æ¯', |
| | | confirmColor:'blue', |
| | | content: "æ¯å¦å é¤åºå?", |
| | | showCancel: true, |
| | | success: function(res) { |
| | | if (res.confirm) { |
| | | isDelete = true; |
| | | } else if (res.cancel) { |
| | | isDelete = false; |
| | | } |
| | | _this.releaseStock(isDelete); |
| | | } |
| | | }); |
| | | }, |
| | | releaseStock(isDelete) { |
| | | var postData = { |
| | | MainData: { |
| | | "locationNo": this.locationNo, |
| | | "barcode": this.barcode |
| | | }, |
| | | Extra: isDelete |
| | | } |
| | | this.$u.post('/api/StockOperate/ReleaseStock', postData).then((res) => { |
| | | if (res.status) { |
| | | this.stockInfo = []; |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "success" |
| | | }); |
| | | this.locationNo = ""; |
| | | this.barcode = ""; |
| | | this.barcodefocus = false; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | locationNoinputChange() { |
| | | this.$nextTick(function(x) { |
| | | if (this.locationNo != '') { |
| | | var postData = { |
| | | MainData: { |
| | | "locationCode": this.locationNo |
| | | }, |
| | | } |
| | | this.$u.post('/api/VV_StockGroup/GetStockInfoByLocationNo', postData).then((res) => { |
| | | if (res.status) { |
| | | this.stockInfo = res.data; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-list class="footer"> |
| | | <uni-list-item direction="column" v-for="item in taskInfos" :key="item.taskNo"> |
| | | <template v-slot:body> |
| | | <view class="uni-list-box"> |
| | | <checkbox @click="click(item)"></checkbox> |
| | | <view class="uni-content"> |
| | | <view class="uni-title-sub uni-ellipsis-2">ä»»å¡å·ï¼{{item.taskNo}}</view> |
| | | <view class="uni-note">æçå·ï¼{{item.barcode}}</view> |
| | | <view class="uni-note">èµ·ç¹ï¼{{item.startPoint}}</view> |
| | | <view class="uni-note">ç»ç¹ï¼{{item.endPoint}}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </uni-list-item> |
| | | </uni-list> |
| | | |
| | | <view style="background-color: #fff; padding: 20rpx,20rpx;" class="customcss"> |
| | | <u-sticky offset-top="80%" > |
| | | <button type="primary" @click="cancelTask()">åæ¶ä»»å¡</button> |
| | | </u-sticky> |
| | | </view> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | taskInfos: [], |
| | | items: [], |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | getData() { |
| | | this.$u.post('/api/Dt_agvtask/GetTaskInfos', null).then((res) => { |
| | | if (res.status) { |
| | | this.taskInfos = res.data; |
| | | } |
| | | }) |
| | | }, |
| | | cancelTask() { |
| | | if (this.items.length == 0) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©è¦åæ¶çæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | if (this.items.length > 1) { |
| | | this.$refs.uToast.show({ |
| | | title: "è¯·éæ©ä¸æ¡è¦åæ¶çæ°æ®", |
| | | type: "error" |
| | | }); |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "taskNo": this.items[0].taskNo, |
| | | }, |
| | | } |
| | | |
| | | this.$u.post('/api/Dt_agvtask/CancelTask', postData).then((res) => { |
| | | if (res.status) { |
| | | this.items = []; |
| | | this.$refs.uToast.show({ |
| | | title: "åæ¶æå", |
| | | type: "success" |
| | | }); |
| | | this.getData(); |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: "åæ¶å¤±è´¥" + res.message, |
| | | type: "error" |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | click(e) { |
| | | if (this.items.find(x => x.taskNo == e.taskNo)) { |
| | | this.items.map((item, index) => { |
| | | if (item.taskNo == e.taskNo) { |
| | | this.items.splice(index, 1); |
| | | } |
| | | }) |
| | | } else { |
| | | this.items.push(e); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | |
| | | .customcss { |
| | | width: 100%; |
| | | height: 140rpx; |
| | | text-align: center; |
| | | position: fixed; |
| | | /*1ããrelativeãç¸å¯¹å®ä½ï¼2ããabsoluteãç»å¯¹å®ä½ï¼3ããfixedãåºå®å®ä½ï¼4ããstaticãé»è®¤å¼ï¼5ããstickyãç²æ§å®ä½ã*/ |
| | | left: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢å·¦è¾¹0pxçä½ç½®*/ |
| | | bottom: 0px; |
| | | /*å®ä½ï¼ç¦»é¡µé¢åºé¨0pxçä½ç½®*/ |
| | | padding-top: 20rpx; |
| | | } |
| | | |
| | | .footer { |
| | | // padding-top: 20%; |
| | | padding-bottom: 72px; |
| | | background-color: #f1f3f4; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view> |
| | | <uni-segmented-control :current="current" :values="items" @clickItem="onClickItem"> |
| | | </uni-segmented-control> |
| | | <view v-if="current === 0" class="headerstyle"> |
| | | <view class="itemstyle"></view> |
| | | </view> |
| | | <view v-if="current === 1" class="headerstyle"> |
| | | <view class="itemstyle"></view> |
| | | </view> |
| | | |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | items: ['åæåç»ç', 'åºåç»å®'], |
| | | current: 0, |
| | | } |
| | | }, |
| | | onLoad(res) {}, |
| | | methods: { |
| | | onClickItem(e) { |
| | | if (this.current !== e.currentIndex) { |
| | | this.current = e.currentIndex; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | .content { |
| | | display: flex; |
| | | height: 150px; |
| | | } |
| | | |
| | | .content-text { |
| | | font-size: 14px; |
| | | color: #666; |
| | | } |
| | | |
| | | .itemstyle { |
| | | margin-top: 20px; |
| | | margin-left: 5%; |
| | | } |
| | | |
| | | .headerstyle { |
| | | width: 90%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view style="padding: 5%;"> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="èµ·ç¹"> |
| | | <uni-easyinput type="text" :focus="true" v-model="startpoint" placeholder="请è¾å
¥èµ·ç¹å°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç¹"> |
| | | <uni-easyinput type="text" v-model="endpoint" placeholder="请è¾å
¥ç»ç¹å°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">åéä»»å¡</button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | istrue: false, |
| | | startpoint: '', |
| | | endpoint: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | // // this.formData.status=res.status |
| | | // this.formData.outID = res.outID |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | if(this.startpoint.length == 0){ |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥èµ·ç¹", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | if(this.endpoint.length == 0){ |
| | | this.$refs.uToast.show({ |
| | | title: "请è¾å
¥ç»ç¹", |
| | | type: "error" |
| | | }) |
| | | return; |
| | | } |
| | | var postData = { |
| | | MainData: { |
| | | "startPoint": this.startpoint, |
| | | "endPoint": this.endpoint |
| | | } |
| | | } |
| | | this.$u.post('/api/Dt_agvtask/AcrossFloorTask', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg("ä»»å¡åéæå"); |
| | | this.startpoint = ""; |
| | | this.endpoint = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view style="padding: 5%;"> |
| | | <!-- <uni-forms ref="formData" :modelValue="formData" label-width="120"> --> |
| | | <uni-forms label-width="120"> |
| | | <uni-forms-item label="èµ·ç¹"> |
| | | <uni-easyinput type="text" :focus="true" v-model="startpoint" placeholder="请è¾å
¥èµ·ç¹å°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | <uni-forms-item label="ç»ç¹"> |
| | | <uni-easyinput type="text" v-model="endpoint" placeholder="请è¾å
¥ç»ç¹å°å" ref='midInput' /> |
| | | </uni-forms-item> |
| | | </uni-forms> |
| | | |
| | | <button @click="submit" type="primary" size="default" style="margin-top: 2%;">åéä»»å¡</button> |
| | | <u-toast ref="uToast" /> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | istrue: false, |
| | | startpoint: '', |
| | | endpoint: "" |
| | | } |
| | | }, |
| | | onLoad(res) { |
| | | // // this.formData.status=res.status |
| | | // this.formData.outID = res.outID |
| | | }, |
| | | methods: { |
| | | submit() { |
| | | var postData = { |
| | | MainData: { |
| | | "startPoint": this.startpoint, |
| | | "endPoint": this.endpoint |
| | | } |
| | | } |
| | | this.$u.post('/api/standart/sendtask', postData).then(res => { |
| | | if (res.status) { |
| | | uni.$showMsg("ä»»å¡åéæå"); |
| | | this.startpoint = ""; |
| | | this.endpoint = ""; |
| | | } else { |
| | | this.$refs.uToast.show({ |
| | | title: res.message, |
| | | type: "error" |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | this.$refs.uToast.show({ |
| | | title: err.message, |
| | | type: "error" |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/common/uni-ui.scss'; |
| | | |
| | | page { |
| | | display: flex; |
| | | flex-direction: column; |
| | | box-sizing: border-box; |
| | | background-color: #efeff4; |
| | | min-height: 100%; |
| | | height: auto; |
| | | } |
| | | |
| | | .tips { |
| | | color: #67c23a; |
| | | font-size: 14px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | background-color: #f0f9eb; |
| | | height: 0; |
| | | opacity: 0; |
| | | transform: translateY(-100%); |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .tips-ani { |
| | | transform: translateY(0); |
| | | height: 40px; |
| | | opacity: 1; |
| | | } |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | } |
| | | |
| | | .list-picture { |
| | | width: 100%; |
| | | height: 145px; |
| | | } |
| | | |
| | | .thumb-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .ellipsis { |
| | | display: flex; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .uni-ellipsis-1 { |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .uni-ellipsis-2 { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 2; |
| | | -webkit-box-orient: vertical; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="zh-CN"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <link rel="shortcut icon" type="image/x-icon" href="static/favicon.ico"> |
| | | <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> |
| | | <title> |
| | | <%= htmlWebpackPlugin.options.title %> |
| | | </title> |
| | | <script> |
| | | document.addEventListener('DOMContentLoaded', function() { |
| | | document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px' |
| | | }) |
| | | </script> |
| | | <link rel="stylesheet" href="<%= BASE_URL %>static/index.css" /> |
| | | </head> |
| | | <body> |
| | | <noscript> |
| | | <strong>æ¬ç«ç¹å¿
é¡»è¦å¼å¯JavaScriptæè½è¿è¡</strong> |
| | | </noscript> |
| | | <div id="app"></div> |
| | | </body> |
| | | </html> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | TuniaoUi for uniApp v1.0.0 | by å¾é¸ 2021-09-01 |
| | | ä»
ä¾å¼åï¼å¦ä½å®ç¨ææ¿åçæ³å¾è´£ä»»ä¸æ¦ä¸ä½è
æ å
³ |
| | | |
| | | *使ç¨TuniaoUiå¼åæ©å±ä¸æä»¶æ¶ï¼è¯·æ³¨æåºäºtuniaoåç¼ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view v-if="value" class="tn-action-sheet-class tn-action-sheet"> |
| | | <tn-popup |
| | | v-model="value" |
| | | mode="bottom" |
| | | length="auto" |
| | | :popup="false" |
| | | :borderRadius="borderRadius" |
| | | :maskCloseable="maskCloseable" |
| | | :safeAreaInsetBottom="safeAreaInsetBottom" |
| | | :zIndex="elZIndex" |
| | | @close="close" |
| | | > |
| | | <!-- æç¤ºä¿¡æ¯ --> |
| | | <view |
| | | v-if="tips.text" |
| | | class="tn-action-sheet__tips tn-border-solid-bottom" |
| | | :style="[tipsStyle]" |
| | | > |
| | | {{tips.text}} |
| | | </view> |
| | | <!-- æé®å表 --> |
| | | <block v-for="(item, index) in list" :key="index"> |
| | | <view |
| | | class="tn-action-sheet__item tn-text-ellipsis" |
| | | :class="[ index < list.length - 1 ? 'tn-border-solid-bottom' : '']" |
| | | :style="[itemStyle(index)]" |
| | | hover-class="tn-hover-class" |
| | | :hover-stay-time="150" |
| | | @tap="itemClick(index)" |
| | | @touchmove.stop.prevent |
| | | > |
| | | <text>{{item.text}}</text> |
| | | <text v-if="item.subText" class="tn-action-sheet__item__subtext tn-text-ellipsis">{{item.subText}}</text> |
| | | </view> |
| | | </block> |
| | | |
| | | <!-- åæ¶æé® --> |
| | | <block v-if="cancelBtn"> |
| | | <view class="tn-action-sheet__cancel--gab"></view> |
| | | <view |
| | | class="tn-action-sheet__cancel tn-action-sheet__item" |
| | | hover-class="tn-hover-class" |
| | | :hover-stay-time="150" |
| | | @tap="close" |
| | | >{{cancelText}}</view> |
| | | </block> |
| | | |
| | | </tn-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'tn-action-sheet', |
| | | props: { |
| | | // éè¿v-modelæ§å¶å¼¹åºåæ¶èµ· |
| | | value: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æé®æåæ°ç»ï¼å¯ä»¥èªå®ä¹é¢è²ååä½å¤§å° |
| | | // return [{ |
| | | // text: 'ç¡®å®', |
| | | // subText: 'è¿æ¯ä¸ä¸ªç¡®å®æé®', |
| | | // color: '', |
| | | // fontSize: '', |
| | | // disabled: true |
| | | // }] |
| | | list: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // é¡¶é¨æç¤ºæå |
| | | tips: { |
| | | type: Object, |
| | | default() { |
| | | return { |
| | | text: '', |
| | | color: '', |
| | | fontSize: 26 |
| | | } |
| | | } |
| | | }, |
| | | // å¼¹åºçé¡¶é¨åè§å¼ |
| | | borderRadius: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // ç¹å»é®ç½©å¯ä»¥å
³é |
| | | maskCloseable: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // åºé¨åæ¶æé® |
| | | cancelBtn: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // åºé¨åæ¶æé®çæå |
| | | cancelText: { |
| | | type: String, |
| | | default: 'åæ¶' |
| | | }, |
| | | // å¼å¯åºé¨å®å
¨åºå |
| | | // å¨iPhoneXæºååºé¨æ·»å ä¸å®çå
è¾¹è· |
| | | safeAreaInsetBottom: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // z-indexå¼ |
| | | zIndex: { |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | computed: { |
| | | // é¡¶é¨æç¤ºæ ·å¼ |
| | | tipsStyle() { |
| | | let style = {} |
| | | if (this.tips.color) style.color = this.tips.color |
| | | if (this.tips.fontSize) style.fontSize = this.tips.fontSize + 'rpx' |
| | | |
| | | return style |
| | | }, |
| | | // æä½é¡¹ç®çæ ·å¼ |
| | | itemStyle() { |
| | | return (index) => { |
| | | let style = {} |
| | | if (this.list[index].color) style.color = this.list[index].color |
| | | if (this.list[index].fontSize) style.fontSize = this.list[index].fontSize + 'rpx' |
| | | |
| | | // é项被ç¦ç¨çæ ·å¼ |
| | | if (this.list[index].disabled) style.color = '#AAAAAA' |
| | | |
| | | return style |
| | | } |
| | | }, |
| | | elZIndex() { |
| | | return this.zIndex ? this.zIndex : this.$t.zIndex.popup |
| | | } |
| | | }, |
| | | methods: { |
| | | // ç¹å»åæ¶æé® |
| | | close() { |
| | | // åéinputäºä»¶ï¼å¹¶ä¸ä¼ä½ç¨äºç¶ç»ä»¶ï¼èæ¯è¦è®¾ç½®ç»ä»¶å
é¨éè¿propsä¼ éçvalueåæ° |
| | | this.popupClose(); |
| | | this.$emit('close'); |
| | | }, |
| | | // å
³éå¼¹çª |
| | | popupClose() { |
| | | this.$emit('input', false) |
| | | }, |
| | | // ç¹å»å¯¹åºçitem |
| | | itemClick(index) { |
| | | // 妿æ¯ç¦ç¨é¡¹åä¸è¿è¡æä½ |
| | | if (this.list[index].disabled) return |
| | | this.$emit('click', index) |
| | | this.popupClose() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-action-sheet { |
| | | &__tips { |
| | | font-size: 26rpx; |
| | | text-align: center; |
| | | padding: 34rpx 0; |
| | | line-height: 1; |
| | | color: $tn-content-color; |
| | | } |
| | | |
| | | &__item { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 32rpx; |
| | | padding: 34rpx 0; |
| | | |
| | | &__subtext { |
| | | font-size: 24rpx; |
| | | color: $tn-content-color; |
| | | margin-top: 20rpx; |
| | | } |
| | | } |
| | | |
| | | &__cancel { |
| | | color: $tn-font-color; |
| | | |
| | | &--gab { |
| | | height: 12rpx; |
| | | background-color: #eaeaec; |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tn-avatar-group-class tn-avatar-group"> |
| | | <view v-for="(item, index) in lists" :key="index" class="tn-avatar-group__item" :style="[itemStyle(index)]"> |
| | | <tn-avatar |
| | | :src="item.src || ''" |
| | | :text="item.text || ''" |
| | | :icon="item.icon || ''" |
| | | :size="size" |
| | | :shape="shape" |
| | | :imgMode="imgMode" |
| | | :border="true" |
| | | backgroundColor="rgba(255, 255, 255, 0.4)" |
| | | :borderSize="4" |
| | | ></tn-avatar> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'tn-avatar-group', |
| | | props: { |
| | | // 头åå表 |
| | | lists: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // 头åç±»å |
| | | // square 带åè§æ£æ¹å½¢ circle åå½¢ |
| | | shape: { |
| | | type: String, |
| | | default: 'circle' |
| | | }, |
| | | // å¤§å° |
| | | // sm å°å¤´å lg 大头å xl å 大头å |
| | | // å¦æä¸ºå
¶ä»å认为æ¯ç´æ¥è®¾ç½®å¤§å° |
| | | size: { |
| | | type: [Number, String], |
| | | default: '' |
| | | }, |
| | | // å½è®¾ç½®ä¸ºæ¾ç¤ºå¤´åä¿¡æ¯æ¶ï¼ |
| | | // å¾ççè£åªæ¨¡å¼ |
| | | imgMode: { |
| | | type: String, |
| | | default: 'aspectFill' |
| | | }, |
| | | // 头åä¹é´ç鮿¡æ¯ä¾ |
| | | // 0.4 代表 40% |
| | | gap: { |
| | | type: Number, |
| | | default: 0.4 |
| | | } |
| | | }, |
| | | computed: { |
| | | itemStyle() { |
| | | return (index) => { |
| | | let style = {} |
| | | if (this._checkSizeIsInline()) { |
| | | switch(this.size) { |
| | | case 'sm': |
| | | style.marginLeft = index != 0 ? `${-48 * this.gap}rpx` : '' |
| | | break |
| | | case 'lg': |
| | | style.marginLeft = index != 0 ? `${-96 * this.gap}rpx` : '' |
| | | break |
| | | case 'xl': |
| | | style.marginLeft = index != 0 ? `${-128 * this.gap}rpx` : '' |
| | | break |
| | | } |
| | | } else { |
| | | const size = Number(this.size.replace(/(px|rpx)/g, '')) || 64 |
| | | style.marginLeft = index != 0 ? `-${size * this.gap}rpx` : '' |
| | | } |
| | | return style |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | // æ£æ¥æ¯å¦ä½¿ç¨å
ç½®ç大å°è¿è¡è®¾ç½® |
| | | _checkSizeIsInline() { |
| | | if (/(xs|sm|md|lg|xl|xxl)/.test(this.size)) return true |
| | | else return false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .tn-avatar-group { |
| | | display: flex; |
| | | flex-direction: row; |
| | | |
| | | &__item { |
| | | position: relative; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view |
| | | class="tn-avatar-class tn-avatar" |
| | | :class="[backgroundColorClass,avatarClass]" |
| | | :style="[avatarStyle]" |
| | | @tap="click" |
| | | > |
| | | <image |
| | | v-if="showImg" |
| | | class="tn-avatar__img" |
| | | :class="[imgClass]" |
| | | :src="src" |
| | | :mode="imgMode || 'aspectFill'" |
| | | @error="loadImageError" |
| | | ></image> |
| | | <view v-else class="tn-avatar__text" > |
| | | <view v-if="text">{{ text }}</view> |
| | | <view v-else :class="[`tn-icon-${icon}`]"></view> |
| | | </view> |
| | | |
| | | <!-- è§æ --> |
| | | <tn-badge |
| | | v-if="badge && (badgeIcon || badgeText)" |
| | | :radius="badgeSize" |
| | | :backgroundColor="badgeBgColor" |
| | | :fontColor="badgeColor" |
| | | :fontSize="badgeSize - 8" |
| | | :absolute="true" |
| | | :top="badgePosition[0]" |
| | | :right="badgePosition[1]" |
| | | > |
| | | <view v-if="badgeIcon && badgeText === ''"> |
| | | <view :class="[`tn-icon-${badgeIcon}`]"></view> |
| | | </view> |
| | | <view v-else> |
| | | {{ badgeText }} |
| | | </view> |
| | | </tn-badge> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import componentsColorMixin from '../../libs/mixin/components_color.js' |
| | | export default { |
| | | mixins: [componentsColorMixin], |
| | | name: 'tn-avatar', |
| | | props: { |
| | | // åºå· |
| | | index: { |
| | | type: [Number, String], |
| | | default: 0 |
| | | }, |
| | | // 头åç±»å |
| | | // square 带åè§æ£æ¹å½¢ circle åå½¢ |
| | | shape: { |
| | | type: String, |
| | | default: 'circle' |
| | | }, |
| | | // å¤§å° |
| | | // sm å°å¤´å lg 大头å xl å 大头å |
| | | // å¦æä¸ºå
¶ä»å认为æ¯ç´æ¥è®¾ç½®å¤§å° |
| | | size: { |
| | | type: [Number, String], |
| | | default: '' |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºé´å½± |
| | | shadow: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºè¾¹æ¡ |
| | | border: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // è¾¹æ¡é¢è² |
| | | borderColor: { |
| | | type: String, |
| | | default: 'rgba(0, 0, 0, 0.1)' |
| | | }, |
| | | // è¾¹æ¡å¤§å°, rpx |
| | | borderSize: { |
| | | type: Number, |
| | | default: 2 |
| | | }, |
| | | // 头åè·¯å¾ |
| | | src: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æå |
| | | text: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 徿 |
| | | icon: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // å½è®¾ç½®ä¸ºæ¾ç¤ºå¤´åä¿¡æ¯æ¶ï¼ |
| | | // å¾ççè£åªæ¨¡å¼ |
| | | imgMode: { |
| | | type: String, |
| | | default: 'aspectFill' |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºè§æ |
| | | badge: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 设置æ¾ç¤ºè§æ åï¼è§æ å¤§å° |
| | | badgeSize: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // è§æ èæ¯é¢è² |
| | | badgeBgColor: { |
| | | type: String, |
| | | default: '#AAAAAA' |
| | | }, |
| | | // è§æ åä½é¢è² |
| | | badgeColor: { |
| | | type: String, |
| | | default: '#FFFFFF' |
| | | }, |
| | | // è§æ 徿 |
| | | badgeIcon: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // è§æ æåï¼ä¼å
级æ¯iconé« |
| | | badgeText: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // è§æ åæ |
| | | // [top, right] |
| | | badgePosition: { |
| | | type: Array, |
| | | default() { |
| | | return [0, 0] |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // å¾çæ¾ç¤ºæ¯å¦åçé误 |
| | | imgLoadError: false |
| | | } |
| | | }, |
| | | computed: { |
| | | showImg() { |
| | | // å¦æè®¾ç½®äºå¾çå°åï¼å为æ¾ç¤ºå¾çï¼å¦å为æ¾ç¤ºææ¬ |
| | | return this.text === '' && this.icon === '' |
| | | }, |
| | | avatarClass() { |
| | | let clazz = '' |
| | | clazz += ` tn-avatar--${this.shape}` |
| | | |
| | | if (this._checkSizeIsInline()) { |
| | | clazz += ` tn-avatar--${this.size}` |
| | | } |
| | | |
| | | if (this.shadow) { |
| | | clazz += ' tn-avatar--shadow' |
| | | } |
| | | |
| | | return clazz |
| | | }, |
| | | avatarStyle() { |
| | | let style = {} |
| | | |
| | | if (this.backgroundColorStyle) { |
| | | style.background = this.backgroundColorStyle |
| | | } else if (this.shadow && this.showImg) { |
| | | style.backgroundImage = `url(${this.src})` |
| | | } |
| | | |
| | | if (this.border) { |
| | | style.border = `${this.borderSize}rpx solid ${this.borderColor}` |
| | | } |
| | | |
| | | if (!this._checkSizeIsInline()) { |
| | | style.width = this.size |
| | | style.height = this.size |
| | | } |
| | | |
| | | return style |
| | | }, |
| | | imgClass() { |
| | | let clazz = '' |
| | | clazz += ` tn-avatar__img--${this.shape}` |
| | | |
| | | return clazz |
| | | } |
| | | }, |
| | | methods: { |
| | | // å è½½å¾ç失败 |
| | | loadImageError() { |
| | | this.imgLoadError = true |
| | | }, |
| | | // ç¹å»äºä»¶ |
| | | click() { |
| | | this.$emit("click", this.index) |
| | | }, |
| | | |
| | | // æ£æ¥æ¯å¦ä½¿ç¨å
ç½®ç大å°è¿è¡è®¾ç½® |
| | | _checkSizeIsInline() { |
| | | if (/^(xs|sm|md|lg|xl|xxl)$/.test(this.size)) return true |
| | | else return false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-avatar { |
| | | /* #ifndef APP-NVUE */ |
| | | display: inline-flex; |
| | | /* #endif */ |
| | | margin: 0; |
| | | padding: 0; |
| | | text-align: center; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background-color: $tn-font-holder-color; |
| | | // color: #FFFFFF; |
| | | white-space: nowrap; |
| | | position: relative; |
| | | width: 64rpx; |
| | | height: 64rpx; |
| | | z-index: 1; |
| | | |
| | | &--sm { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | } |
| | | &--lg { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | } |
| | | &--xl { |
| | | width: 128rpx; |
| | | height: 128rpx; |
| | | } |
| | | |
| | | &--square { |
| | | border-radius: 10rpx; |
| | | } |
| | | |
| | | &--circle { |
| | | border-radius: 5000rpx; |
| | | } |
| | | |
| | | &--shadow { |
| | | position: relative; |
| | | |
| | | &::after { |
| | | content: " "; |
| | | display: block; |
| | | background: inherit; |
| | | filter: blur(10rpx); |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | top: 10rpx; |
| | | left: 10rpx; |
| | | z-index: -1; |
| | | opacity: 0.4; |
| | | transform-origin: 0 0; |
| | | border-radius: inherit; |
| | | transform: scale(1, 1); |
| | | } |
| | | } |
| | | |
| | | &__img { |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | &--square { |
| | | border-radius: 10rpx; |
| | | } |
| | | |
| | | &--circle { |
| | | border-radius: 5000rpx; |
| | | } |
| | | } |
| | | |
| | | &__text { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view |
| | | class="tn-badge-class tn-badge" |
| | | :class="[ |
| | | backgroundColorClass, |
| | | fontColorClass, |
| | | badgeClass |
| | | ]" |
| | | :style="[badgeStyle]" |
| | | @click="handleClick" |
| | | > |
| | | <slot v-if="!dot"></slot> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import componentsColorMixin from '../../libs/mixin/components_color.js' |
| | | export default { |
| | | mixins: [componentsColorMixin], |
| | | name: 'tn-badge', |
| | | props: { |
| | | // åºå· |
| | | index: { |
| | | type: [Number, String], |
| | | default: '0' |
| | | }, |
| | | // å¾½ç« çå¤§å° rpx |
| | | radius: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // å
è¾¹è· |
| | | padding: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // å¤è¾¹è· |
| | | margin: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æ¯å¦ä¸ºä¸ä¸ªç¹ |
| | | dot: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦ä½¿ç¨ç»å¯¹å®ä½ |
| | | absolute: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // top |
| | | top: { |
| | | type: [String, Number], |
| | | default: '' |
| | | }, |
| | | // right |
| | | right: { |
| | | type: [String, Number], |
| | | default: '' |
| | | }, |
| | | // å±
ä¸ å¯¹é½å³ä¸è§ |
| | | translateCenter: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | computed: { |
| | | badgeClass() { |
| | | let clazz = '' |
| | | if (this.dot) { |
| | | clazz += ' tn-badge--dot' |
| | | } |
| | | if (this.absolute) { |
| | | clazz += ' tn-badge--absolute' |
| | | |
| | | if (this.translateCenter) { |
| | | clazz += ' tn-badge--center-position' |
| | | } |
| | | } |
| | | |
| | | return clazz |
| | | }, |
| | | badgeStyle() { |
| | | let style = {} |
| | | |
| | | if (this.radius !== 0) { |
| | | style.width = this.radius + 'rpx' |
| | | style.height = this.radius + 'rpx' |
| | | style.lineHeight = this.radius + 'rpx' |
| | | |
| | | // style.borderRadius = (this.radius * 8) + 'rpx' |
| | | } |
| | | |
| | | if (this.padding) { |
| | | style.padding = this.padding |
| | | } |
| | | if (this.margin) { |
| | | style.margin = this.margin |
| | | } |
| | | if (this.fontColorStyle) { |
| | | style.color = this.fontColorStyle |
| | | } |
| | | if (this.fontSize) { |
| | | style.fontSize = this.fontSize + this.fontUnit |
| | | } |
| | | |
| | | if (this.backgroundColorStyle) { |
| | | style.backgroundColor = this.backgroundColorStyle |
| | | } |
| | | |
| | | if (this.top) { |
| | | style.top = this.$t.string.getLengthUnitValue(this.top) |
| | | } |
| | | if (this.right) { |
| | | style.right = this.$t.string.getLengthUnitValue(this.right) |
| | | } |
| | | |
| | | return style |
| | | }, |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | // å¤çç¹å»äºä»¶ |
| | | handleClick() { |
| | | this.$emit('click', { |
| | | index: Number(this.index) |
| | | }) |
| | | this.$emit('tap', { |
| | | index: Number(this.index) |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .tn-badge { |
| | | width: auto; |
| | | height: auto; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | z-index: 10; |
| | | font-size: 20rpx; |
| | | background-color: #FFFFFF; |
| | | // color: #FFFFFF; |
| | | border-radius: 100rpx; |
| | | padding: 4rpx 8rpx; |
| | | line-height: initial; |
| | | |
| | | &--dot { |
| | | width: 8rpx; |
| | | height: 8rpx; |
| | | border-radius: 50%; |
| | | padding: 0; |
| | | } |
| | | &--absolute { |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | } |
| | | &--center-position { |
| | | transform: translate(50%, -50%); |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <button |
| | | class="tn-btn-class tn-btn" |
| | | :class="[ |
| | | buttonClass, |
| | | backgroundColorClass, |
| | | fontColorClass |
| | | ]" |
| | | :style="[buttonStyle]" |
| | | hover-class="tn-hover" |
| | | :loading="loading" |
| | | :disabled="disabled" |
| | | :form-type="formType" |
| | | :open-type="openType" |
| | | @getuserinfo="handleGetUserInfo" |
| | | @getphonenumber="handleGetPhoneNumber" |
| | | @contact="handleContact" |
| | | @error="handleError" |
| | | @tap="handleClick" |
| | | > |
| | | <slot></slot> |
| | | </button> |
| | | </template> |
| | | |
| | | <script> |
| | | import componentsColorMixin from '../../libs/mixin/components_color.js' |
| | | export default { |
| | | mixins: [componentsColorMixin], |
| | | name: "tn-button", |
| | | // è§£å³å微信å°ç¨åºç§ï¼èªå®ä¹æé®æ æ³è§¦åbindsubmit |
| | | behaviors: ['wx://form-field-button'], |
| | | props: { |
| | | // æé®ç´¢å¼ï¼ç¨äºåºåå¤ä¸ªæé® |
| | | index: { |
| | | type: [Number, String], |
| | | default: 0 |
| | | }, |
| | | // æé®å½¢ç¶ default é»è®¤ round åè§ icon 徿 æé® |
| | | shape: { |
| | | type: String, |
| | | default: 'default' |
| | | }, |
| | | // æ¯å¦å é´å½± |
| | | shadow: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 宽度 rpxæ% |
| | | width: { |
| | | type: String, |
| | | default: 'auto' |
| | | }, |
| | | // é«åº¦ rpxæ% |
| | | height: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æé®ç尺寸 sm lg |
| | | size: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // å使¯å¦å ç² |
| | | fontBold: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | padding: { |
| | | type: String, |
| | | default: '0 30rpx' |
| | | }, |
| | | // å¤è¾¹è· ä¸cssçmarginåæ°ç¨æ³ç¸å |
| | | margin: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æ¯å¦é空 |
| | | plain: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // å½plain=trueæ¶ï¼æ¯å¦æ¾ç¤ºè¾¹æ¡ |
| | | border: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // å½plain=trueæ¶ï¼æ¯å¦å ç²æ¾ç¤ºè¾¹æ¡ |
| | | borderBold: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦ç¦ç¨ |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºå è½½å¾æ |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 触åform表åçäºä»¶ç±»å |
| | | formType: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 弿¾è½å |
| | | openType: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // æ¯å¦é»æ¢éå¤ç¹å»(é»è®¤é´éæ¯200ms) |
| | | blockRepeatClick: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | computed: { |
| | | // æ ¹æ®ä¸åç忰卿çæclass |
| | | buttonClass() { |
| | | let clazz = '' |
| | | // æé®å½¢ç¶ |
| | | switch (this.shape) { |
| | | case 'icon': |
| | | case 'round': |
| | | clazz += ' tn-round' |
| | | break |
| | | } |
| | | |
| | | // é´å½± |
| | | if (this.shadow) { |
| | | if (this.backgroundColorClass !== '' && this.backgroundColorClass.indexOf('tn-bg') != -1) { |
| | | const color = this.backgroundColor.slice(this.backgroundColor.lastIndexOf('-') + 1) |
| | | clazz += ` tn-shadow-${color}` |
| | | } else { |
| | | clazz += ' tn-shadow-blur' |
| | | } |
| | | } |
| | | |
| | | // åä½å ç² |
| | | if (this.fontBold) { |
| | | clazz += ' tn-text-bold' |
| | | } |
| | | |
| | | // 设置为é空并ä¸è®¾ç½®éç©ºä¾¿å¯æè¿è¡è®¾ç½® |
| | | if (this.plain) { |
| | | clazz += ' tn-btn--plain' |
| | | if (this.border) { |
| | | clazz += ' tn-border-solid' |
| | | if (this.borderBold) { |
| | | clazz += ' tn-bold-border' |
| | | } |
| | | if (this.backgroundColor !== '' && this.backgroundColor.includes('tn-bg')) { |
| | | const color = this.backgroundColor.slice(this.backgroundColor.lastIndexOf('-') + 1) |
| | | clazz += ` tn-border-${color}` |
| | | } |
| | | } |
| | | } |
| | | |
| | | return clazz |
| | | }, |
| | | // æé®çæ ·å¼ |
| | | buttonStyle() { |
| | | let style = {} |
| | | switch(this.size) { |
| | | case 'sm': |
| | | style.padding = '0 20rpx' |
| | | style.fontSize = '22rpx' |
| | | style.height = this.height || '48rpx' |
| | | break |
| | | case 'lg': |
| | | style.padding = '0 40rpx' |
| | | style.fontSize = '32rpx' |
| | | style.height = this.height || '80rpx' |
| | | break |
| | | default : |
| | | style.padding = '0 30rpx' |
| | | style.fontSize = '28rpx' |
| | | style.height = this.height || '64rpx' |
| | | } |
| | | |
| | | // æ¯å¦æå¨è®¾ç½®äºå
è¾¹è· |
| | | if (this.padding) { |
| | | style.padding = this.padding |
| | | } |
| | | |
| | | // æ¯å¦æå¨è®¾ç½®å¤è¾¹è· |
| | | if (this.margin) { |
| | | style.margin = this.margin |
| | | } |
| | | |
| | | // æ¯å¦æå¨è®¾ç½®äºåä½å¤§å° |
| | | if (this.fontSize) { |
| | | style.fontSize = this.fontSize + this.fontUnit |
| | | } |
| | | style.width = this.shape === 'icon' ? style.height : this.width |
| | | style.padding = this.shape === 'icon' ? '0' : style.padding |
| | | |
| | | if (this.fontColorStyle) { |
| | | style.color = this.fontColorStyle |
| | | } |
| | | |
| | | if (!this.backgroundColorClass) { |
| | | if (this.plain) { |
| | | style.borderColor = this.backgroundColorStyle || '#080808' |
| | | } else { |
| | | style.backgroundColor = this.backgroundColorStyle || '#FFFFFF' |
| | | } |
| | | } |
| | | |
| | | // 设置é´å½± |
| | | if (this.shadow && !this.backgroundColorClass) { |
| | | if (this.backgroundColorStyle.indexOf('#') != -1) { |
| | | style.boxShadow = `6rpx 6rpx 8rpx ${(this.backgroundColorStyle || '#000000')}10` |
| | | } else if (this.backgroundColorStyle.indexOf('rgb') != -1 || this.backgroundColorStyle.indexOf('rgba') != -1 || !this.backgroundColorStyle) { |
| | | style.boxShadow = `6rpx 6rpx 8rpx ${(this.backgroundColorStyle || 'rgba(0, 0, 0, 0.1)')}` |
| | | } |
| | | |
| | | } |
| | | |
| | | return style |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | // 䏿¬¡ç¹å»çæ¶é´ |
| | | clickTime: 0, |
| | | // 两次ç¹å»é²æçé´éæ¶é´ |
| | | clickIntervalTime: 200 |
| | | } |
| | | }, |
| | | methods: { |
| | | // æé®ç¹å»äºä»¶ |
| | | handleClick() { |
| | | if (this.disabled) { |
| | | return |
| | | } |
| | | if (this.blockRepeatClick) { |
| | | const nowTime = new Date().getTime() |
| | | if (nowTime - this.clickTime <= this.clickIntervalTime) { |
| | | return |
| | | } |
| | | this.clickTime = nowTime |
| | | setTimeout(() => { |
| | | this.clickTime = 0 |
| | | }, this.clickIntervalTime) |
| | | } |
| | | this.$emit('click', { |
| | | index: Number(this.index) |
| | | }) |
| | | // å
¼å®¹tapäºä»¶ |
| | | this.$emit('tap', { |
| | | index: Number(this.index) |
| | | }) |
| | | }, |
| | | handleGetUserInfo({ detail = {} } = {}) { |
| | | this.$emit('getuserinfo', detail); |
| | | }, |
| | | handleContact({ detail = {} } = {}) { |
| | | this.$emit('contact', detail); |
| | | }, |
| | | handleGetPhoneNumber({ detail = {} } = {}) { |
| | | this.$emit('getphonenumber', detail); |
| | | }, |
| | | handleError({ detail = {} } = {}) { |
| | | this.$emit('error', detail); |
| | | }, |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-btn { |
| | | position: relative; |
| | | display: inline-flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | box-sizing: border-box; |
| | | line-height: 1; |
| | | text-align: center; |
| | | text-decoration: none; |
| | | overflow: visible; |
| | | transform: translate(0rpx, 0rpx); |
| | | // background-color: $tn-mai |
| | | border-radius: 12rpx; |
| | | // color: $tn-font-color; |
| | | margin: 0; |
| | | |
| | | &--plain { |
| | | background-color: transparent !important; |
| | | background-image: none; |
| | | |
| | | &.tn-round { |
| | | border-radius: 1000rpx !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <tn-popup |
| | | v-model="value" |
| | | mode="bottom" |
| | | :popup="false" |
| | | length="auto" |
| | | :borderRadius="borderRadius" |
| | | :safeAreaInsetBottom="safeAreaInsetBottom" |
| | | :maskCloseable="maskCloseable" |
| | | :closeBtn="closeBtn" |
| | | :zIndex="elIndex" |
| | | @close="close" |
| | | > |
| | | <view class="tn-calendar-class tn-calendar"> |
| | | <!-- å¤´é¨ --> |
| | | <view class="tn-calendar__header"> |
| | | <view v-if="!$slots.tooltip || !$slots.$tooltip" class="tn-calendar__header__text"> |
| | | {{ toolTips }} |
| | | </view> |
| | | <view v-else> |
| | | <slot name="tooltip"></slot> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- æä½æç¤ºä¿¡æ¯ --> |
| | | <view class="tn-calendar__action"> |
| | | <view v-if="changeYear" class="tn-calendar__action__icon" :style="{backgroundColor: yearArrowColor}" @tap.stop="changeYearHandler(false)"> |
| | | <view><text class="tn-icon-left"></text></view> |
| | | </view> |
| | | <view v-if="changeMonth" class="tn-calendar__action__icon" :style="{backgroundColor: monthArrowColor}" @tap.stop="changeMonthHandler(false)"> |
| | | <view><text class="tn-icon-left"></text></view> |
| | | </view> |
| | | <view class="tn-calendar__action__text">{{ dateTitle }}</view> |
| | | <view v-if="changeMonth" class="tn-calendar__action__icon" :style="{backgroundColor: monthArrowColor}" @tap.stop="changeMonthHandler(true)"> |
| | | <view><text class="tn-icon-right"></text></view> |
| | | </view> |
| | | <view v-if="changeYear" class="tn-calendar__action__icon" :style="{backgroundColor: yearArrowColor}" @tap.stop="changeYearHandler(true)"> |
| | | <view><text class="tn-icon-right"></text></view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- ææä¸ææ è¯ --> |
| | | <view class="tn-calendar__week-day-zh"> |
| | | <view v-for="(item,index) in weekDayZh" :key="index" class="tn-calendar__week-day-zh__text">{{ item }}</view> |
| | | </view> |
| | | |
| | | <!-- æ¥åä¸»ä½ --> |
| | | <view class="tn-calendar__content"> |
| | | <!-- å置空ç½é¨å --> |
| | | <block v-for="(item, index) in weekdayArr" :key="index"> |
| | | <view class="tn-calendar__content__item"></view> |
| | | </block> |
| | | <view |
| | | v-for="(item, index) in daysArr" |
| | | :key="index" |
| | | class="tn-calendar__content__item" |
| | | :class="{ |
| | | 'tn-hover': disabledChoose(year, month, index + 1), |
| | | 'tn-calendar__content--start-date': (mode === 'range' && startDate == `${year}-${month}-${index+1}`) || mode === 'date', |
| | | 'tn-calendar__content--end-date': (mode === 'range' && endDate == `${year}-${month}-${index+1}`) || mode === 'date' |
| | | }" |
| | | :style="{ |
| | | backgroundColor: colorValue(index, 'bg') |
| | | }" |
| | | @tap.stop="dateClick(index)" |
| | | > |
| | | <view class="tn-calendar__content__item__text" :style="{color: colorValue(index, 'text')}"> |
| | | <view>{{ item.day }}</view> |
| | | </view> |
| | | <view class="tn-calendar__content__item__tips" :style="{color: item.color}"> |
| | | {{ item.bottomInfo }} |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="tn-calendar__content__month--bg">{{ month }}</view> |
| | | </view> |
| | | |
| | | <!-- åºé¨ --> |
| | | <view class="tn-calendar__bottom"> |
| | | <view class="tn-calendar__bottom__choose"> |
| | | <text>{{ mode === 'date' ? activeDate : startDate }}</text> |
| | | <text v-if="endDate">è³{{ endDate }}</text> |
| | | </view> |
| | | <view class="tn-calendar__bottom__btn" :style="{backgroundColor: btnColor}" @click="handleBtnClick(false)"> |
| | | <view class="tn-calendar__bottom__btn--text">ç¡®å®</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </tn-popup> |
| | | </template> |
| | | |
| | | <script> |
| | | import Calendar from '../../libs/utils/calendar.js' |
| | | |
| | | export default { |
| | | name: 'tn-calendar', |
| | | props: { |
| | | // ååç»å®æ§å¶ç»ä»¶å¼¹åºä¸æ¶èµ· |
| | | value: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¨¡å¼ |
| | | // date -> 忥æ range -> æ¥æèå´ |
| | | mode: { |
| | | type: String, |
| | | default: 'date' |
| | | }, |
| | | // æ¯å¦å
è®¸åæ¢å¹´ä»½ |
| | | changeYear: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // æ¯å¦å
è®¸åæ¢æä»½ |
| | | changeMonth: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // å¯åæ¢çæå¤§å¹´ä»½ |
| | | maxYear: { |
| | | type: [Number, String], |
| | | default: 2100 |
| | | }, |
| | | // å¯åæ¢çæå°å¹´ä»½ |
| | | minYear: { |
| | | type: [Number, String], |
| | | default: 1970 |
| | | }, |
| | | // æå°æ¥æ(ä¸å¨èå´è¢«ä¸å
è®¸éæ©) |
| | | minDate: { |
| | | type: String, |
| | | default: '1970-01-01' |
| | | }, |
| | | // æå¤§æ¥æï¼å¦æä¸ºç©ºåé»è®¤ä¸ºä»å¤© |
| | | maxDate: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 忢æä»½æé®çé¢è² |
| | | monthArrowColor: { |
| | | type: String, |
| | | default: '#AAAAAA' |
| | | }, |
| | | // 忢年份æé®çé¢è² |
| | | yearArrowColor: { |
| | | type: String, |
| | | default: '#C8C8C8' |
| | | }, |
| | | // é»è®¤åä½é¢è² |
| | | color: { |
| | | type: String, |
| | | default: '#080808' |
| | | }, |
| | | // éä¸|èµ·å§ç»ææ¥æèæ¯é¢è² |
| | | activeBgColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // éä¸|èµ·å§ç»ææ¥ææåé¢è² |
| | | activeColor: { |
| | | type: String, |
| | | default: '#FFFFFF' |
| | | }, |
| | | // èå´æ¥æå
çèæ¯é¢è² |
| | | rangeBgColor: { |
| | | type: String, |
| | | default: '#E6E6E655' |
| | | }, |
| | | // èå´æ¥æå
çæåé¢è² |
| | | rangeColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // èµ·å§æ¥ææ¾ç¤ºçæåï¼mode=rangeæ¶çæ |
| | | startText: { |
| | | type: String, |
| | | default: 'å¼å§' |
| | | }, |
| | | // ç»ææ¥ææ¾ç¤ºçæåï¼mode=rangeæ¶çæ |
| | | endText: { |
| | | type: String, |
| | | default: 'ç»æ' |
| | | }, |
| | | // æé®èæ¯é¢è² |
| | | btnColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // ååæåçé¢è² |
| | | lunarColor: { |
| | | type: String, |
| | | default: '#AAAAAA' |
| | | }, |
| | | // é䏿¥ææ¯å¦æé䏿æ |
| | | isActiveCurrent: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // åæ¢å¹´ææ¯å¦è§¦åäºä»¶ï¼mode=dateæ¶çæ |
| | | isChange: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºåå |
| | | showLunar: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // é¡¶é¨æç¤ºæå |
| | | toolTips: { |
| | | type: String, |
| | | default: 'è¯·éæ©æ¥æ' |
| | | }, |
| | | // æ¾ç¤ºåè§çå¤§å° |
| | | borderRadius: { |
| | | type: Number, |
| | | default: 8 |
| | | }, |
| | | // æ¯å¦å¼å¯åºé¨å®å
¨åºéé
ï¼å¼å¯çè¯ï¼ä¼å¨iPhoneXæºååºé¨æ·»å ä¸å®çå
è¾¹è· |
| | | safeAreaInsetBottom: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¯å¦å¯ä»¥éè¿ç¹å»é®ç½©è¿è¡å
³é |
| | | maskCloseable: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // zIndex |
| | | zIndex: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºå
³éæé® |
| | | closeBtn: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | }, |
| | | computed: { |
| | | dateChange() { |
| | | return `${this.mode}-${this.minDate}-${this.maxDate}` |
| | | }, |
| | | elIndex() { |
| | | return this.zIndex ? this.zIndex : this.$t.zIndex.popup |
| | | }, |
| | | colorValue() { |
| | | return (index, type) => { |
| | | let color = type === 'bg' ? '' : this.color |
| | | let day = index + 1 |
| | | let date = `${this.year}-${this.month}-${day}` |
| | | let timestamp = new Date(date.replace(/\-/g,'/')).getTime() |
| | | let start = this.startDate.replace(/\-/g,'/') |
| | | let end = this.endDate.replace(/\-/g,'/') |
| | | if ((this.mode === 'date' && this.isActiveCurrent && this.activeDate == date) || this.startDate == date || this.endDate == date) { |
| | | color = type === 'bg' ? this.activeBgColor : this.activeColor |
| | | } else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) { |
| | | color = type === 'bg' ? this.rangeBgColor : this.rangeColor |
| | | } |
| | | return color |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // ææå ï¼1-7 |
| | | weekday: 1, |
| | | weekdayArr: [], |
| | | // ææå¯¹åºç䏿 |
| | | weekDayZh: ['æ¥','ä¸','äº','ä¸','å','äº','å
'], |
| | | // å½åææå¤å°å¤© |
| | | days: 0, |
| | | daysArr: [], |
| | | year: 2021, |
| | | month: 0, |
| | | day: 0, |
| | | startYear: 0, |
| | | startMonth: 0, |
| | | startDay: 0, |
| | | endYear: 0, |
| | | endMonth: 0, |
| | | endDay: 0, |
| | | today: '', |
| | | activeDate: '', |
| | | startDate: '', |
| | | endDate: '', |
| | | min: null, |
| | | max: null, |
| | | // æ¥ææ é¢ |
| | | dateTitle: '', |
| | | // æ è®°æ¯å¦å·²ç»éæ©äºå¼å§æ¥æ |
| | | chooseStart: false |
| | | } |
| | | }, |
| | | watch: { |
| | | dateChange() { |
| | | this.init() |
| | | } |
| | | }, |
| | | created() { |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | // åå§å |
| | | init() { |
| | | let now = new Date() |
| | | this.year = now.getFullYear() |
| | | this.month = now.getMonth() + 1 |
| | | this.day = now.getDate() |
| | | this.today = `${this.year}-${this.month}-${this.day}` |
| | | this.activeDate = this.today |
| | | this.min = this.initDate(this.minDate) |
| | | this.max = this.initDate(this.maxDate || this.today) |
| | | this.startDate = '' |
| | | this.startYear = 0 |
| | | this.startMonth = 0 |
| | | this.startDay = 0 |
| | | this.endDate = '' |
| | | this.endYear = 0 |
| | | this.endMonth = 0 |
| | | this.endDay = 0 |
| | | this.chooseStart = false |
| | | this.changeData() |
| | | }, |
| | | // 忢æä»½ |
| | | changeMonthHandler(add) { |
| | | if (add) { |
| | | let month = this.month + 1 |
| | | let year = month > 12 ? this.year + 1 : this.year |
| | | if (!this.checkRange(year)) { |
| | | this.month = month > 12 ? 1 : month |
| | | this.year = year |
| | | this.changeData() |
| | | } |
| | | } else { |
| | | let month = this.month - 1 |
| | | let year = month < 1 ? this.year - 1 : this.year |
| | | if (!this.checkRange(year)) { |
| | | this.month = month < 1 ? 12 : month |
| | | this.year = year |
| | | this.changeData() |
| | | } |
| | | } |
| | | }, |
| | | // 忢年份 |
| | | changeYearHandler(add) { |
| | | let year = add ? this.year + 1 : this.year - 1 |
| | | if (!this.checkRange(year)) { |
| | | this.year = year |
| | | this.changeData() |
| | | } |
| | | }, |
| | | // æ¥æç¹å»äºä»¶ |
| | | dateClick(day) { |
| | | day += 1 |
| | | if (!this.disabledChoose(this.year, this.month, day)) { |
| | | this.day = day |
| | | let date = `${this.year}-${this.month}-${day}` |
| | | if (this.mode === 'date') { |
| | | this.activeDate = date |
| | | } else { |
| | | let startTimeCompare = new Date(date.replace(/\-/g,'/')).getTime() < new Date(this.startDate.replace(/\-/g,'/')).getTime() |
| | | if (!this.chooseStart || startTimeCompare) { |
| | | this.startDate = date |
| | | this.startYear = this.year |
| | | this.startMonth = this.month |
| | | this.startDay = this.day |
| | | this.endYear = 0 |
| | | this.endMonth = 0 |
| | | this.endDay = 0 |
| | | this.endDate = '' |
| | | this.activeDate = '' |
| | | this.chooseStart = true |
| | | } else { |
| | | this.endDate = date |
| | | this.endYear = this.year |
| | | this.endMonth = this.month |
| | | this.endDay = this.day |
| | | this.chooseStart = false |
| | | } |
| | | } |
| | | this.daysArr = this.handleDaysArr() |
| | | } |
| | | }, |
| | | // ä¿®æ¹æ¥ææ°æ® |
| | | changeData() { |
| | | this.days = this.getMonthDay(this.year, this.month) |
| | | this.daysArr = this.handleDaysArr() |
| | | this.weekday = this.getMonthFirstWeekDay(this.year, this.month) |
| | | this.weekdayArr = this.generateArray(1, this.weekday) |
| | | this.dateTitle = `${this.year}å¹´${this.month}æ` |
| | | if (this.isChange && this.mode === 'date') { |
| | | this.handleBtnClick(true) |
| | | } |
| | | }, |
| | | // å¤çæé®ç¹å» |
| | | handleBtnClick(show) { |
| | | if (!show) { |
| | | this.close() |
| | | } |
| | | if (this.mode === 'date') { |
| | | let arr = this.activeDate.split('-') |
| | | let year = this.isChange ? this.year : Number(arr[0]) |
| | | let month = this.isChange ? this.month : Number(arr[1]) |
| | | let day = this.isChange ? this.day : Number(arr[2]) |
| | | let days = this.getMonthDay(year, month) |
| | | let result = `${year}-${this.formatNumber(month)}-${this.formatNumber(day)}` |
| | | let weekText = this.getWeekText(result) |
| | | let isToday = false |
| | | if (`${year}-${month}-${day}` === this.today) { |
| | | isToday = true |
| | | } |
| | | this.$emit('change', { |
| | | year, |
| | | month, |
| | | day, |
| | | days, |
| | | week: weekText, |
| | | isToday, |
| | | date: result, |
| | | // æ¯å¦ä¸ºåæ¢å¹´ææä½ |
| | | switch: show |
| | | }) |
| | | } else { |
| | | if (!this.startDate || !this.endDate) return |
| | | |
| | | let startMonth = this.formatNumber(this.startMonth) |
| | | let startDay = this.formatNumber(this.startDay) |
| | | let startDate = `${this.startYear}-${startMonth}-${startDay}` |
| | | let startWeek = this.getWeekText(startDate) |
| | | |
| | | let endMonth = this.formatNumber(this.endMonth) |
| | | let endDay = this.formatNumber(this.endDay) |
| | | let endDate = `${this.endYear}-${endMonth}-${endDay}` |
| | | let endWeek = this.getWeekText(endDate) |
| | | |
| | | this.$emit('change', { |
| | | startYear: this.startYear, |
| | | startMonth: this.startMonth, |
| | | startDay: this.startDay, |
| | | startDate, |
| | | startWeek, |
| | | endYear: this.endYear, |
| | | endMonth: this.endMonth, |
| | | endDay: this.endDay, |
| | | endDate, |
| | | endWeek |
| | | }) |
| | | } |
| | | }, |
| | | // 夿æ¯å¦å
è®¸éæ© |
| | | disabledChoose(year, month, day) { |
| | | let flag = true |
| | | let date = `${year}/${month}/${day}` |
| | | let min = `${this.min.year}/${this.min.month}/${this.min.day}` |
| | | let max = `${this.max.year}/${this.max.month}/${this.max.day}` |
| | | let timestamp = new Date(date).getTime() |
| | | if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) { |
| | | flag = false |
| | | } |
| | | return flag |
| | | }, |
| | | // æ£æ¥æ¯å¦å¨æ¥æèå´å
|
| | | checkRange(year) { |
| | | let overstep = false |
| | | if (year < this.minYear || year > this.maxYear) { |
| | | uni.showToast({ |
| | | title: 'æéæ¥æè¶
åºèå´', |
| | | icon: 'none' |
| | | }) |
| | | overstep = true |
| | | } |
| | | return overstep |
| | | }, |
| | | // å¤çæ¥æ |
| | | initDate(date) { |
| | | let fdate = date.split('-') |
| | | return { |
| | | year: Number(fdate[0] || 1970), |
| | | month: Number(fdate[1] || 1), |
| | | day: Number(fdate[2] || 1) |
| | | } |
| | | }, |
| | | // å¤çæ¥ææ°ç» |
| | | handleDaysArr() { |
| | | let days = this.generateArray(1, this.days) |
| | | let daysArr = days.map((item) => { |
| | | let bottomInfo = this.showLunar ? Calendar.solar2lunar(this.year, this.month, item).IDayCn : '' |
| | | let color = this.showLunar ? this.lunarColor : this.activeColor |
| | | if ( |
| | | (this.mode === 'date' && this.day == item) || |
| | | (this.mode === 'range' && (this.startDay == item || this.endDay == item)) |
| | | ) { |
| | | color = this.activeColor |
| | | } |
| | | if (this.mode === 'range') { |
| | | if (this.startDay == item && this.startDay != this.endDay) { |
| | | bottomInfo = this.startText |
| | | } |
| | | if (this.endDay == item) { |
| | | bottomInfo = this.endText |
| | | } |
| | | } |
| | | |
| | | return { |
| | | day: item, |
| | | color: color, |
| | | bottomInfo: bottomInfo |
| | | } |
| | | }) |
| | | return daysArr |
| | | }, |
| | | // è·åå¯¹åºææå¤å°å¤© |
| | | getMonthDay(year, month) { |
| | | return new Date(year, month, 0).getDate() |
| | | }, |
| | | // è·åå¯¹åºæç第ä¸å¤©æ¶ææå |
| | | getMonthFirstWeekDay(year, month) { |
| | | return new Date(`${year}/${month}/01 00:00:00`).getDay() |
| | | }, |
| | | // è·åå¯¹åºææçææ¬ |
| | | getWeekText(date) { |
| | | date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`) |
| | | let week = date.getDay() |
| | | return 'ææ' + this.weekDayZh[week] |
| | | }, |
| | | // çææ¥æå¤©æ°æ°ç» |
| | | generateArray(start, end) { |
| | | return Array.from(new Array(end + 1).keys()).slice(start) |
| | | }, |
| | | // æ ¼å¼åæ°å |
| | | formatNumber(num) { |
| | | return num < 10 ? '0' + num : num + '' |
| | | }, |
| | | // å
³éçªå£ |
| | | close() { |
| | | this.$emit('input', false) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-calendar { |
| | | color: $tn-font-color; |
| | | |
| | | &__header { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | font-size: 30rpx; |
| | | background-color: #FFFFFF; |
| | | color: $tn-main-color; |
| | | |
| | | &__text { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-top: 30rpx; |
| | | padding: 0 60rpx; |
| | | } |
| | | } |
| | | |
| | | &__action { |
| | | display: flex; |
| | | flex-direction: row; |
| | | justify-content: center; |
| | | align-items: center; |
| | | padding: 40rpx 0 40rpx 0; |
| | | |
| | | &__icon { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin: 0 16rpx; |
| | | width: 32rpx; |
| | | height: 32rpx; |
| | | font-size: 20rpx; |
| | | // line-height: 32rpx; |
| | | border-radius: 50%; |
| | | color: #FFFFFF; |
| | | } |
| | | |
| | | &__text { |
| | | padding: 0 16rpx; |
| | | color: $tn-font-color; |
| | | font-size: 32rpx; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | |
| | | &__week-day-zh { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 12rpx 0; |
| | | overflow: hidden; |
| | | box-shadow: 16rpx 6rpx 8rpx 0 #E6E6E6; |
| | | margin-bottom: 2rpx; |
| | | |
| | | &__text { |
| | | flex: 1; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | &__content { |
| | | display: flex; |
| | | flex-direction: row; |
| | | flex-wrap: wrap; |
| | | width: 100%; |
| | | padding: 12rpx 0; |
| | | box-sizing: border-box; |
| | | background-color: #F7F7F7; |
| | | position: relative; |
| | | |
| | | &__item { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 14.2857%; |
| | | padding: 12rpx 0; |
| | | margin: 6rpx 0; |
| | | overflow: hidden; |
| | | position: relative; |
| | | z-index: 2; |
| | | // box-shadow: inset 0rpx 0rpx 22rpx 4rpx rgba(255,255,255, 0.52); |
| | | |
| | | &__text { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 80rpx; |
| | | font-size: 32rpx; |
| | | position: relative; |
| | | } |
| | | |
| | | &__tips { |
| | | position: absolute; |
| | | width: 100%; |
| | | line-height: 24rpx; |
| | | left: 0; |
| | | bottom: 8rpx; |
| | | text-align: center; |
| | | z-index: 2; |
| | | transform-origin: center center; |
| | | transform: scale(0.8); |
| | | } |
| | | } |
| | | |
| | | &--start-date { |
| | | border-top-left-radius: 8rpx; |
| | | border-bottom-left-radius: 8rpx; |
| | | } |
| | | |
| | | &--end-date { |
| | | border-top-right-radius: 8rpx; |
| | | border-bottom-right-radius: 8rpx; |
| | | } |
| | | |
| | | &__month { |
| | | &--bg { |
| | | position: absolute; |
| | | font-size: 200rpx; |
| | | line-height: 200rpx; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | color: $tn-font-holder-color; |
| | | z-index: 1; |
| | | } |
| | | } |
| | | } |
| | | |
| | | &__bottom { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 100%; |
| | | background-color: #F7F7F7; |
| | | padding: 0 40rpx 30rpx; |
| | | box-sizing: border-box; |
| | | font-size: 24rpx; |
| | | color: $tn-font-sub-color; |
| | | |
| | | &__choose { |
| | | height: 50rpx; |
| | | } |
| | | |
| | | &__btn { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 100%; |
| | | height: 60rpx; |
| | | border-radius: 40rpx; |
| | | color: #FFFFFF; |
| | | font-size: 28rpx; |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tn-car-keyboard-class tn-car-keyboard" @touchmove.stop.prevent="() => {}"> |
| | | <view class="tn-car-keyboard__grids"> |
| | | |
| | | <view |
| | | v-for="(data, index) in inputCarNumber ? endKeyBoardList : areaList" |
| | | :key="index" |
| | | class="tn-car-keyboard__grids__item" |
| | | > |
| | | <view |
| | | v-for="(sub_data, sub_index) in data" |
| | | :key="sub_index" |
| | | class="tn-car-keyboard__grids__btn" |
| | | :class="{'tn-car-keyboard__grids__btn--disabled': sub_data === 'I'}" |
| | | :hover-class="sub_data !== 'I' ? 'tn-car-keyboard--hover' : ''" |
| | | :hover-stay-time="100" |
| | | @tap="click(index, sub_index)" |
| | | > |
| | | {{ sub_data }} |
| | | </view> |
| | | </view> |
| | | |
| | | <view |
| | | class="tn-car-keyboard__back" |
| | | hover-class="tn-hover-class" |
| | | :hover-stay-time="150" |
| | | @touchstart.stop="backspaceClick" |
| | | @touchend="clearTimer" |
| | | > |
| | | <view class="tn-icon-left-arrow tn-car-keyboard__back__icon"></view> |
| | | </view> |
| | | |
| | | <view |
| | | class="tn-car-keyboard__change" |
| | | hover-class="tn-car-keyboard--hover" |
| | | :hover-stay-time="150" |
| | | @tap="changeMode" |
| | | > |
| | | <text class="tn-car-keyboard__mode--zh" :class="[`tn-car-keyboard__mode--${!inputCarNumber ? 'active' : 'inactive'}`]">ä¸</text> |
| | | / |
| | | <text class="tn-car-keyboard__mode--en" :class="[`tn-car-keyboard__mode--${inputCarNumber ? 'active' : 'inactive'}`]">è±</text> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'tn-car-keyboard', |
| | | props: { |
| | | // æ¯å¦æä¹±é®çé¡ºåº |
| | | randomEnabled: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 忢ä¸è±æè¾å
¥ |
| | | switchEnMode: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | computed: { |
| | | areaList() { |
| | | let data = [ |
| | | '京', |
| | | '沪', |
| | | '粤', |
| | | 'æ´¥', |
| | | 'å', |
| | | '豫', |
| | | 'äº', |
| | | 'è¾½', |
| | | 'é»', |
| | | 'æ¹', |
| | | 'ç', |
| | | 'é²', |
| | | 'è', |
| | | 'æµ', |
| | | 'èµ£', |
| | | 'é', |
| | | 'æ¡', |
| | | 'ç', |
| | | 'æ', |
| | | 'é', |
| | | 'è', |
| | | 'å', |
| | | 'é½', |
| | | 'è´µ', |
| | | 'æ¸', |
| | | 'å·', |
| | | 'é', |
| | | 'ç¼', |
| | | 'å®', |
| | | 'è', |
| | | '港', |
| | | 'æ¾³', |
| | | 'æ°', |
| | | '使', |
| | | 'å¦', |
| | | '临', |
| | | 'è¦' |
| | | ] |
| | | // æä¹±é¡ºåº |
| | | if (this.randomEnabled) data = this.$t.array.random(data) |
| | | // åå²äºç»´æ°ç» |
| | | let showData = [] |
| | | showData[0] = data.slice(0, 10) |
| | | showData[1] = data.slice(10, 20) |
| | | showData[2] = data.slice(20, 30) |
| | | showData[3] = data.slice(30, 37) |
| | | return showData |
| | | }, |
| | | endKeyBoardList() { |
| | | let data = [ |
| | | 1, |
| | | 2, |
| | | 3, |
| | | 4, |
| | | 5, |
| | | 6, |
| | | 7, |
| | | 8, |
| | | 9, |
| | | 0, |
| | | 'Q', |
| | | 'W', |
| | | 'E', |
| | | 'R', |
| | | 'T', |
| | | 'Y', |
| | | 'U', |
| | | 'I', |
| | | 'O', |
| | | 'P', |
| | | 'A', |
| | | 'S', |
| | | 'D', |
| | | 'F', |
| | | 'G', |
| | | 'H', |
| | | 'J', |
| | | 'K', |
| | | 'L', |
| | | 'Z', |
| | | 'X', |
| | | 'C', |
| | | 'V', |
| | | 'B', |
| | | 'N', |
| | | 'M' |
| | | ] |
| | | // æä¹±é¡ºåº |
| | | if (this.randomEnabled) data = this.$t.array.random(data) |
| | | // åå²äºç»´æ°ç» |
| | | let showData = [] |
| | | showData[0] = data.slice(0, 10) |
| | | showData[1] = data.slice(10, 20) |
| | | showData[2] = data.slice(20, 29) |
| | | showData[3] = data.slice(29, 36) |
| | | return showData |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // æ è®°æ¯å¦è¾å
¥è½¦çå·ç |
| | | inputCarNumber: false, |
| | | // é¿æå¤æ¬¡å é¤äºä»¶çå¬ |
| | | longPressDeleteTimer: null |
| | | } |
| | | }, |
| | | watch:{ |
| | | switchEnMode: { |
| | | handler(value) { |
| | | if (value) { |
| | | this.inputCarNumber = true |
| | | } else { |
| | | this.inputCarNumber = false |
| | | } |
| | | }, |
| | | immediate: true |
| | | } |
| | | }, |
| | | methods: { |
| | | // ç¹å»é®çæé® |
| | | click(i, j) { |
| | | let value = '' |
| | | // æ ¹æ®ä¸å模å¼è·åä¸åæ°ç»çå¼ |
| | | if (this.inputCarNumber) value = this.endKeyBoardList[i][j] |
| | | else value = this.areaList[i][j] |
| | | |
| | | // 车çéä¸å
å«I |
| | | if (value === 'I') return |
| | | |
| | | this.$emit('change', value) |
| | | }, |
| | | // ä¿®æ¹è¾å
¥æ¨¡å¼ |
| | | // 䏿/è±æ |
| | | changeMode() { |
| | | this.inputCarNumber = !this.inputCarNumber |
| | | }, |
| | | // ç¹å»éæ ¼ |
| | | backspaceClick() { |
| | | this.$emit('backspace') |
| | | this.clearTimer() |
| | | this.longPressDeleteTimer = setInterval(() => { |
| | | this.$emit('backspace') |
| | | }, 250) |
| | | }, |
| | | // æ¸
ç©ºå®æ¶å¨ |
| | | clearTimer() { |
| | | if (this.longPressDeleteTimer) { |
| | | clearInterval(this.longPressDeleteTimer) |
| | | this.longPressDeleteTimer = null |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-car-keyboard { |
| | | position: relative; |
| | | padding: 24rpx 0; |
| | | background-color: #E6E6E6; |
| | | |
| | | &__grids { |
| | | |
| | | &__item { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | &__btn { |
| | | display: inline-flex; |
| | | justify-content: center; |
| | | flex: 0 0 64rpx; |
| | | width: 62rpx; |
| | | height: 80rpx; |
| | | font-size: 38rpx; |
| | | line-height: 80rpx; |
| | | font-weight: 500; |
| | | text-decoration: none; |
| | | text-align: center; |
| | | background-color: #FFFFFF; |
| | | margin: 8rpx 5rpx; |
| | | border-radius: 8rpx; |
| | | box-shadow: 0 2rpx 0rpx $tn-box-shadow-color; |
| | | |
| | | &--disabled { |
| | | opacity: 0.6; |
| | | } |
| | | } |
| | | } |
| | | |
| | | &__back { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | position: absolute; |
| | | width: 96rpx; |
| | | height: 80rpx; |
| | | right: 22rpx; |
| | | bottom: 32rpx; |
| | | background-color: #E6E6E6; |
| | | border-radius: 8rpx; |
| | | box-shadow: 0 2rpx 0rpx $tn-box-shadow-color; |
| | | } |
| | | |
| | | &__change { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | position: absolute; |
| | | width: 96rpx; |
| | | height: 80rpx; |
| | | left: 22rpx; |
| | | bottom: 32rpx; |
| | | line-height: 1; |
| | | background-color: #FFFFFF; |
| | | border-radius: 8rpx; |
| | | box-shadow: 0 2rpx 0rpx $tn-box-shadow-color; |
| | | } |
| | | |
| | | &__mode { |
| | | &--zh { |
| | | transform: translateY(-10rpx); |
| | | } |
| | | &--en { |
| | | transform: translateY(10rpx); |
| | | } |
| | | |
| | | &--active { |
| | | color: $tn-main-color; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | &--inactive { |
| | | &.tn-car-keyboard__mode--zh { |
| | | transform: scale(0.85) translateY(-10rpx); |
| | | } |
| | | } |
| | | |
| | | &--inactive { |
| | | &.tn-car-keyboard__mode--en { |
| | | transform: scale(0.85) translateY(10rpx); |
| | | } |
| | | } |
| | | } |
| | | |
| | | &--hover { |
| | | background-color: #E6E6E6 !important; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tn-cascade-selection tn-cascade-selection-class"> |
| | | <scroll-view |
| | | class="selection__scroll-view" |
| | | :class="[{'tn-border-solid-bottom': headerLine}]" |
| | | :style="[scrollViewStyle]" |
| | | scroll-x |
| | | scroll-with-animation |
| | | :scroll-into-view="scrollViewId" |
| | | > |
| | | <view class="selection__header" :class="[backgroundColorClass]" :style="[headerStyle]"> |
| | | <view |
| | | v-for="(item, index) in selectedArr" |
| | | :key="index" |
| | | :id="`select__${index}`" |
| | | class="selection__header__item" |
| | | :class="[headerItemClass(index)]" |
| | | :style="[headerItemStyle(index)]" |
| | | @tap.stop="clickNav(index)" |
| | | > |
| | | {{ item.text }} |
| | | <view |
| | | v-if="index===currentTab && showActiveLine" |
| | | class="selection__header__line" |
| | | :style="{backgroundColor: activeLineColor}" |
| | | ></view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | |
| | | <swiper |
| | | class="selection__list" |
| | | :class="[backgroundColorClass]" |
| | | :style="[listStyle]" |
| | | :current="currentTab" |
| | | :duration="300" |
| | | @change="switchTab" |
| | | > |
| | | <swiper-item |
| | | v-for="(item, index) in selectedArr" |
| | | :key="index" |
| | | > |
| | | <scroll-view |
| | | class="selection__list__item" |
| | | :style="{height: selectionContainerHeight + 'rpx'}" |
| | | scroll-y |
| | | :scroll-into-view="item.scrollViewId" |
| | | > |
| | | <view class="selection__list__item--first"></view> |
| | | <view |
| | | v-for="(subItem, subIndex) in item.list" |
| | | :key="subIndex" |
| | | :id="`select__${subIndex}`" |
| | | class="selection__list__item__cell" |
| | | :style="[itemStyle]" |
| | | @tap="change(index, subIndex, subItem)" |
| | | > |
| | | <view |
| | | v-if="item.index === subIndex" |
| | | class="selection__list__item__icon tn-icon-success" |
| | | :style="[itemIconStyle]" |
| | | ></view> |
| | | <image |
| | | v-if="subItem.src" |
| | | class="selection__list__item__image" |
| | | :style="[itemImageStyle]" |
| | | :src="subItem.src" |
| | | ></image> |
| | | <view |
| | | class="selection__list__item__title" |
| | | :class="[{'tn-text-bold': item.index === subIndex && itemActiveBold}]" |
| | | :style="[itemTitleStyle(index, subIndex)]" |
| | | > |
| | | {{ subItem.text }} |
| | | </view> |
| | | <view |
| | | v-if="subItem.subText" |
| | | class="selection__list__item__title--sub" |
| | | :style="[itemSubTitleStyle]" |
| | | > |
| | | {{ subItem.subText }} |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | </swiper-item> |
| | | </swiper> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import componentsColorMixin from '../../libs/mixin/components_color.js' |
| | | export default { |
| | | name: 'tn-cascade-selection', |
| | | mixins: [ componentsColorMixin ], |
| | | props: { |
| | | // 妿ä¸ä¸çº§æ¯è¯·æ±è¿åï¼å为第ä¸çº§æ°æ®ï¼å¦åä¸ºæææ°æ® |
| | | /* { |
| | | text: '', // æ é¢ |
| | | subText: '', // åæ é¢ |
| | | src: '', // å¾çå°å |
| | | value: 0, // éä¸çå¼ |
| | | children: [ |
| | | { |
| | | text: '', |
| | | subText: '', |
| | | value: 0, |
| | | children: [] |
| | | } |
| | | ] |
| | | } */ |
| | | list: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // é»è®¤éä¸å¼ |
| | | // ['value1','value2','value3'] |
| | | defaultValue: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // åéæ°æ®éè¿è¯·æ±æ¥è·å |
| | | request: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // request为trueæ¶çæ, è·åå°çåéæ°æ® |
| | | receiveData: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // æ¾ç¤ºheaderåºé¨ç»çº¿ |
| | | headerLine: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // headerèæ¯é¢è² |
| | | headerBgColor: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 顶鍿 ç¾æ é«åº¦,åä½rpx |
| | | tabsHeight: { |
| | | type: Number, |
| | | default: 88 |
| | | }, |
| | | // é»è®¤æ¾ç¤ºæå |
| | | text: { |
| | | type: String, |
| | | default: 'è¯·éæ©' |
| | | }, |
| | | // éä¸çé¢è² |
| | | activeColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // éä¸åå ç² |
| | | activeBold: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // é䏿¾ç¤ºåºé¨çº¿æ¡ |
| | | showActiveLine: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // 线æ¡é¢è² |
| | | activeLineColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // icon大å°,åä½rpx |
| | | activeIconSize: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // iconé¢è² |
| | | activeIconColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // itemå¾ç宽度, åä½rpx |
| | | itemImgWidth: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // itemå¾çé«åº¦, åä½rpx |
| | | itemImgHeight: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // itemå¾çåè§ |
| | | itemImgRadius: { |
| | | type: String, |
| | | default: '50%' |
| | | }, |
| | | // item texté¢è² |
| | | itemTextColor: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // item textéä¸é¢è² |
| | | itemActiveTextColor: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // item textéä¸å ç² |
| | | itemActiveBold: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // item textæå大å°, åä½rpx |
| | | itemTextSize: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // item subTexté¢è² |
| | | itemSubTextColor: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // item subTextåä½å¤§å°, åä½rpx |
| | | itemSubTextSize: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // itemæ ·å¼ |
| | | itemStyle: { |
| | | type: Object, |
| | | default() { |
| | | return {} |
| | | } |
| | | }, |
| | | // selectioné项容å¨é«åº¦, åä½rpx |
| | | selectionContainerHeight: { |
| | | type: Number, |
| | | default: 300 |
| | | } |
| | | }, |
| | | computed: { |
| | | scrollViewStyle() { |
| | | let style = {} |
| | | if (this.headerBgColor) { |
| | | style.backgroundColor = this.headerBgColor |
| | | } |
| | | return style |
| | | }, |
| | | headerStyle() { |
| | | let style = {} |
| | | style.height = `${this.tabsHeight}rpx` |
| | | if (this.backgroundColorStyle) { |
| | | style.backgroundColor = this.backgroundColorStyle |
| | | } |
| | | return style |
| | | }, |
| | | headerItemClass() { |
| | | return (index) => { |
| | | let clazz = '' |
| | | if (index !== this.currentTab) { |
| | | clazz += ` ${this.fontColorClass}` |
| | | } else { |
| | | if (this.activeBold) { |
| | | clazz += ' tn-text-bold' |
| | | } |
| | | } |
| | | return clazz |
| | | } |
| | | }, |
| | | headerItemStyle() { |
| | | return (index) => { |
| | | let style = {} |
| | | style.color = index === this.currentTab ? this.activeColor : (this.fontColorStyle ? this.fontColorStyle : '') |
| | | if (this.fontSizeStyle) { |
| | | style.fontSize = this.fontSizeStyle |
| | | } |
| | | return style |
| | | } |
| | | }, |
| | | listStyle() { |
| | | let style = {} |
| | | style.height = `${this.selectionContainerHeight}rpx` |
| | | if (this.backgroundColorStyle) { |
| | | style.color = this.backgroundColorStyle |
| | | } |
| | | return style |
| | | }, |
| | | itemIconStyle() { |
| | | let style = {} |
| | | if (this.activeIconColor) { |
| | | style.color = this.activeIconColor |
| | | } |
| | | if (this.activeIconSize) { |
| | | style.fontSize = this.activeIconSize + 'rpx' |
| | | } |
| | | return style |
| | | }, |
| | | itemImageStyle() { |
| | | let style = {} |
| | | if (this.itemImgWidth) { |
| | | style.width = this.itemImgWidth + 'rpx' |
| | | } |
| | | if (this.itemImgHeight) { |
| | | style.height = this.itemImgHeight + 'rpx' |
| | | } |
| | | if (this.itemImgRadius) { |
| | | style.borderRadius = this.itemImgRadius |
| | | } |
| | | return style |
| | | }, |
| | | itemTitleStyle() { |
| | | return (index, subIndex) => { |
| | | let style = {} |
| | | if (index === subIndex) { |
| | | if (this.itemActiveTextColor) { |
| | | style.color = this.itemActiveTextColor |
| | | } |
| | | } else { |
| | | if (this.itemTextColor) { |
| | | style.color = this.itemTextColor |
| | | } |
| | | } |
| | | if (this.itemTextSize) { |
| | | style.fontSize = this.itemTextSize + 'rpx' |
| | | } |
| | | return style |
| | | } |
| | | }, |
| | | itemSubTitleStyle() { |
| | | let style = {} |
| | | if (this.itemSubTextColor) { |
| | | style.color = this.itemSubTextColor |
| | | } |
| | | if (this.itemSubTextSize) { |
| | | style.fontSize = this.itemSubTextSize + 'rpx' |
| | | } |
| | | return {} |
| | | } |
| | | }, |
| | | watch: { |
| | | list(val) { |
| | | this.initData(val, -1) |
| | | }, |
| | | defaultValue(val) { |
| | | this.setDefaultValue(val) |
| | | }, |
| | | receiveData(val) { |
| | | this.addSubData(val, this.currentTab) |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | // å½åéä¸çåé |
| | | currentTab: 0, |
| | | // tabsæ scrollViewæ»å¨çä½ç½® |
| | | scrollViewId: 'select__0', |
| | | // é项æ°ç» |
| | | selectedArr: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setDefaultValue(this.defaultValue) |
| | | }, |
| | | methods: { |
| | | // åå§åæ°æ® |
| | | initData(data, index) { |
| | | if (!data || data.length === 0) return |
| | | if (this.request) { |
| | | // 第ä¸çº§æ°æ® |
| | | this.addSubData(data, index) |
| | | } else { |
| | | this.addSubData(this.getItemList(index, -1), index) |
| | | } |
| | | }, |
| | | // éç½®æ°æ® |
| | | reset() { |
| | | this.initData(this.list, -1) |
| | | }, |
| | | // æ»å¨åæ¢ |
| | | switchTab(e) { |
| | | this.currentTab = e.detail.current |
| | | this.checkSelectPosition() |
| | | }, |
| | | // ç¹å»æ é¢åæ¢ |
| | | clickNav(index) { |
| | | if (this.currentTab !== index) { |
| | | this.currentTab = index |
| | | } |
| | | }, |
| | | // åè¡¨æ°æ®åçæ¹å |
| | | change(index, subIndex, subItem) { |
| | | let item = this.selectedArr[index] |
| | | if (item.index === subIndex) return |
| | | item.index = subIndex |
| | | item.text = subItem.text |
| | | item.subText = subItem.subText || '' |
| | | item.value = subItem.value |
| | | item.src = subItem.src || '' |
| | | this.$emit('change', { |
| | | index: index, |
| | | subIndex: subIndex, |
| | | ...subItem |
| | | }) |
| | | |
| | | // 妿䏿¯å¼æ¥å è½½ï¼åååºå¯¹åºçæ°æ® |
| | | if (!this.request) { |
| | | let data = this.getItemList(index, subIndex) |
| | | this.addSubData(data, index) |
| | | } |
| | | }, |
| | | // 设置é»è®¤çæ°æ® |
| | | setDefaultValue(val) { |
| | | let defaultValues = val || [] |
| | | if (defaultValues.length > 0) { |
| | | this.selectedArr = this.getItemListWithValues(JSON.parse(JSON.stringify(this.list)), defaultValues) |
| | | if (!this.selectedArr) return |
| | | this.currentTab = this.selectedArr.length - 1 |
| | | this.$nextTick(() => { |
| | | this.checkSelectPosition() |
| | | }) |
| | | // defaultItemList.map((item) => { |
| | | // item.scrollViewId = `select__${item.index}` |
| | | // }) |
| | | // this.selectedArr = defaultItemList |
| | | // this.currentTab = defaultItemList.length - 1 |
| | | // this.$nextTick(() => { |
| | | // this.checkSelectPosition() |
| | | // }) |
| | | } else { |
| | | this.initData(this.list, -1) |
| | | } |
| | | }, |
| | | // è·å对åºé项çitemæ°æ® |
| | | getItemList(index, subIndex) { |
| | | let list = [] |
| | | let arr = JSON.parse(JSON.stringify(this.list)) |
| | | // åå§åæ°æ® |
| | | if (index === -1) { |
| | | list = this.removeChildren(arr) |
| | | } else { |
| | | // å¤æç¬¬ä¸é¡¹æ¯å¦å·²ç»éæ© |
| | | let value = this.selectedArr[0].index |
| | | value = value === -1 ? subIndex : value |
| | | list = arr[value].children || [] |
| | | if (index > 0) { |
| | | for (let i = 1; i < index + 1; i++) { |
| | | // è·åå½åæ°æ®éä¸çåºå· |
| | | let val = index === i ? subIndex : this.selectedArr[i].index |
| | | list = list[val].children || [] |
| | | if (list.length === 0) break |
| | | } |
| | | } |
| | | list = this.removeChildren(list) |
| | | } |
| | | return list |
| | | }, |
| | | // æ ¹æ®æ°ç»ä¸çå¼è·å对åºçitemæ°æ® |
| | | getItemListWithValues(data, values) { |
| | | const defaultValues = JSON.parse(JSON.stringify(values)) |
| | | if (!defaultValues || defaultValues.length === 0) return |
| | | // ååºç¬¬ä¸ä¸ªå¼æå¯¹åºçitem |
| | | const itemIndex = data.findIndex((item) => { |
| | | return item.value === defaultValues[0] |
| | | }) |
| | | if (itemIndex === -1) return |
| | | const item = data[itemIndex] |
| | | item.index = itemIndex |
| | | item.scrollViewId = `select__${itemIndex}` |
| | | item.list = this.removeChildren(JSON.parse(JSON.stringify(data))) |
| | | // 夿æ¯å¦åªæ1ä¸ªå¼ |
| | | if (defaultValues.length === 1 || (!item.hasOwnProperty('children') || item.children.length === 0)) { |
| | | return this.removeChildren([item]) |
| | | } else { |
| | | let selectItemList = [] |
| | | const children = item.children |
| | | selectItemList.push(item) |
| | | // ç§»é¤å·²ç»è·åçå¼ |
| | | defaultValues.splice(0, 1) |
| | | const childrenValue = this.getItemListWithValues(children, defaultValues) |
| | | selectItemList = selectItemList.concat(childrenValue) |
| | | |
| | | return this.removeChildren(selectItemList) |
| | | } |
| | | }, |
| | | // å é¤åå
ç´ |
| | | removeChildren(data) { |
| | | let list = data.map((item) => { |
| | | if (item.hasOwnProperty('children')) { |
| | | delete item['children'] |
| | | } |
| | | return item |
| | | }) |
| | | return list |
| | | }, |
| | | // æ°å¢åéæ°æ®æ¶å¤ç |
| | | addSubData(data, index) { |
| | | // 夿æ¯å¦å·²ç»å®æéæ©æ°æ®æè
为åå§åæ°æ® |
| | | if (!data || data.length === 0) { |
| | | if (index == -1) return |
| | | // 宿鿩 |
| | | let arr = this.selectedArr |
| | | // 妿å½åéä¸é¡¹çåºå·æ¯å·²éæ°æ®çé¿åº¦å°ï¼å表示å½åéæ°éæ©äºæ°æ® |
| | | if (index < arr.length - 1) { |
| | | let newArr = arr.slice(0, index + 1) |
| | | this.selectedArr = newArr |
| | | } |
| | | let result = JSON.parse(JSON.stringify(this.selectedArr)) |
| | | let lastItem = result[result.length - 1] || {} |
| | | let text = '' |
| | | result.map(item => { |
| | | text += item.text |
| | | delete item['list'] |
| | | delete item['scrollViewId'] |
| | | return item |
| | | }) |
| | | this.$emit('complete', { |
| | | result: result, |
| | | value: lastItem.value, |
| | | text: text, |
| | | subText: lastItem.subText, |
| | | src: lastItem.src |
| | | }) |
| | | } else { |
| | | // éç½®æ°æ® |
| | | let item = [{ |
| | | text: this.text, |
| | | subText: '', |
| | | value: '', |
| | | src: '', |
| | | index: -1, |
| | | scrollViewId: 'select__0', |
| | | list: data |
| | | }] |
| | | // åå§åæ°æ® |
| | | if (index === -1) { |
| | | this.selectedArr = item |
| | | } else { |
| | | // æ¼æ¥æ°æ§æ°æ®å¹¶ä¸å¤ææ¯å¦ä¸ºéæ°éæ©äºæ°æ®ï¼å¦æä¸ºéæ°éæ©äºæ°æ®åéç½®ä¹åçéé¡¹æ°æ®ï¼ |
| | | let retainArr = this.selectedArr.slice(0, index + 1) |
| | | this.selectedArr = retainArr.concat(item) |
| | | } |
| | | this.$nextTick(() => { |
| | | this.currentTab = this.selectedArr.length - 1 |
| | | }) |
| | | } |
| | | }, |
| | | // æ£æ¥å½åéä¸é¡¹ï¼å¹¶å°é项设置ä½ç½®ä¿¡æ¯ |
| | | checkSelectPosition() { |
| | | let item = this.selectedArr[this.currentTab] |
| | | item.scrollViewId = 'select__0' |
| | | this.$nextTick(() => { |
| | | setTimeout(() => { |
| | | // 设置å½åæ°æ®æ»å¨å°çä½ç½® |
| | | let val = item.index < 2 ? 0 : Number(item.index - 2) |
| | | item.scrollViewId = `select__${val}` |
| | | }, 10) |
| | | }) |
| | | |
| | | // 设置é项æ»å¨å°æå¨çä½ç½® |
| | | if (this.currentTab > 1) { |
| | | this.scrollViewId = `select__${this.currentTab - 1}` |
| | | } else { |
| | | this.scrollViewId = `select__0` |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .tn-cascade-selection { |
| | | width: 100%; |
| | | } |
| | | |
| | | .selection { |
| | | &__scroll-view { |
| | | background-color: #FFFFFF; |
| | | } |
| | | |
| | | &__header { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | |
| | | &__item { |
| | | max-width: 240rpx; |
| | | padding: 15rpx 30rpx; |
| | | flex-shrink: 0; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | position: relative; |
| | | } |
| | | |
| | | &__line { |
| | | width: 60rpx; |
| | | height: 6rpx; |
| | | border-radius: 4rpx; |
| | | position: absolute; |
| | | bottom: 0; |
| | | right: 0; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | } |
| | | } |
| | | |
| | | &__list { |
| | | background-color: #FFFFFF; |
| | | &__item { |
| | | &--first { |
| | | width: 100%; |
| | | height: 20rpx; |
| | | } |
| | | |
| | | &__cell { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 20rpx 30rpx; |
| | | } |
| | | |
| | | &__icon { |
| | | margin-right: 12rpx; |
| | | font-size: 24rpx; |
| | | } |
| | | |
| | | &__image { |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | margin-right: 12rpx; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &__title { |
| | | word-break: break-all; |
| | | color: #333333; |
| | | font-size: 28rpx; |
| | | |
| | | &--sub { |
| | | margin-left: 20rpx; |
| | | word-break: break-all; |
| | | color: $tn-font-sub-color; |
| | | font-size: 24rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tn-checkbox-group-class tn-checkbox-group"> |
| | | <slot></slot> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import Emitter from '../../libs/utils/emitter.js' |
| | | |
| | | export default { |
| | | mixins: [ Emitter ], |
| | | name: 'tn-checkbox-group', |
| | | props: { |
| | | value: { |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | // å¯ä»¥éä¸å¤å°ä¸ªcheckbox |
| | | max: { |
| | | type: Number, |
| | | default: 999 |
| | | }, |
| | | // 表åæäº¤æ¶çæ è¯ç¬¦ |
| | | name: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // ç¦ç¨éæ© |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // ç¦ç¨ç¹å»æ ç¾è¿è¡éæ© |
| | | disabledLabel: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // éæ©æ¡çå½¢ç¶ square æ¹å½¢ circle åå½¢ |
| | | shape: { |
| | | type: String, |
| | | default: 'square' |
| | | }, |
| | | // é䏿¶çé¢è² |
| | | activeColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // ç»ä»¶å¤§å° |
| | | size: { |
| | | type: Number, |
| | | default: 34 |
| | | }, |
| | | // æ¯ä¸ªcheckboxå ç宽度 |
| | | width: { |
| | | type: String, |
| | | default: 'auto' |
| | | }, |
| | | // æ¯å¦æ¢è¡ |
| | | wrap: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // 徿 å¤§å° |
| | | iconSize: { |
| | | type: Number, |
| | | default: 20 |
| | | } |
| | | }, |
| | | computed: { |
| | | // è¿écomputedçåéï¼é½æ¯åç»ä»¶tn-checkboxéè¦ç¨å°çï¼ç±äºå¤´æ¡å°ç¨åºçå
¼å®¹æ§å·®å¼ï¼åç»ä»¶æ æ³å®æ¶çå¬ç¶ç»ä»¶åæ°çåå |
| | | // æä»¥éè¦æå¨éç¥åç»ä»¶ï¼è¿éè¿åä¸ä¸ªparentDataåéï¼ä¾watchçå¬ï¼å¨å
¶ä¸å»éç¥æ¯ä¸ä¸ªåç»ä»¶éæ°ä»ç¶ç»ä»¶(tn-checkbox-group) |
| | | // æåç¶ç»ä»¶æ°çåååçåæ° |
| | | parentData() { |
| | | return [this.value, this.disabled, this.disabledLabel, this.shape, this.activeColor, this.size, this.width, this.wrap, this.iconSize] |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | watch: { |
| | | // å½ç¶ç»ä»¶ä¸çåç»ä»¶éè¦å
±äº«çåæ°åçäºååï¼æå¨éç¥åç»ä»¶ |
| | | parentData() { |
| | | if (this.children.length) { |
| | | this.children.map(child => { |
| | | // 夿åç»ä»¶(tn-checkbox)妿æupdateParentDataæ¹æ³çè¯ï¼åç»ä»¶éæ°ä»ç¶ç»ä»¶æåäºææ°çå¼ |
| | | typeof(child.updateParentData) === 'function' && child.updateParentData() |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.children = [] |
| | | }, |
| | | methods: { |
| | | initValue(values) { |
| | | this.$emit('input', values) |
| | | }, |
| | | // 触åäºä»¶ |
| | | emitEvent() { |
| | | let values = [] |
| | | this.children.map(child => { |
| | | if (child.checkValue) values.push(child.name) |
| | | }) |
| | | this.$emit('change', values) |
| | | this.$emit('input', values) |
| | | // ååºäºä»¶ï¼ç¨äºå¨è¡¨åç»ä»¶ä¸åµå
¥checkboxçæ
åµï¼è¿è¡éªè¯ |
| | | // ç±äºå¤´æ¡å°ç¨åºæ§è¡è¿éï¼æ
éè¦ç¨å 忝«ç§çå»¶æ¶ |
| | | setTimeout(() => { |
| | | // å°å½åçå¼åéå° tn-form-item è¿è¡æ ¡éª |
| | | this.dispatch('tn-form-item', 'on-form-change', values) |
| | | }, 60) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-checkbox-group { |
| | | /* #ifndef MP || APP-NVUE */ |
| | | display: inline-flex; |
| | | flex-wrap: wrap; |
| | | /* #endif */ |
| | | &::after { |
| | | content: " "; |
| | | display: table; |
| | | clear: both; |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="tn-checkbox-class tn-checkbox" :style="[checkboxStyle]"> |
| | | <view |
| | | class="tn-checkbox__icon-wrap" |
| | | :class="[iconClass]" |
| | | :style="[iconStyle]" |
| | | @tap="toggle" |
| | | > |
| | | <view class="tn-checkbox__icon-wrap__icon" :class="[`tn-icon-${iconName}`]"></view> |
| | | </view> |
| | | |
| | | <view |
| | | class="tn-checkbox__label" |
| | | :class="[labelClass]" |
| | | :style="{ |
| | | fontSize: labelSize ? labelSize + 'rpx' : '' |
| | | }" |
| | | @tap="onClickLabel" |
| | | > |
| | | <slot></slot> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'tn-checkbox', |
| | | props: { |
| | | // checkboxåç§° |
| | | name: { |
| | | type: [String, Number], |
| | | default: '' |
| | | }, |
| | | // æ¯å¦ä¸ºéä¸ç¶æ |
| | | value: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // ç¦ç¨éæ© |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // ç¦ç¨ç¹å»æ ç¾è¿è¡éæ© |
| | | disabledLabel: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // éæ©æ¡çå½¢ç¶ square æ¹å½¢ circle åå½¢ |
| | | shape: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // é䏿¶çé¢è² |
| | | activeColor: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // ç»ä»¶å¤§å° |
| | | size: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // 徿 åç§° |
| | | iconName: { |
| | | type: String, |
| | | default: 'success' |
| | | }, |
| | | // 徿 å¤§å° |
| | | iconSize: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | // labelçåä½å¤§å° |
| | | labelSize: { |
| | | type: Number, |
| | | default: 0 |
| | | } |
| | | }, |
| | | computed: { |
| | | // æ¯å¦ç¦ç¨éä¸ï¼ç¶ç»ä»¶çç¦ç¨ä¼è¦çå½åçç¦ç¨ç¶æ |
| | | isDisabled() { |
| | | return this.disabled ? this.disabled : (this.parent ? this.parentData.disabled : false) |
| | | }, |
| | | // æ¯å¦ç¦ç¨ç¹å»labeléä¸ï¼ç¶ç»ä»¶çç¦ç¨ä¼è¦çå½åçç¦ç¨ç¶æ |
| | | isDisabledLabel() { |
| | | return this.disabledLabel ? this.disabledLabel : (this.parent ? this.parentData.disabledLabel : false) |
| | | }, |
| | | // 尺寸 |
| | | checkboxSize() { |
| | | return this.size ? this.size : (this.parent ? this.parentData.size : 34) |
| | | }, |
| | | // æ¿æ´»æ¶çé¢è² |
| | | elAvtiveColor() { |
| | | return this.activeColor ? this.activeColor : (this.parent ? this.parentData.activeColor : '#01BEFF') |
| | | }, |
| | | // å½¢ç¶ |
| | | elShape() { |
| | | return this.shape ? this.shape : (this.parent ? this.parentData.shape : 'square') |
| | | }, |
| | | iconClass() { |
| | | let clazz = '' |
| | | clazz += (' tn-checkbox__icon-wrap--' + this.elShape) |
| | | |
| | | if (this.checkValue) clazz += ' tn-checkbox__icon-wrap--checked' |
| | | if (this.isDisabled) clazz += ' tn-checkbox__icon-wrap--disabled' |
| | | if (this.value && this.isDisabled) clazz += ' tn-checkbox__icon-wrap--disabled--checked' |
| | | |
| | | return clazz |
| | | }, |
| | | iconStyle() { |
| | | let style = {} |
| | | // 夿æ¯å¦ç¨æ·æå¨ç¦ç¨åä¼ éçå¼ |
| | | if (this.elAvtiveColor && this.checkValue && !this.isDisabled) { |
| | | style.borderColor = this.elAvtiveColor |
| | | style.backgroundColor = this.elAvtiveColor |
| | | } |
| | | |
| | | // checkboxå
é¨çå¾é徿 ï¼å¦æéä¸ç¶æï¼ä¸ºç½è²ï¼å¦å为éæè²å³å¯ |
| | | style.color = this.checkValue ? '#FFFFFF' : 'transparent' |
| | | |
| | | style.width = this.checkboxSize + 'rpx' |
| | | style.height = style.width |
| | | |
| | | style.fontSize = (this.iconSize ? this.iconSize : (this.parent ? this.parentData.iconSize : 20)) + 'rpx' |
| | | |
| | | return style |
| | | }, |
| | | checkboxStyle() { |
| | | let style = {} |
| | | if (this.parent && this.parentData.width) { |
| | | // #ifdef MP |
| | | // åå®¶å°ç¨åºå 为å®ä»¬ç¹æ®çç¼è¯ç»æï¼ä½¿ç¨floatå¸å± |
| | | style.float = 'left'; |
| | | // #endif |
| | | // #ifndef MP |
| | | // H5åAPP使ç¨flexå¸å± |
| | | style.flex = `0 0 ${this.parentData.width}`; |
| | | // #endif |
| | | } |
| | | if(this.parent && this.parentData.wrap) { |
| | | style.width = '100%'; |
| | | // #ifndef MP |
| | | // H5åAPP使ç¨flexå¸å±ï¼å°å®½åº¦è®¾ç½®100%ï¼å³å¯èªå¨æ¢è¡ |
| | | style.flex = '0 0 100%'; |
| | | // #endif |
| | | } |
| | | |
| | | return style |
| | | }, |
| | | labelClass() { |
| | | let clazz = '' |
| | | if (this.isDisabled) { |
| | | clazz += ' tn-checkbox__label--disabled' |
| | | } |
| | | return clazz |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // å½åcheckboxçvalueå¼ |
| | | checkValue: false, |
| | | parentData: { |
| | | value: null, |
| | | max: null, |
| | | disabled: null, |
| | | disabledLabel: null, |
| | | shape: null, |
| | | activeColor: null, |
| | | size: null, |
| | | width: null, |
| | | wrap: null, |
| | | iconSize: null |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | value(val) { |
| | | this.checkValue = val |
| | | } |
| | | }, |
| | | created() { |
| | | // æ¯ä»å®å°ç¨åºä¸æ¯æprovide/injectï¼æä»¥ä½¿ç¨è¿ä¸ªæ¹æ³è·åæ´ä¸ªç¶ç»ä»¶ï¼å¨createdå®ä¹ï¼é¿å
循ç¯åºç¨ |
| | | // this.parent = this.$t.$parent.call(this, 'tn-checkbox-group') |
| | | // // 妿åå¨u-checkbox-groupï¼å°æ¬ç»ä»¶çthiså¡è¿ç¶ç»ä»¶çchildrenä¸ |
| | | // this.parent && this.parent.children.push(this) |
| | | // // åå§åç¶ç»ä»¶çvalueå¼ |
| | | // this.parent && this.parent.emitEvent() |
| | | this.updateParentData() |
| | | this.parent && this.parent.children.push(this) |
| | | }, |
| | | methods: { |
| | | updateCheckValue() { |
| | | // æ´æ°å½åcheckboxçéä¸ç¶æ |
| | | this.checkValue = (this.parent && this.parentData.value.includes(this.name)) || this.value === true |
| | | if (this.parent) { |
| | | if (this.value && !this.parentData.value.includes(this.name)) { |
| | | this.parentData.value.push(this.name) |
| | | this.parent.initValue(this.parentData.value) |
| | | } |
| | | } |
| | | }, |
| | | updateParentData() { |
| | | this.getParentData('tn-checkbox-group') |
| | | this.updateCheckValue() |
| | | }, |
| | | onClickLabel() { |
| | | if (!this.isDisabled && !this.isDisabledLabel) { |
| | | this.setValue() |
| | | } |
| | | }, |
| | | toggle() { |
| | | if (!this.isDisabled) { |
| | | this.setValue() |
| | | } |
| | | }, |
| | | emitEvent() { |
| | | this.$emit('change', { |
| | | name: this.name, |
| | | value: !this.checkValue |
| | | }) |
| | | if (this.parent) { |
| | | this.checkValue = !this.checkValue |
| | | // æ§è¡ç¶ç»ä»¶tn-checkbox-groupçäºä»¶æ¹æ³ |
| | | // çå¾
ä¸ä¸ä¸ªå¨æåæ§è¡ï¼å 为this.$emit('input')ä½ç¨äºç¶ç»ä»¶ï¼ååé¦å°åç»ä»¶å
é¨ï¼éè¦æ¶é´ |
| | | setTimeout(() => { |
| | | if(this.parent.emitEvent) this.parent.emitEvent(); |
| | | }, 80) |
| | | } |
| | | }, |
| | | // 设置inputçå¼ï¼éè¿v-modalç»å®ç»ä»¶çå¼ |
| | | setValue() { |
| | | // 夿æ¯å¦ä¸ºå¯éé¡¹ç» |
| | | if (this.parent) { |
| | | // åè½¬ç¶æ |
| | | if (this.checkValue === true) { |
| | | this.emitEvent() |
| | | // this.$emit('input', !this.checkValue) |
| | | } else { |
| | | // è¶
åºæå¤§å¯é项ï¼å¼¹åºæç¤º |
| | | if (this.parentData.value.length >= this.parentData.max) { |
| | | return this.$t.message.toast(`æå¤å¯é${this.parent.max}项`) |
| | | } |
| | | // å¦æåæ¥ä¸ºæªéä¸ç¶æï¼éè¦éä¸çæ°éå°äºç¶ç»ä»¶ä¸è®¾ç½®çmaxå¼ï¼æå¯ä»¥éä¸ |
| | | this.emitEvent(); |
| | | // this.$emit('input', !this.checkValue); |
| | | } |
| | | } else { |
| | | // åªæä¸ä¸ªå¯é项 |
| | | this.emitEvent() |
| | | this.$emit('input', !this.checkValue) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-checkbox { |
| | | /* #ifndef APP-NVUE */ |
| | | display: inline-flex; |
| | | /* #endif */ |
| | | align-items: center; |
| | | overflow: hidden; |
| | | user-select: none; |
| | | line-height: 1.8; |
| | | |
| | | &__icon-wrap { |
| | | color: $tn-font-color; |
| | | flex: none; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: center; |
| | | box-sizing: border-box; |
| | | width: 42rpx; |
| | | height: 42rpx; |
| | | color: transparent; |
| | | text-align: center; |
| | | transition-property: color, border-color, background-color; |
| | | border: 1px solid $tn-font-sub-color; |
| | | transition-duration: 0.2s; |
| | | |
| | | /* #ifdef MP-TOUTIAO */ |
| | | // 头æ¡å°ç¨åºå
¼å®¹æ§é®é¢ï¼éè¦è®¾ç½®è¡é«ä¸º0ï¼å¦å徿 åä¸ |
| | | &__icon { |
| | | line-height: 0; |
| | | } |
| | | /* #endif */ |
| | | |
| | | &--circle { |
| | | border-radius: 100%; |
| | | } |
| | | |
| | | &--square { |
| | | border-radius: 6rpx; |
| | | } |
| | | |
| | | &--checked { |
| | | color: #FFFFFF; |
| | | background-color: $tn-main-color; |
| | | border-color: $tn-main-color; |
| | | } |
| | | |
| | | &--disabled { |
| | | background-color: $tn-font-holder-color; |
| | | border-color: $tn-font-sub-color; |
| | | } |
| | | |
| | | &--disabled--checked { |
| | | color: $tn-font-sub-color !important; |
| | | } |
| | | } |
| | | |
| | | &__label { |
| | | word-wrap: break-word; |
| | | margin-left: 10rpx; |
| | | margin-right: 24rpx; |
| | | color: $tn-font-color; |
| | | font-size: 30rpx; |
| | | |
| | | &--disabled { |
| | | color: $tn-font-sub-color; |
| | | } |
| | | } |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view |
| | | class="tn-circle-progress-class tn-circle-progress" |
| | | :style="{ |
| | | width: widthPx + 'px', |
| | | height: widthPx + 'px' |
| | | }" |
| | | > |
| | | <!-- æ¯ä»å®å°ç¨åºä¸æ¯æcanvas-id屿§ï¼å¿
é¡»ç¨id屿§ --> |
| | | <!-- é»è®¤åç¯ --> |
| | | <canvas |
| | | class="tn-circle-progress__canvas-bg" |
| | | :canvas-id="elBgId" |
| | | :id="elBgId" |
| | | :style="{ |
| | | width: widthPx + 'px', |
| | | height: widthPx + 'px' |
| | | }" |
| | | ></canvas> |
| | | <!-- è¿åº¦åç¯ --> |
| | | <canvas |
| | | class="tn-circle-progress__canvas" |
| | | :canvas-id="elId" |
| | | :id="elId" |
| | | :style="{ |
| | | width: widthPx + 'px', |
| | | height: widthPx + 'px' |
| | | }" |
| | | ></canvas> |
| | | <view class="tn-circle-progress__content"> |
| | | <slot v-if="$slots.default || $slots.$default"></slot> |
| | | <view v-else-if="showPercent" class="tn-circle-progress__content__percent">{{ percent + '%' }}</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'tn-circle-progress', |
| | | props: { |
| | | // è¿åº¦ï¼ç¾åæ¯ï¼ |
| | | percent: { |
| | | type: Number, |
| | | default: 0, |
| | | validator: val => { |
| | | return val >= 0 && val <= 100 |
| | | } |
| | | }, |
| | | // åç¯çº¿å®½ |
| | | borderWidth: { |
| | | type: Number, |
| | | default: 14 |
| | | }, |
| | | // æ´ä½åç宽度 |
| | | width: { |
| | | type: Number, |
| | | default: 200 |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºæ¡çº¹ |
| | | striped: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // æ¡çº¹æ¯å¦è¿å¨ |
| | | stripedActive: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | // æ¿æ´»é¨åé¢è² |
| | | activeColor: { |
| | | type: String, |
| | | default: '#01BEFF' |
| | | }, |
| | | // éæ¿æ´»é¨åé¢è² |
| | | inactiveColor: { |
| | | type: String, |
| | | default: '#f0f0f0' |
| | | }, |
| | | // æ¯å¦æ¾ç¤ºè¿åº¦æ¡å
é¨ç¾åæ¯å¼ |
| | | showPercent: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | // åç¯æ§è¡å¨ç»çæ¶é´ï¼ms |
| | | duration: { |
| | | type: Number, |
| | | default: 1500 |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // 微信å°ç¨åºä¸ä¸è½ä½¿ç¨this.$t.uuid()å½¢å¼å¨æçæidå¼ï¼å¦å伿¥é |
| | | // #ifdef MP-WEIXIN |
| | | elBgId: 'tCircleProgressBgId', |
| | | elId: 'tCircleProgressElId', |
| | | // #endif |
| | | // #ifndef MP-WEIXIN |
| | | elBgId: this.$t.uuid(), |
| | | elId: this.$t.uuid(), |
| | | // #endif |
| | | // æ´»å¨åä¸ä¸æ |
| | | progressContext: null, |
| | | // è½¬æ¢æpx为åä½çèæ¯å®½åº¦ |
| | | widthPx: uni.upx2px(this.width || 200), |
| | | // è½¬æ¢æpx为åä½çåç¯å®½åº¦ |
| | | borderWidthPx: uni.upx2px(this.borderWidth || 14), |
| | | // canvasç»åçèµ·å§è§åº¦ï¼é»è®¤ä¸º-90度ï¼é¡ºæ¶é |
| | | startAngle: -90 * Math.PI / 180, |
| | | // å¨æä¿®æ¹è¿åº¦å¼çæ¶åï¼ä¿åè¿åº¦å¼çååååå¼ |
| | | newPercent: 0, |
| | | oldPercent: 0 |
| | | } |
| | | }, |
| | | watch: { |
| | | percent(newVal, oldVal = 0) { |
| | | if (newVal > 100) newVal = 100 |
| | | if (oldVal < 0) oldVal = 0 |
| | | |
| | | this.newPercent = newVal |
| | | this.oldPercent = oldVal |
| | | setTimeout(() => { |
| | | // æ 论æ¯ç¾åæ¯å¼å¢å è¿æ¯åå°ï¼éè¦æä½è¿æ¯åæ¥çæ§çç¾åæ¯å¼ |
| | | // å°æ¤å¼åå°æè
æ°å¢å°æ°çç¾åæ¯å¼ |
| | | this.drawCircleByProgress(oldVal) |
| | | }, 50) |
| | | } |
| | | }, |
| | | created() { |
| | | // èµå¼ï¼ç¨äºå è½½å第ä¸ä¸ªç»åä½¿ç¨ |
| | | this.newPercent = this.percent; |
| | | this.oldPercent = 0; |
| | | }, |
| | | mounted() { |
| | | setTimeout(() => { |
| | | this.drawProgressBg() |
| | | this.drawCircleByProgress(this.oldPercent) |
| | | }, 50) |
| | | }, |
| | | methods: { |
| | | // ç»å¶è¿åº¦æ¡èæ¯ |
| | | drawProgressBg() { |
| | | let ctx = uni.createCanvasContext(this.elBgId, this) |
| | | // 设置线宽 |
| | | ctx.setLineWidth(this.borderWidthPx) |
| | | // 设置é¢è² |
| | | ctx.setStrokeStyle(this.inactiveColor) |
| | | ctx.beginPath() |
| | | let radius = this.widthPx / 2 |
| | | ctx.arc(radius, radius, radius - this.borderWidthPx, 0, 360 * Math.PI / 180, false) |
| | | ctx.stroke() |
| | | ctx.draw() |
| | | }, |
| | | // ç»å¶åå¼§çè¿åº¦ |
| | | drawCircleByProgress(progress) { |
| | | // 妿已ç»åå¨åæ¿æ¥ä½¿ç¨ |
| | | let ctx = this.progressContext |
| | | if (!ctx) { |
| | | ctx =uni.createCanvasContext(this.elId, this) |
| | | this.progressContext = ctx |
| | | } |
| | | ctx.setLineCap('round') |
| | | // 设置线æ¡å®½åº¦åé¢è² |
| | | ctx.setLineWidth(this.borderWidthPx) |
| | | ctx.setStrokeStyle(this.activeColor) |
| | | // å°æ»è¿æ¸¡æ¶é´é¤ä»¥100ï¼å¾åºæ¯ä¿®æ¹ç¾åä¹ä¸è¿åº¦æéçæ¶é´ |
| | | let preSecondTime = Math.floor(this.duration / 100) |
| | | // ç»æè§ç计ç®ä¾æ®ä¸ºï¼å°2Ïå为100份ï¼ä¹ä»¥å½åçè¿åº¦å¼ï¼å¾åºç»æ¢ç¹ç弧度å¼ï¼å èµ·å§è§ï¼ä¸ºæ´ä¸ªåä»é»è®¤ç |
| | | let endAngle = ((360 * Math.PI / 180) / 100) * progress + this.startAngle |
| | | let radius = this.widthPx / 2 |
| | | ctx.beginPath() |
| | | ctx.arc(radius, radius, radius - this.borderWidthPx, this.startAngle, endAngle, false) |
| | | ctx.stroke() |
| | | ctx.draw() |
| | | |
| | | // 妿忴忰å¼å¤§äºæ§å¼ï¼æå³çå¢å¤§äºç¾åæ¯ |
| | | if (this.newPercent > this.oldPercent) { |
| | | // æ¯æ¬¡éå¢ç¾åä¹ä¸ |
| | | progress++ |
| | | // 妿æ°å¢åçå¼ï¼å¤§äºéè¦è®¾ç½®çå¼ç¾åæ¯å¼ï¼åæ¢ç»§ç»å¢å |
| | | if (progress > this.newPercent) return |
| | | } else { |
| | | progress-- |
| | | if (progress < this.newPercent) return |
| | | } |
| | | setTimeout(() => { |
| | | // 宿¶å¨ï¼æ¯æ¬¡æä½é´é为timeå¼ï¼ä¸ºäºè®©è¿åº¦æ¡æå¨ç»ææ |
| | | this.drawCircleByProgress(progress) |
| | | }, preSecondTime) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | |
| | | .tn-circle-progress { |
| | | position: relative; |
| | | /* #ifndef APP-NVUE */ |
| | | display: inline-flex; |
| | | /* #endif */ |
| | | align-items: center; |
| | | justify-content: center; |
| | | background-color: transparent; |
| | | |
| | | &__canvas { |
| | | position: absolute; |
| | | |
| | | &-bg { |
| | | position: absolute; |
| | | } |
| | | } |
| | | |
| | | &__content { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | &__percent { |
| | | font-size: 28rpx; |
| | | } |
| | | } |
| | | } |
| | | </style> |
代码管理/淮安PDA/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-collapse/tn-collapse.vue
代码管理/淮安PDA/tuniao-ui/components/tn-color-icon/tn-color-icon.vue
代码管理/淮安PDA/tuniao-ui/components/tn-column-notice/tn-column-notice.vue
代码管理/淮安PDA/tuniao-ui/components/tn-count-down/tn-count-down.vue
代码管理/淮安PDA/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue
代码管理/淮安PDA/tuniao-ui/components/tn-count-to/tn-count-to.vue
代码管理/淮安PDA/tuniao-ui/components/tn-cropper/index.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-cropper/tn-cropper.vue
代码管理/淮安PDA/tuniao-ui/components/tn-custom-swiper-item/index.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue
代码管理/淮安PDA/tuniao-ui/components/tn-drag/index.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-drag/tn-drag.vue
代码管理/淮安PDA/tuniao-ui/components/tn-empty/tn-empty.vue
代码管理/淮安PDA/tuniao-ui/components/tn-fab/tn-fab.vue
代码管理/淮安PDA/tuniao-ui/components/tn-form-item/tn-form-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-form/tn-form.vue
代码管理/淮安PDA/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue
代码管理/淮安PDA/tuniao-ui/components/tn-grid-item/tn-grid-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-grid/tn-grid.vue
代码管理/淮安PDA/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue
代码管理/淮安PDA/tuniao-ui/components/tn-image-upload/tn-image-upload.vue
代码管理/淮安PDA/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue
代码管理/淮安PDA/tuniao-ui/components/tn-index-list/tn-index-list.vue
代码管理/淮安PDA/tuniao-ui/components/tn-input/tn-input.vue
代码管理/淮安PDA/tuniao-ui/components/tn-keyboard/tn-keyboard.vue
代码管理/淮安PDA/tuniao-ui/components/tn-landscape/tn-landscape.vue
代码管理/淮安PDA/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue
代码管理/淮安PDA/tuniao-ui/components/tn-line-progress/tn-line-progress.vue
代码管理/淮安PDA/tuniao-ui/components/tn-list-cell/tn-list-cell.vue
代码管理/淮安PDA/tuniao-ui/components/tn-list-view/tn-list-view.vue
代码管理/淮安PDA/tuniao-ui/components/tn-load-more/tn-load-more.vue
代码管理/淮安PDA/tuniao-ui/components/tn-loading/tn-loading.vue
代码管理/淮安PDA/tuniao-ui/components/tn-modal/tn-modal.vue
代码管理/淮安PDA/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue
代码管理/淮安PDA/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue
代码管理/淮安PDA/tuniao-ui/components/tn-number-box/tn-number-box.vue
代码管理/淮安PDA/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue
代码管理/淮安PDA/tuniao-ui/components/tn-picker/tn-picker.vue
代码管理/淮安PDA/tuniao-ui/components/tn-popup/tn-popup.vue
代码管理/淮安PDA/tuniao-ui/components/tn-radio-group/tn-radio-group.vue
代码管理/淮安PDA/tuniao-ui/components/tn-radio/tn-radio.vue
代码管理/淮安PDA/tuniao-ui/components/tn-rate/tn-rate.vue
代码管理/淮安PDA/tuniao-ui/components/tn-read-more/tn-read-more.vue
代码管理/淮安PDA/tuniao-ui/components/tn-row-notice/tn-row-notice.vue
代码管理/淮安PDA/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue
代码管理/淮安PDA/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue
代码管理/淮安PDA/tuniao-ui/components/tn-select/tn-select.vue
代码管理/淮安PDA/tuniao-ui/components/tn-sign-board/tn-sign-board.vue
代码管理/淮安PDA/tuniao-ui/components/tn-skeleton/tn-skeleton.vue
代码管理/淮安PDA/tuniao-ui/components/tn-slider/tn-slider.vue
代码管理/淮安PDA/tuniao-ui/components/tn-stack-swiper/index-h5.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-stack-swiper/index.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue
代码管理/淮安PDA/tuniao-ui/components/tn-steps/tn-steps.vue
代码管理/淮安PDA/tuniao-ui/components/tn-sticky/tn-sticky.vue
代码管理/淮安PDA/tuniao-ui/components/tn-subsection/tn-subsection.vue
代码管理/淮安PDA/tuniao-ui/components/tn-swipe-action-item/index.wxs
代码管理/淮安PDA/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue
代码管理/淮安PDA/tuniao-ui/components/tn-swiper/tn-swiper.vue
代码管理/淮安PDA/tuniao-ui/components/tn-switch/tn-switch.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tabbar/tn-tabbar.vue
代码管理/淮安PDA/tuniao-ui/components/tn-table/tn-table.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tabs/tn-tabs.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tag/tn-tag.vue
代码管理/淮安PDA/tuniao-ui/components/tn-td/tn-td.vue
代码管理/淮安PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue
代码管理/淮安PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk
代码管理/淮安PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue
代码管理/淮安PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk
代码管理/淮安PDA/tuniao-ui/components/tn-tips/tn-tips.vue
代码管理/淮安PDA/tuniao-ui/components/tn-toast/tn-toast.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tr/tn-tr.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tree-node/tn-tree-node.vue
代码管理/淮安PDA/tuniao-ui/components/tn-tree-view/tn-tree-view.vue
代码管理/淮安PDA/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue
代码管理/淮安PDA/tuniao-ui/components/tn-verification-code/tn-verification-code.vue
代码管理/淮安PDA/tuniao-ui/components/tn-waterfall/tn-waterfall.vue
代码管理/淮安PDA/tuniao-ui/iconfont.css
代码管理/淮安PDA/tuniao-ui/index.js
代码管理/淮安PDA/tuniao-ui/index.scss
代码管理/淮安PDA/tuniao-ui/libs/config/color.js
代码管理/淮安PDA/tuniao-ui/libs/config/zIndex.js
代码管理/淮安PDA/tuniao-ui/libs/css/color.scss
代码管理/淮安PDA/tuniao-ui/libs/css/main.scss
代码管理/淮安PDA/tuniao-ui/libs/css/style.h5.scss
代码管理/淮安PDA/tuniao-ui/libs/css/style.mp.scss
代码管理/淮安PDA/tuniao-ui/libs/function/$parent.js
代码管理/淮安PDA/tuniao-ui/libs/function/array.js
代码管理/淮安PDA/tuniao-ui/libs/function/color.js
代码管理/淮安PDA/tuniao-ui/libs/function/colorUtils.js
代码管理/淮安PDA/tuniao-ui/libs/function/deepClone.js
代码管理/淮安PDA/tuniao-ui/libs/function/message.js
代码管理/淮安PDA/tuniao-ui/libs/function/messageUtils.js
代码管理/淮安PDA/tuniao-ui/libs/function/number.js
代码管理/淮安PDA/tuniao-ui/libs/function/string.js
代码管理/淮安PDA/tuniao-ui/libs/function/test.js
代码管理/淮安PDA/tuniao-ui/libs/function/updateCustomBarInfo.js
代码管理/淮安PDA/tuniao-ui/libs/function/uuid.js
代码管理/淮安PDA/tuniao-ui/libs/mixin/components_color.js
代码管理/淮安PDA/tuniao-ui/libs/mixin/mixin.js
代码管理/淮安PDA/tuniao-ui/libs/mixin/mpShare.js
代码管理/淮安PDA/tuniao-ui/libs/mixin/touch.js
代码管理/淮安PDA/tuniao-ui/libs/utils/area.js
代码管理/淮安PDA/tuniao-ui/libs/utils/async-validator.js
代码管理/淮安PDA/tuniao-ui/libs/utils/calendar.js
代码管理/淮安PDA/tuniao-ui/libs/utils/city.js
代码管理/淮安PDA/tuniao-ui/libs/utils/emitter.js
代码管理/淮安PDA/tuniao-ui/libs/utils/province.js
代码管理/淮安PDA/tuniao-ui/theme.scss
代码管理/淮安PDA/uni.scss
代码管理/淮安PDA/uni_modules/uni-badge/changelog.md
代码管理/淮安PDA/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
代码管理/淮安PDA/uni_modules/uni-badge/package.json
代码管理/淮安PDA/uni_modules/uni-badge/readme.md
代码管理/淮安PDA/uni_modules/uni-card/changelog.md
代码管理/淮安PDA/uni_modules/uni-card/components/uni-card/uni-card.vue
代码管理/淮安PDA/uni_modules/uni-card/package.json
代码管理/淮安PDA/uni_modules/uni-card/readme.md
代码管理/淮安PDA/uni_modules/uni-combox/changelog.md
代码管理/淮安PDA/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
代码管理/淮安PDA/uni_modules/uni-combox/package.json
代码管理/淮安PDA/uni_modules/uni-combox/readme.md
代码管理/淮安PDA/uni_modules/uni-data-checkbox/changelog.md
代码管理/淮安PDA/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
代码管理/淮安PDA/uni_modules/uni-data-checkbox/package.json
代码管理/淮安PDA/uni_modules/uni-data-checkbox/readme.md
代码管理/淮安PDA/uni_modules/uni-data-select/changelog.md
代码管理/淮安PDA/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
代码管理/淮安PDA/uni_modules/uni-data-select/package.json
代码管理/淮安PDA/uni_modules/uni-data-select/readme.md
代码管理/淮安PDA/uni_modules/uni-easyinput/changelog.md
代码管理/淮安PDA/uni_modules/uni-easyinput/components/uni-easyinput/common.js
代码管理/淮安PDA/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
代码管理/淮安PDA/uni_modules/uni-easyinput/package.json
代码管理/淮安PDA/uni_modules/uni-easyinput/readme.md
代码管理/淮安PDA/uni_modules/uni-forms/changelog.md
代码管理/淮安PDA/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
代码管理/淮安PDA/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
代码管理/淮安PDA/uni_modules/uni-forms/components/uni-forms/utils.js
代码管理/淮安PDA/uni_modules/uni-forms/components/uni-forms/validate.js
代码管理/淮安PDA/uni_modules/uni-forms/package.json
代码管理/淮安PDA/uni_modules/uni-forms/readme.md
代码管理/淮安PDA/uni_modules/uni-group/changelog.md
代码管理/淮安PDA/uni_modules/uni-group/components/uni-group/uni-group.vue
代码管理/淮安PDA/uni_modules/uni-group/package.json
代码管理/淮安PDA/uni_modules/uni-group/readme.md
代码管理/淮安PDA/uni_modules/uni-icons/changelog.md
代码管理/淮安PDA/uni_modules/uni-icons/components/uni-icons/icons.js
代码管理/淮安PDA/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
代码管理/淮安PDA/uni_modules/uni-icons/components/uni-icons/uni.ttf
代码管理/淮安PDA/uni_modules/uni-icons/components/uni-icons/uniicons.css
代码管理/淮安PDA/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
代码管理/淮安PDA/uni_modules/uni-icons/package.json
代码管理/淮安PDA/uni_modules/uni-icons/readme.md
代码管理/淮安PDA/uni_modules/uni-id/changelog.md
代码管理/淮安PDA/uni_modules/uni-id/package.json
代码管理/淮安PDA/uni_modules/uni-id/readme.md
代码管理/淮安PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
代码管理/淮安PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
代码管理/淮安PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
代码管理/淮安PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json
代码管理/淮安PDA/uni_modules/uni-list/changelog.md
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list/uni-list.vue
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list/uni-refresh.vue
代码管理/淮安PDA/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
代码管理/淮安PDA/uni_modules/uni-list/package.json
代码管理/淮安PDA/uni_modules/uni-list/readme.md
代码管理/淮安PDA/uni_modules/uni-load-more/changelog.md
代码管理/淮安PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
代码管理/淮安PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
代码管理/淮安PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
代码管理/淮安PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
代码管理/淮安PDA/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
代码管理/淮安PDA/uni_modules/uni-load-more/package.json
代码管理/淮安PDA/uni_modules/uni-load-more/readme.md
代码管理/淮安PDA/uni_modules/uni-nav-bar/changelog.md
代码管理/淮安PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
代码管理/淮安PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
代码管理/淮安PDA/uni_modules/uni-nav-bar/package.json
代码管理/淮安PDA/uni_modules/uni-nav-bar/readme.md
代码管理/淮安PDA/uni_modules/uni-popup/changelog.md
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/i18n/en.json
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/i18n/index.js
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/keypress.js
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/popup.js
代码管理/淮安PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
代码管理/淮安PDA/uni_modules/uni-popup/package.json
代码管理/淮安PDA/uni_modules/uni-popup/readme.md
代码管理/淮安PDA/uni_modules/uni-scss/changelog.md
代码管理/淮安PDA/uni_modules/uni-scss/index.scss
代码管理/淮安PDA/uni_modules/uni-scss/package.json
代码管理/淮安PDA/uni_modules/uni-scss/readme.md
代码管理/淮安PDA/uni_modules/uni-scss/styles/index.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_border.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_color.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_radius.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_space.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_styles.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_text.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/setting/_variables.scss
代码管理/淮安PDA/uni_modules/uni-scss/styles/tools/functions.scss
代码管理/淮安PDA/uni_modules/uni-scss/theme.scss
代码管理/淮安PDA/uni_modules/uni-scss/variables.scss
代码管理/淮安PDA/uni_modules/uni-search-bar/changelog.md
代码管理/淮安PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
代码管理/淮安PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
代码管理/淮安PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
代码管理/淮安PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
代码管理/淮安PDA/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
代码管理/淮安PDA/uni_modules/uni-search-bar/package.json
代码管理/淮安PDA/uni_modules/uni-search-bar/readme.md
代码管理/淮安PDA/uni_modules/uni-segmented-control/changelog.md
代码管理/淮安PDA/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
代码管理/淮安PDA/uni_modules/uni-segmented-control/package.json
代码管理/淮安PDA/uni_modules/uni-segmented-control/readme.md
代码管理/淮安PDA/uni_modules/uni-transition/changelog.md
代码管理/淮安PDA/uni_modules/uni-transition/components/uni-transition/createAnimation.js
代码管理/淮安PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
代码管理/淮安PDA/uni_modules/uni-transition/package.json
代码管理/淮安PDA/uni_modules/uni-transition/readme.md
代码管理/淮安PDA/unpackage/cache/apk/apkurl
代码管理/淮安PDA/unpackage/cache/apk/cmManifestCache.json
代码管理/淮安PDA/unpackage/cache/certdata
代码管理/淮安PDA/unpackage/cache/cloudcertificate/certini
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/.manifest/icon-android-hdpi.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/.manifest/icon-android-xhdpi.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/.manifest/icon-android-xxhdpi.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/.manifest/icon-android-xxxhdpi.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappchooselocation.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniapperror.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappes6.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappopenlocation.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniapppicker.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappquill.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappquillimageresize.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappscan.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappsuccess.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/__uniappview.html
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/app-config-service.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/app-config.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/app-service.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/app-view.js
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/manifest.json
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/center-selected.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/center.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/fail.mp3
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/favicon.ico
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/index-selected.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/index.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/login_bottom_bg.jpg
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/login_top2.jpg
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/login_top3.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/logo.png
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/repeat.mp3
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/static/success.mp3
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/view.css
代码管理/淮安PDA/unpackage/cache/wgt/__UNI__BFEF6BA/view.umd.min.js
代码管理/淮安PDA/unpackage/res/icons/1024x1024.png
代码管理/淮安PDA/unpackage/res/icons/120x120.png
代码管理/淮安PDA/unpackage/res/icons/144x144.png
代码管理/淮安PDA/unpackage/res/icons/152x152.png
代码管理/淮安PDA/unpackage/res/icons/167x167.png
代码管理/淮安PDA/unpackage/res/icons/180x180.png
代码管理/淮安PDA/unpackage/res/icons/192x192.png
代码管理/淮安PDA/unpackage/res/icons/20x20.png
代码管理/淮安PDA/unpackage/res/icons/29x29.png
代码管理/淮安PDA/unpackage/res/icons/40x40.png
代码管理/淮安PDA/unpackage/res/icons/58x58.png
代码管理/淮安PDA/unpackage/res/icons/60x60.png
代码管理/淮安PDA/unpackage/res/icons/72x72.png
代码管理/淮安PDA/unpackage/res/icons/76x76.png
代码管理/淮安PDA/unpackage/res/icons/80x80.png
代码管理/淮安PDA/unpackage/res/icons/87x87.png
代码管理/淮安PDA/unpackage/res/icons/96x96.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappchooselocation.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniapperror.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappes6.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappopenlocation.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniapppicker.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappquill.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappquillimageresize.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappscan.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappsuccess.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/__uniappview.html
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/app-config-service.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/app-config.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/app-service.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/app-view.js
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/manifest.json
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/center-selected.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/center.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/favicon.ico
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/index-selected.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/index.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/login_bottom_bg.jpg
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/login_top2.jpg
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/login_top3.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/static/logo.png
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/view.css
代码管理/淮安PDA/unpackage/resources/__UNI__BFEF6BA/www/view.umd.min.js
代码管理/淮安PDA/uview-ui/LICENSE
代码管理/淮安PDA/uview-ui/README.md
代码管理/淮安PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue
代码管理/淮安PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue
代码管理/淮安PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
代码管理/淮安PDA/uview-ui/components/u-avatar-cropper/weCropper.js
代码管理/淮安PDA/uview-ui/components/u-avatar/u-avatar.vue
代码管理/淮安PDA/uview-ui/components/u-back-top/u-back-top.vue
代码管理/淮安PDA/uview-ui/components/u-badge/u-badge.vue
代码管理/淮安PDA/uview-ui/components/u-button/u-button.vue
代码管理/淮安PDA/uview-ui/components/u-calendar/u-calendar.vue
代码管理/淮安PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
代码管理/淮安PDA/uview-ui/components/u-card/u-card.vue
代码管理/淮安PDA/uview-ui/components/u-cell-group/u-cell-group.vue
代码管理/淮安PDA/uview-ui/components/u-cell-item/u-cell-item.vue
代码管理/淮安PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
代码管理/淮安PDA/uview-ui/components/u-checkbox/u-checkbox.vue
代码管理/淮安PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue
代码管理/淮安PDA/uview-ui/components/u-col/u-col.vue
代码管理/淮安PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue
代码管理/淮安PDA/uview-ui/components/u-collapse/u-collapse.vue
代码管理/淮安PDA/uview-ui/components/u-column-notice/u-column-notice.vue
代码管理/淮安PDA/uview-ui/components/u-count-down/u-count-down.vue
代码管理/淮安PDA/uview-ui/components/u-count-to/u-count-to.vue
代码管理/淮安PDA/uview-ui/components/u-divider/u-divider.vue
代码管理/淮安PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
代码管理/淮安PDA/uview-ui/components/u-dropdown/u-dropdown.vue
代码管理/淮安PDA/uview-ui/components/u-empty/u-empty.vue
代码管理/淮安PDA/uview-ui/components/u-field/u-field.vue
代码管理/淮安PDA/uview-ui/components/u-form-item/u-form-item.vue
代码管理/淮安PDA/uview-ui/components/u-form/u-form.vue
代码管理/淮安PDA/uview-ui/components/u-full-screen/u-full-screen.vue
代码管理/淮安PDA/uview-ui/components/u-gap/u-gap.vue
代码管理/淮安PDA/uview-ui/components/u-grid-item/u-grid-item.vue
代码管理/淮安PDA/uview-ui/components/u-grid/u-grid.vue
代码管理/淮安PDA/uview-ui/components/u-icon/u-icon.vue
代码管理/淮安PDA/uview-ui/components/u-image/u-image.vue
代码管理/淮安PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue
代码管理/淮安PDA/uview-ui/components/u-index-list/u-index-list.vue
代码管理/淮安PDA/uview-ui/components/u-input/u-input.vue
代码管理/淮安PDA/uview-ui/components/u-keyboard/u-keyboard.vue
代码管理/淮安PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue
代码管理/淮安PDA/uview-ui/components/u-line-progress/u-line-progress.vue
代码管理/淮安PDA/uview-ui/components/u-line/u-line.vue
代码管理/淮安PDA/uview-ui/components/u-link/u-link.vue
代码管理/淮安PDA/uview-ui/components/u-loading-page/u-loading-page.vue
代码管理/淮安PDA/uview-ui/components/u-loading/u-loading.vue
代码管理/淮安PDA/uview-ui/components/u-loadmore/u-loadmore.vue
代码管理/淮安PDA/uview-ui/components/u-mask/u-mask.vue
代码管理/淮安PDA/uview-ui/components/u-message-input/u-message-input.vue
代码管理/淮安PDA/uview-ui/components/u-modal/u-modal.vue
代码管理/淮安PDA/uview-ui/components/u-navbar/u-navbar.vue
代码管理/淮安PDA/uview-ui/components/u-no-network/u-no-network.vue
代码管理/淮安PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue
代码管理/淮安PDA/uview-ui/components/u-number-box/u-number-box.vue
代码管理/淮安PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
代码管理/淮安PDA/uview-ui/components/u-parse/libs/CssHandler.js
代码管理/淮安PDA/uview-ui/components/u-parse/libs/MpHtmlParser.js
代码管理/淮安PDA/uview-ui/components/u-parse/libs/config.js
代码管理/淮安PDA/uview-ui/components/u-parse/libs/handler.wxs
代码管理/淮安PDA/uview-ui/components/u-parse/libs/trees.vue
代码管理/淮安PDA/uview-ui/components/u-parse/u-parse.vue
代码管理/淮安PDA/uview-ui/components/u-picker/u-picker.vue
代码管理/淮安PDA/uview-ui/components/u-popup/u-popup.vue
代码管理/淮安PDA/uview-ui/components/u-radio-group/u-radio-group.vue
代码管理/淮安PDA/uview-ui/components/u-radio/u-radio.vue
代码管理/淮安PDA/uview-ui/components/u-rate/u-rate.vue
代码管理/淮安PDA/uview-ui/components/u-read-more/u-read-more.vue
代码管理/淮安PDA/uview-ui/components/u-row-notice/u-row-notice.vue
代码管理/淮安PDA/uview-ui/components/u-row/u-row.vue
代码管理/淮安PDA/uview-ui/components/u-search/u-search.vue
代码管理/淮安PDA/uview-ui/components/u-section/u-section.vue
代码管理/淮安PDA/uview-ui/components/u-select/u-select.vue
代码管理/淮安PDA/uview-ui/components/u-skeleton/u-skeleton.vue
代码管理/淮安PDA/uview-ui/components/u-slider/u-slider.vue
代码管理/淮安PDA/uview-ui/components/u-steps/u-steps.vue
代码管理/淮安PDA/uview-ui/components/u-sticky/u-sticky.vue
代码管理/淮安PDA/uview-ui/components/u-subsection/u-subsection.vue
代码管理/淮安PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue
代码管理/淮安PDA/uview-ui/components/u-swiper/u-swiper.vue
代码管理/淮安PDA/uview-ui/components/u-switch/u-switch.vue
代码管理/淮安PDA/uview-ui/components/u-tabbar/u-tabbar.vue
代码管理/淮安PDA/uview-ui/components/u-table/u-table.vue
代码管理/淮安PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
代码管理/淮安PDA/uview-ui/components/u-tabs/u-tabs.vue
代码管理/淮安PDA/uview-ui/components/u-tag/u-tag.vue
代码管理/淮安PDA/uview-ui/components/u-td/u-td.vue
代码管理/淮安PDA/uview-ui/components/u-th/u-th.vue
代码管理/淮安PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue
代码管理/淮安PDA/uview-ui/components/u-time-line/u-time-line.vue
代码管理/淮安PDA/uview-ui/components/u-toast/u-toast.vue
代码管理/淮安PDA/uview-ui/components/u-top-tips/u-top-tips.vue
代码管理/淮安PDA/uview-ui/components/u-tr/u-tr.vue
代码管理/淮安PDA/uview-ui/components/u-upload/u-upload.vue
代码管理/淮安PDA/uview-ui/components/u-verification-code/u-verification-code.vue
代码管理/淮安PDA/uview-ui/components/u-waterfall/u-waterfall.vue
代码管理/淮安PDA/uview-ui/iconfont.css
代码管理/淮安PDA/uview-ui/index.js
代码管理/淮安PDA/uview-ui/index.scss
代码管理/淮安PDA/uview-ui/libs/config/config.js
代码管理/淮安PDA/uview-ui/libs/config/zIndex.js
代码管理/淮安PDA/uview-ui/libs/css/color.scss
代码管理/淮安PDA/uview-ui/libs/css/common.scss
代码管理/淮安PDA/uview-ui/libs/css/style.components.scss
代码管理/淮安PDA/uview-ui/libs/css/style.h5.scss
代码管理/淮安PDA/uview-ui/libs/css/style.mp.scss
代码管理/淮安PDA/uview-ui/libs/css/style.nvue.scss
代码管理/淮安PDA/uview-ui/libs/css/style.vue.scss
代码管理/淮安PDA/uview-ui/libs/function/$parent.js
代码管理/淮安PDA/uview-ui/libs/function/addUnit.js
代码管理/淮安PDA/uview-ui/libs/function/bem.js
代码管理/淮安PDA/uview-ui/libs/function/color.js
代码管理/淮安PDA/uview-ui/libs/function/colorGradient.js
代码管理/淮安PDA/uview-ui/libs/function/debounce.js
代码管理/淮安PDA/uview-ui/libs/function/deepClone.js
代码管理/淮安PDA/uview-ui/libs/function/deepMerge.js
代码管理/淮安PDA/uview-ui/libs/function/getParent.js
代码管理/淮安PDA/uview-ui/libs/function/guid.js
代码管理/淮安PDA/uview-ui/libs/function/md5.js
代码管理/淮安PDA/uview-ui/libs/function/queryParams.js
代码管理/淮安PDA/uview-ui/libs/function/random.js
代码管理/淮安PDA/uview-ui/libs/function/randomArray.js
代码管理/淮安PDA/uview-ui/libs/function/route.js
代码管理/淮安PDA/uview-ui/libs/function/sys.js
代码管理/淮安PDA/uview-ui/libs/function/test.js
代码管理/淮安PDA/uview-ui/libs/function/throttle.js
代码管理/淮安PDA/uview-ui/libs/function/timeFormat.js
代码管理/淮安PDA/uview-ui/libs/function/timeFrom.js
代码管理/淮安PDA/uview-ui/libs/function/toast.js
代码管理/淮安PDA/uview-ui/libs/function/trim.js
代码管理/淮安PDA/uview-ui/libs/function/type2icon.js
代码管理/淮安PDA/uview-ui/libs/mixin/mixin.js
代码管理/淮安PDA/uview-ui/libs/mixin/mpShare.js
代码管理/淮安PDA/uview-ui/libs/request/index.js
代码管理/淮安PDA/uview-ui/libs/store/index.js
代码管理/淮安PDA/uview-ui/libs/util/area.js
代码管理/淮安PDA/uview-ui/libs/util/async-validator.js
代码管理/淮安PDA/uview-ui/libs/util/city.js
代码管理/淮安PDA/uview-ui/libs/util/emitter.js
代码管理/淮安PDA/uview-ui/libs/util/province.js
代码管理/淮安PDA/uview-ui/package.json
代码管理/淮安PDA/uview-ui/theme.scss
代码管理/淮安PDA/vue.config.js |