| | |
| | | |
| | | type json = any; |
| | | |
| | | type DictKey = |
| | | | "upgradeType" |
| | | | "complainType" |
| | | | "feedbackType" |
| | | | "ratedpayload" |
| | | | "iottype" |
| | | | "brand" |
| | | | "occupation" |
| | | | "sitetype" |
| | | | "datachanel" |
| | | | "vehicletype" |
| | | | "businesstype" |
| | | | "appointmentslot"; |
| | | |
| | | interface PagePagination { |
| | | size: number; |
| | | page: number; |
| | |
| | | list: boolean; |
| | | page: boolean; |
| | | add: boolean; |
| | | }; |
| | | |
| | | request: Request; |
| | | } |
| | | |
| | | interface MapsLive { |
| | | /** |
| | | * 在线车辆位置 |
| | | */ |
| | | vehicleOnline(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 车辆司机行为消息 |
| | | */ |
| | | vehicleEvents(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 在线分拣员位置 |
| | | */ |
| | | sorterOnline(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 分拣员健康与告警 |
| | | */ |
| | | sorterHealth(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 车辆历史轨迹 |
| | | */ |
| | | vehicleTrack(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 分拣员历史轨迹 |
| | | */ |
| | | sorterTrack(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 站点称重历史 |
| | | */ |
| | | siteWeight(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 站点地图点位 |
| | | */ |
| | | sites(data?: any): Promise<any>; |
| | | |
| | | /** |
| | | * 权限标识 |
| | | */ |
| | | permission: { |
| | | vehicleOnline: string; |
| | | vehicleEvents: string; |
| | | sorterOnline: string; |
| | | sorterHealth: string; |
| | | vehicleTrack: string; |
| | | sorterTrack: string; |
| | | siteWeight: string; |
| | | sites: string; |
| | | }; |
| | | |
| | | /** |
| | | * 权限状态 |
| | | */ |
| | | _permission: { |
| | | vehicleOnline: boolean; |
| | | vehicleEvents: boolean; |
| | | sorterOnline: boolean; |
| | | sorterHealth: boolean; |
| | | vehicleTrack: boolean; |
| | | sorterTrack: boolean; |
| | | siteWeight: boolean; |
| | | sites: boolean; |
| | | }; |
| | | |
| | | request: Request; |
| | |
| | | type: GoodsType; |
| | | }; |
| | | info: { banner: InfoBanner }; |
| | | maps: { live: MapsLive }; |
| | | market: { coupon: { info: MarketCouponInfo; user: MarketCouponUser } }; |
| | | monitor: { capturetask: MonitorCapturetask; ys7: MonitorYs7 }; |
| | | operation: { traderecord: OperationTraderecord; wastesale: OperationWastesale }; |
| | |
| | | [{"prefix":"/admin/app/complain","name":"AppComplainEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未处理 1-已处理","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型","nullable":false,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"contact","type":"string","length":"","comment":"联系方式","nullable":false,"source":"a.contact"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"},{"propertyName":"handlerName","type":"string","length":"","comment":"姓名","nullable":true,"source":"c.name"}]}},{"prefix":"/admin/app/feedback","name":"AppFeedbackEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未处理 1-已处理","nullable":false,"defaultValue":0,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"contact","type":"string","length":"","comment":"联系方式","nullable":false,"source":"a.contact"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"},{"propertyName":"handlerName","type":"string","length":"","comment":"姓名","nullable":true,"source":"c.name"}]}},{"prefix":"/admin/app/goods","name":"AppGoodsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型 0-天 1-月 2-年 3-永久","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"}]}},{"prefix":"/admin/app/version","name":"AppVersionEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"version","type":"string","length":"","comment":"版本号","nullable":false,"source":"a.version"}]}},{"prefix":"/admin/base/coding","name":"","api":[{"method":"get","path":"/getModuleTree"},{"method":"post","path":"/createCode"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/comm","name":"","api":[{"method":"post","path":"/personUpdate"},{"method":"get","path":"/uploadMode"},{"method":"get","path":"/permmenu"},{"method":"get","path":"/program"},{"method":"get","path":"/person"},{"method":"post","path":"/upload"},{"method":"post","path":"/logout"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/open","name":"","api":[{"method":"get","path":"/refreshToken"},{"method":"get","path":"/captcha"},{"method":"post","path":"/login"},{"method":"get","path":"/html"},{"method":"get","path":"/eps"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/department","name":"BaseSysDepartmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/order"},{"method":"post","path":"/list"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/log","name":"BaseSysLogEntity","api":[{"method":"post","path":"/setKeep"},{"method":"get","path":"/getKeep"},{"method":"post","path":"/clear"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"姓名","nullable":true,"source":"b.name"},{"propertyName":"action","type":"string","length":"","comment":"行为","nullable":false,"source":"a.action"},{"propertyName":"ip","type":"string","length":"","comment":"ip","nullable":true,"source":"a.ip"}]}},{"prefix":"/admin/base/sys/menu","name":"BaseSysMenuEntity","api":[{"method":"post","path":"/create"},{"method":"post","path":"/export"},{"method":"post","path":"/import"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/parse"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/param","name":"BaseSysParamEntity","api":[{"method":"get","path":"/stringbykey"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/html"},{"method":"get","path":"/info"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"dataType","type":"number","length":"","comment":"数据类型 0-字符串 1-富文本 2-文件 ","nullable":false,"defaultValue":0,"source":"a.dataType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"keyName","type":"string","length":"","comment":"键","nullable":false,"source":"a.keyName"}]}},{"prefix":"/admin/base/sys/role","name":"BaseSysRoleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"label","type":"string","length":"50","comment":"角色标签","nullable":true,"source":"a.label"}]}},{"prefix":"/admin/base/sys/user","name":"BaseSysUserEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/move"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/buyer","name":"BasicdataBuyerEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"部门ID","nullable":true,"source":"a.departmentId"},{"propertyName":"name","type":"string","length":"200","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"contact","type":"string","length":"50","comment":"联系人","nullable":true,"source":"a.contact"}],"fieldLike":[{"propertyName":"name","type":"string","length":"200","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"address","type":"string","length":"255","comment":"地址","nullable":true,"source":"a.address"}],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/driver","name":"BasicdataDriverEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["激活","禁用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessId","type":"string","length":"64","comment":"身份证号","nullable":false,"source":"a.businessId"},{"propertyName":"phone","type":"string","length":"32","comment":"手机号","nullable":true,"source":"a.phone"},{"propertyName":"licenseNo","type":"string","length":"64","comment":"驾驶证号","nullable":true,"source":"a.licenseNo"}]}},{"prefix":"/admin/basicdata/iot","name":"BasicdataIotEntity","api":[{"method":"post","path":"/getYsDevices"},{"method":"post","path":"/getSitelist"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"iotTypeCode","type":"string","length":"","comment":"终端类型","nullable":false,"source":"a.iotTypeCode"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"iotName","type":"string","length":"","comment":"终端名称","nullable":false,"source":"a.iotName"},{"propertyName":"iotCode","type":"string","length":"","comment":"终端编码","nullable":false,"source":"a.iotCode"}]}},{"prefix":"/admin/basicdata/site","name":"BasicdataSiteEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/sorter","name":"BasicdataSorterEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["在职","离职","禁用"],"source":"a.status"},{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessName","type":"string","length":"64","comment":"姓名","nullable":false,"source":"a.businessName"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":true,"source":"a.businessId"},{"propertyName":"phone","type":"string","length":"32","comment":"手机号","nullable":false,"source":"a.phone"}]}},{"prefix":"/admin/basicdata/vehicle","name":"BasicdataVehicleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"vehicleType","type":"string","length":"","comment":"车型","nullable":false,"defaultValue":"厢式货车","dict":"vehicletype","source":"a.vehicleType"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["启用","禁用"],"source":"a.status"},{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessId","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.businessId"},{"propertyName":"defaultDriver","type":"bigint","length":"","comment":"默认司机","nullable":true,"source":"a.defaultDriver"}]}},{"prefix":"/admin/basicdata/wastetype","name":"BasicdataWastetypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"isRecyclable","type":"number","length":"","comment":"是否可回收","nullable":false,"defaultValue":0,"dict":["否","是"],"source":"a.isRecyclable"},{"propertyName":"status","type":"number","length":"","comment":"是否启用","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"code","type":"string","length":"","comment":"代码","nullable":false,"source":"a.code"}]}},{"prefix":"/admin/count/home","name":"","api":[{"method":"post","path":"/goodsCategory"},{"method":"post","path":"/orderSummary"},{"method":"post","path":"/userSummary"},{"method":"post","path":"/orderChart"},{"method":"post","path":"/userChart"},{"method":"post","path":"/goodsRank"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/cs/msg","name":"CsMsgEntity","api":[{"method":"get","path":"/unreadCount"},{"method":"post","path":"/read"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/cs/session","name":"CsSessionEntity","api":[{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/demo/goods","name":"DemoGoodsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[{"propertyName":"title","type":"string","length":"50","comment":"标题","nullable":false,"source":"a.title"}],"keyWordLikeFields":[{"propertyName":"description","type":"string","length":"","comment":"描述","nullable":true,"source":"a.description"}]}},{"prefix":"/admin/demo/tenant","name":"DemoGoodsEntity","api":[{"method":"post","path":"/noTenant"},{"method":"post","path":"/noUse"},{"method":"post","path":"/use"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/dict/info","name":"DictInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/types"},{"method":"post","path":"/data"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/dict/type","name":"DictTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/goods/comment","name":"GoodsCommentEntity","api":[{"method":"post","path":"/page"}],"search":{"fieldEq":[{"propertyName":"goodsId","type":"number","length":"","comment":"商品ID","nullable":false,"source":"a.goodsId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"content","type":"string","length":"","comment":"内容","nullable":false,"source":"a.content"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/goods/info","name":"GoodsInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-下架 1-上架","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"typeId","type":"number","length":"","comment":"类型ID","nullable":false,"source":"a.typeId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"},{"propertyName":"subTitle","type":"string","length":"","comment":"副标题","nullable":true,"source":"a.subTitle"}]}},{"prefix":"/admin/goods/searchKeyword","name":"GoodsSearchKeywordEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"}]}},{"prefix":"/admin/goods/spec","name":"GoodsSpecEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/goods/type","name":"GoodsTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"parentId","type":"number","length":"","comment":"父ID","nullable":true,"source":"a.parentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"}]}},{"prefix":"/admin/info/banner","name":"InfoBannerEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 1:启用 2:禁用","nullable":false,"defaultValue":1,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/market/coupon/info","name":"MarketCouponInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":0,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"}]}},{"prefix":"/admin/market/coupon/user","name":"MarketCouponUserEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未使用 1-已使用","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"couponId","type":"number","length":"","comment":"优惠券ID","nullable":false,"source":"a.couponId"},{"propertyName":"userId","type":"string","length":"","comment":"用户ID","nullable":false,"source":"a.userId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/monitor/capturetask","name":"PushCaptureTaskEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"抓拍状态","nullable":false,"defaultValue":"PENDING","dict":["PENDING","SUCCESS","FAILED"],"source":"a.status"},{"propertyName":"captureDate","type":"string","length":"","comment":"任务执行日期","nullable":true,"source":"a.captureDate"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"deviceSerial","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.deviceSerial"},{"propertyName":"captureTaskId","type":"string","length":"","comment":"抓图任务ID(萤石返回)","nullable":true,"source":"a.captureTaskId"}]}},{"prefix":"/admin/monitor/ys7","name":"","api":[{"method":"post","path":"/getToken"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/operation/traderecord","name":"OperationTradeRecordEntity","api":[{"method":"post","path":"/import"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"transactionType","type":"string","length":"","comment":"交易类型","nullable":true,"source":"a.transactionType"},{"propertyName":"incomeType","type":"string","length":"","comment":"收支类型","nullable":false,"defaultValue":"收入","dict":["收入","支出","其他"],"source":"a.incomeType"},{"propertyName":"payMethod","type":"string","length":"","comment":"支付方式","nullable":true,"source":"a.payMethod"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"goodsName","type":"string","length":"","comment":"商品名称","nullable":true,"source":"a.goodsName"},{"propertyName":"opponent","type":"string","length":"","comment":"交易对方","nullable":true,"source":"a.opponent"}]}},{"prefix":"/admin/operation/wastesale","name":"OperationWastesaleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"部门ID","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/order/info","name":"OrderInfoEntity","api":[{"method":"post","path":"/refundHandle"},{"method":"get","path":"/logistics"},{"method":"post","path":"/deliver"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"}],"search":{"fieldEq":[{"propertyName":"status","type":"tinyint","length":"","comment":"状态 0-待付款 1-待发货 2-待收货 3-待评价 4-交易完成 5-退款中 6-已退款 7-已关闭","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"payType","type":"number","length":"","comment":"支付方式 0-待支付 1-微信 2-支付宝 3-碳积分","nullable":false,"defaultValue":0,"source":"a.payType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":true,"source":"a.title"},{"propertyName":"orderNum","type":"string","length":"","comment":"订单号","nullable":true,"source":"a.orderNum"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/plugin/info","name":"PluginInfoEntity","api":[{"method":"post","path":"/install"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/auditlog","name":"PushAuditlogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"客户端ID","nullable":false,"source":"a.deviceNo"},{"propertyName":"pushType","type":"string","length":"","comment":"推送类型","nullable":false,"defaultValue":"weight","dict":["weight","health_gps","vehicle_gps","driver_anomaly","others"],"source":"a.pushType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"errorMessage","type":"text","length":"","comment":"错误返回信息","nullable":true,"source":"a.errorMessage"}]}},{"prefix":"/admin/push/cameragps","name":"PushCameraGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"定位精度","nullable":false,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"sn","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.sn"}]}},{"prefix":"/admin/push/devicealarm","name":"PushDevicealarmEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"devSerial","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.devSerial"},{"propertyName":"departmentName","type":"string","length":"","comment":"部门名称","nullable":false,"source":"c.name"}]}},{"prefix":"/admin/push/deviceonoff","name":"PushDeviceOnoffEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"deviceId","type":"string","length":"","comment":"设备ID","nullable":false,"source":"a.deviceId"},{"propertyName":"subSerial","type":"string","length":"","comment":"子序列号","nullable":true,"source":"a.subSerial"},{"propertyName":"deviceName","type":"string","length":"","comment":"设备名称","nullable":true,"source":"a.deviceName"}]}},{"prefix":"/admin/push/siteweight","name":"PushSiteweightEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"},{"propertyName":"siteType","type":"string","length":"","comment":"站点类型","nullable":false,"defaultValue":"收集点","dict":"sitetype","source":"d.siteType"}],"fieldLike":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"}],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorteralarm","name":"PushSorterAlarmEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorterattendance","name":"PushSorterAttendanceEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sortergps","name":"PushSorterGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorterhealth","name":"PushSorterHealthEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/vehiclegps","name":"PushVehicleGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"定位精度","nullable":false,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"sn","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.sn"},{"propertyName":"vehicleNo","type":"string","length":"","comment":"车牌号","nullable":true,"source":"a.vehicleNo"}]}},{"prefix":"/admin/push/weight","name":"PushWeightEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"},{"propertyName":"garbageType","type":"string","length":"","comment":"垃圾类型","nullable":false,"source":"a.garbageType"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/recycle/data","name":"RecycleDataEntity","api":[{"method":"post","path":"/restore"},{"method":"get","path":"/info"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"userName","type":"string","length":"","comment":"姓名","nullable":true,"source":"b.name"},{"propertyName":"url","type":"string","length":"","comment":"请求的接口","nullable":true,"source":"a.url"}]}},{"prefix":"/admin/report/dailydepartment","name":"ReportDailyDepartmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"departmentId","type":"number","length":"","comment":"部门ID","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"departmentName","type":"string","length":"","comment":"部门名称","nullable":false,"source":"a.departmentName"}]}},{"prefix":"/admin/report/dailysite","name":"ReportDailysiteEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"siteId","type":"number","length":"","comment":"站点ID","nullable":false,"source":"a.siteId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"siteName","type":"string","length":"","comment":"站点名称","nullable":false,"source":"a.siteName"}]}},{"prefix":"/admin/report/dailysorter","name":"ReportDailySorterEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":false,"source":"a.businessId"},{"propertyName":"attendanceStatus","type":"string","length":"","comment":"考勤状态","nullable":false,"defaultValue":"缺卡","dict":["正常","迟到","早退","缺卡","旷工"],"source":"a.attendanceStatus"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessName","type":"string","length":"64","comment":"姓名","nullable":true,"source":"a.businessName"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":false,"source":"a.businessId"}]}},{"prefix":"/admin/report/dailyvehicle","name":"ReportDailyVehicleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"vehicleNo","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.vehicleNo"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"vehicleNo","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.vehicleNo"}]}},{"prefix":"/admin/report/joblog","name":"ReportJoblogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"dataDate","type":"date","length":"","comment":"数据目标日期","nullable":false,"source":"a.dataDate"},{"propertyName":"status","type":"enum","length":"","comment":"状态: 未开始, 运行中, 成功, 失败","nullable":false,"defaultValue":"INIT","source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"jobName","type":"string","length":"","comment":"任务类型: SITE_DAILY(站点日汇总), DEPT_DAILY(部门日汇总)","nullable":false,"source":"a.jobName"}]}},{"prefix":"/admin/report/screen","name":"","api":[{"method":"post","path":"/query"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleappointment","name":"RecycleAppointmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"状态","nullable":false,"defaultValue":"新增","dict":["新增","待审核","待接单","已确认","已接单","上门中","已完成","已取消","未知"],"source":"a.status"},{"propertyName":"departmentId","type":"number","length":"","comment":"学校ID","nullable":true,"source":"a.departmentId"},{"propertyName":"sorterId","type":"string","length":"","comment":"分拣员ID","nullable":true,"defaultValue":0,"source":"a.sorterId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"appointmentNo","type":"string","length":"","comment":"预约编号","nullable":false,"source":"a.appointmentNo"},{"propertyName":"contactName","type":"string","length":"","comment":"联系人","nullable":false,"source":"a.contactName"},{"propertyName":"contactPhone","type":"string","length":"","comment":"联系电话","nullable":false,"source":"a.contactPhone"}]}},{"prefix":"/admin/shop/recycleappointmentlog","name":"RecycleAppointmentLogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"appointmentId","type":"number","length":"","comment":"预约ID","nullable":false,"source":"a.appointmentId"},{"propertyName":"action","type":"string","length":"","comment":"操作类型","nullable":false,"dict":["创建预约","审核通过","分配人员","确认","接单","到达","开始回收","完成","取消","改期"],"source":"a.action"},{"propertyName":"operatorType","type":"string","length":"","comment":"操作人类型","nullable":false,"source":"a.operatorType"},{"propertyName":"operatorId","type":"number","length":"","comment":"操作人ID","nullable":false,"source":"a.operatorId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleitem","name":"RecycleItemEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"itemId","type":"string","length":"","comment":"分类ID","nullable":false,"source":"a.itemId"},{"propertyName":"category","type":"string","length":"","comment":"废品类别编码","nullable":false,"source":"a.category"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["启用","禁用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleorder","name":"RecycleOrderEntity","api":[{"method":"post","path":"/saveWithSummary"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"orderType","type":"string","length":"","comment":"订单类型","nullable":false,"defaultValue":"现场","dict":["现场","预约","大屏","活动","打卡"],"source":"a.orderType"},{"propertyName":"status","type":"string","length":"","comment":"状态","nullable":false,"defaultValue":"已完成","dict":["待处理","进行中","已完成","已取消"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"orderNo","type":"string","length":"","comment":"订单编号","nullable":false,"source":"a.orderNo"}]}},{"prefix":"/admin/shop/recycleorderitem","name":"RecycleOrderItemEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"orderNo","type":"string","length":"","comment":"订单NO","nullable":false,"source":"a.orderNo"},{"propertyName":"itemId","type":"string","length":"","comment":"垃圾分类ID","nullable":false,"source":"a.itemId"}],"fieldLike":[{"propertyName":"itemName","type":"string","length":"","comment":"垃圾分类名称","nullable":false,"source":"a.itemName"}],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/transaction","name":"RecycleTransactionEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"remark","type":"string","length":"","comment":"备注","nullable":true,"source":"a.remark"}]}},{"prefix":"/admin/space/info","name":"SpaceInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"type","type":"string","length":"","comment":"类型","nullable":false,"source":"a.type"},{"propertyName":"classifyId","type":"number","length":"","comment":"分类ID","nullable":true,"source":"a.classifyId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/space/type","name":"SpaceTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/task/info","name":"TaskInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/start"},{"method":"post","path":"/once"},{"method":"post","path":"/stop"},{"method":"get","path":"/info"},{"method":"post","path":"/page"},{"method":"get","path":"/log"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-停止 1-运行","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"状态 0-系统 1-用户","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/user/address","name":"UserAddressEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/user/info","name":"UserInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","正常","已注销"],"source":"a.status"},{"propertyName":"gender","type":"number","length":"","comment":"性别","nullable":false,"defaultValue":0,"dict":["未知","男","女"],"source":"a.gender"},{"propertyName":"loginType","type":"number","length":"","comment":"登录方式","nullable":false,"defaultValue":0,"dict":["小程序","公众号","H5"],"source":"a.loginType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"a.nickName"},{"propertyName":"phone","type":"string","length":"","comment":"手机号","nullable":true,"source":"a.phone"}]}}] |
| | | [{"prefix":"/admin/app/complain","name":"AppComplainEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未处理 1-已处理","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型","nullable":false,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"contact","type":"string","length":"","comment":"联系方式","nullable":false,"source":"a.contact"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"},{"propertyName":"handlerName","type":"string","length":"","comment":"姓名","nullable":true,"source":"c.name"}]}},{"prefix":"/admin/app/feedback","name":"AppFeedbackEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未处理 1-已处理","nullable":false,"defaultValue":0,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"contact","type":"string","length":"","comment":"联系方式","nullable":false,"source":"a.contact"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"},{"propertyName":"handlerName","type":"string","length":"","comment":"姓名","nullable":true,"source":"c.name"}]}},{"prefix":"/admin/app/goods","name":"AppGoodsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型 0-天 1-月 2-年 3-永久","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"}]}},{"prefix":"/admin/app/version","name":"AppVersionEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"类型","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"version","type":"string","length":"","comment":"版本号","nullable":false,"source":"a.version"}]}},{"prefix":"/admin/base/coding","name":"","api":[{"method":"get","path":"/getModuleTree"},{"method":"post","path":"/createCode"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/comm","name":"","api":[{"method":"post","path":"/personUpdate"},{"method":"get","path":"/uploadMode"},{"method":"get","path":"/permmenu"},{"method":"get","path":"/program"},{"method":"get","path":"/person"},{"method":"post","path":"/upload"},{"method":"post","path":"/logout"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/open","name":"","api":[{"method":"get","path":"/refreshToken"},{"method":"get","path":"/captcha"},{"method":"post","path":"/login"},{"method":"get","path":"/html"},{"method":"get","path":"/eps"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/department","name":"BaseSysDepartmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/order"},{"method":"post","path":"/list"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/log","name":"BaseSysLogEntity","api":[{"method":"post","path":"/setKeep"},{"method":"get","path":"/getKeep"},{"method":"post","path":"/clear"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"姓名","nullable":true,"source":"b.name"},{"propertyName":"action","type":"string","length":"","comment":"行为","nullable":false,"source":"a.action"},{"propertyName":"ip","type":"string","length":"","comment":"ip","nullable":true,"source":"a.ip"}]}},{"prefix":"/admin/base/sys/menu","name":"BaseSysMenuEntity","api":[{"method":"post","path":"/create"},{"method":"post","path":"/export"},{"method":"post","path":"/import"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/parse"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/base/sys/param","name":"BaseSysParamEntity","api":[{"method":"get","path":"/stringbykey"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/html"},{"method":"get","path":"/info"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"dataType","type":"number","length":"","comment":"数据类型 0-字符串 1-富文本 2-文件 ","nullable":false,"defaultValue":0,"source":"a.dataType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"keyName","type":"string","length":"","comment":"键","nullable":false,"source":"a.keyName"}]}},{"prefix":"/admin/base/sys/role","name":"BaseSysRoleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"label","type":"string","length":"50","comment":"角色标签","nullable":true,"source":"a.label"}]}},{"prefix":"/admin/base/sys/user","name":"BaseSysUserEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/move"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/buyer","name":"BasicdataBuyerEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"部门ID","nullable":true,"source":"a.departmentId"},{"propertyName":"name","type":"string","length":"200","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"contact","type":"string","length":"50","comment":"联系人","nullable":true,"source":"a.contact"}],"fieldLike":[{"propertyName":"name","type":"string","length":"200","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"address","type":"string","length":"255","comment":"地址","nullable":true,"source":"a.address"}],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/driver","name":"BasicdataDriverEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["激活","禁用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessId","type":"string","length":"64","comment":"身份证号","nullable":false,"source":"a.businessId"},{"propertyName":"phone","type":"string","length":"32","comment":"手机号","nullable":true,"source":"a.phone"},{"propertyName":"licenseNo","type":"string","length":"64","comment":"驾驶证号","nullable":true,"source":"a.licenseNo"}]}},{"prefix":"/admin/basicdata/iot","name":"BasicdataIotEntity","api":[{"method":"post","path":"/getYsDevices"},{"method":"post","path":"/getSitelist"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"iotTypeCode","type":"string","length":"","comment":"终端类型","nullable":false,"source":"a.iotTypeCode"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"iotName","type":"string","length":"","comment":"终端名称","nullable":false,"source":"a.iotName"},{"propertyName":"iotCode","type":"string","length":"","comment":"终端编码","nullable":false,"source":"a.iotCode"}]}},{"prefix":"/admin/basicdata/site","name":"BasicdataSiteEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/basicdata/sorter","name":"BasicdataSorterEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["在职","离职","禁用"],"source":"a.status"},{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessName","type":"string","length":"64","comment":"姓名","nullable":false,"source":"a.businessName"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":true,"source":"a.businessId"},{"propertyName":"phone","type":"string","length":"32","comment":"手机号","nullable":false,"source":"a.phone"}]}},{"prefix":"/admin/basicdata/vehicle","name":"BasicdataVehicleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"vehicleType","type":"string","length":"","comment":"车型","nullable":false,"defaultValue":"厢式货车","dict":"vehicletype","source":"a.vehicleType"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["启用","禁用"],"source":"a.status"},{"propertyName":"departmentId","type":"bigint","length":"","comment":"所属单位","nullable":true,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessId","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.businessId"},{"propertyName":"defaultDriver","type":"bigint","length":"","comment":"默认司机","nullable":true,"source":"a.defaultDriver"}]}},{"prefix":"/admin/basicdata/wastetype","name":"BasicdataWastetypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"isRecyclable","type":"number","length":"","comment":"是否可回收","nullable":false,"defaultValue":0,"dict":["否","是"],"source":"a.isRecyclable"},{"propertyName":"status","type":"number","length":"","comment":"是否启用","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"},{"propertyName":"code","type":"string","length":"","comment":"代码","nullable":false,"source":"a.code"}]}},{"prefix":"/admin/count/home","name":"","api":[{"method":"post","path":"/goodsCategory"},{"method":"post","path":"/orderSummary"},{"method":"post","path":"/userSummary"},{"method":"post","path":"/orderChart"},{"method":"post","path":"/userChart"},{"method":"post","path":"/goodsRank"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/cs/msg","name":"CsMsgEntity","api":[{"method":"get","path":"/unreadCount"},{"method":"post","path":"/read"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/cs/session","name":"CsSessionEntity","api":[{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/demo/goods","name":"DemoGoodsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","启用"],"source":"a.status"}],"fieldLike":[{"propertyName":"title","type":"string","length":"50","comment":"标题","nullable":false,"source":"a.title"}],"keyWordLikeFields":[{"propertyName":"description","type":"string","length":"","comment":"描述","nullable":true,"source":"a.description"}]}},{"prefix":"/admin/demo/tenant","name":"DemoGoodsEntity","api":[{"method":"post","path":"/noTenant"},{"method":"post","path":"/noUse"},{"method":"post","path":"/use"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/dict/info","name":"DictInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/types"},{"method":"post","path":"/data"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/dict/type","name":"DictTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/goods/comment","name":"GoodsCommentEntity","api":[{"method":"post","path":"/page"}],"search":{"fieldEq":[{"propertyName":"goodsId","type":"number","length":"","comment":"商品ID","nullable":false,"source":"a.goodsId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"content","type":"string","length":"","comment":"内容","nullable":false,"source":"a.content"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/goods/info","name":"GoodsInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-下架 1-上架","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"typeId","type":"number","length":"","comment":"类型ID","nullable":false,"source":"a.typeId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"},{"propertyName":"subTitle","type":"string","length":"","comment":"副标题","nullable":true,"source":"a.subTitle"}]}},{"prefix":"/admin/goods/searchKeyword","name":"GoodsSearchKeywordEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"}]}},{"prefix":"/admin/goods/spec","name":"GoodsSpecEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/goods/type","name":"GoodsTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"parentId","type":"number","length":"","comment":"父ID","nullable":true,"source":"a.parentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"name","type":"string","length":"","comment":"名称","nullable":false,"source":"a.name"}]}},{"prefix":"/admin/info/banner","name":"InfoBannerEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 1:启用 2:禁用","nullable":false,"defaultValue":1,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/maps/live","name":"","api":[{"method":"post","path":"/vehicleOnline"},{"method":"post","path":"/vehicleEvents"},{"method":"post","path":"/sorterOnline"},{"method":"post","path":"/sorterHealth"},{"method":"post","path":"/vehicleTrack"},{"method":"post","path":"/sorterTrack"},{"method":"post","path":"/siteWeight"},{"method":"post","path":"/sites"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/market/coupon/info","name":"MarketCouponInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-禁用 1-启用","nullable":false,"defaultValue":0,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":false,"source":"a.title"}]}},{"prefix":"/admin/market/coupon/user","name":"MarketCouponUserEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-未使用 1-已使用","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"couponId","type":"number","length":"","comment":"优惠券ID","nullable":false,"source":"a.couponId"},{"propertyName":"userId","type":"string","length":"","comment":"用户ID","nullable":false,"source":"a.userId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/monitor/capturetask","name":"PushCaptureTaskEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"抓拍状态","nullable":false,"defaultValue":"PENDING","dict":["PENDING","SUCCESS","FAILED"],"source":"a.status"},{"propertyName":"captureDate","type":"string","length":"","comment":"任务执行日期","nullable":true,"source":"a.captureDate"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"deviceSerial","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.deviceSerial"},{"propertyName":"captureTaskId","type":"string","length":"","comment":"抓图任务ID(萤石返回)","nullable":true,"source":"a.captureTaskId"}]}},{"prefix":"/admin/monitor/ys7","name":"","api":[{"method":"post","path":"/getToken"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/operation/traderecord","name":"OperationTradeRecordEntity","api":[{"method":"post","path":"/import"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"transactionType","type":"string","length":"","comment":"交易类型","nullable":true,"source":"a.transactionType"},{"propertyName":"incomeType","type":"string","length":"","comment":"收支类型","nullable":false,"defaultValue":"收入","dict":["收入","支出","其他"],"source":"a.incomeType"},{"propertyName":"payMethod","type":"string","length":"","comment":"支付方式","nullable":true,"source":"a.payMethod"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"goodsName","type":"string","length":"","comment":"商品名称","nullable":true,"source":"a.goodsName"},{"propertyName":"opponent","type":"string","length":"","comment":"交易对方","nullable":true,"source":"a.opponent"}]}},{"prefix":"/admin/operation/wastesale","name":"OperationWastesaleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"bigint","length":"","comment":"部门ID","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/order/info","name":"OrderInfoEntity","api":[{"method":"post","path":"/refundHandle"},{"method":"get","path":"/logistics"},{"method":"post","path":"/deliver"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"}],"search":{"fieldEq":[{"propertyName":"status","type":"tinyint","length":"","comment":"状态 0-待付款 1-待发货 2-待收货 3-待评价 4-交易完成 5-退款中 6-已退款 7-已关闭","nullable":false,"defaultValue":0,"source":"a.status"},{"propertyName":"payType","type":"number","length":"","comment":"支付方式 0-待支付 1-微信 2-支付宝 3-碳积分","nullable":false,"defaultValue":0,"source":"a.payType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"title","type":"string","length":"","comment":"标题","nullable":true,"source":"a.title"},{"propertyName":"orderNum","type":"string","length":"","comment":"订单号","nullable":true,"source":"a.orderNum"},{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"b.nickName"}]}},{"prefix":"/admin/plugin/info","name":"PluginInfoEntity","api":[{"method":"post","path":"/install"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/auditlog","name":"PushAuditlogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"客户端ID","nullable":false,"source":"a.deviceNo"},{"propertyName":"pushType","type":"string","length":"","comment":"推送类型","nullable":false,"defaultValue":"weight","dict":["weight","health_gps","vehicle_gps","driver_anomaly","others"],"source":"a.pushType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"errorMessage","type":"text","length":"","comment":"错误返回信息","nullable":true,"source":"a.errorMessage"}]}},{"prefix":"/admin/push/cameragps","name":"PushCameraGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"定位精度","nullable":false,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"sn","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.sn"}]}},{"prefix":"/admin/push/devicealarm","name":"PushDevicealarmEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"devSerial","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.devSerial"},{"propertyName":"departmentName","type":"string","length":"","comment":"部门名称","nullable":false,"source":"c.name"}]}},{"prefix":"/admin/push/deviceonoff","name":"PushDeviceOnoffEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"deviceId","type":"string","length":"","comment":"设备ID","nullable":false,"source":"a.deviceId"},{"propertyName":"subSerial","type":"string","length":"","comment":"子序列号","nullable":true,"source":"a.subSerial"},{"propertyName":"deviceName","type":"string","length":"","comment":"设备名称","nullable":true,"source":"a.deviceName"}]}},{"prefix":"/admin/push/siteweight","name":"PushSiteweightEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"},{"propertyName":"siteType","type":"string","length":"","comment":"站点类型","nullable":false,"defaultValue":"收集点","dict":"sitetype","source":"d.siteType"}],"fieldLike":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"}],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorteralarm","name":"PushSorterAlarmEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorterattendance","name":"PushSorterAttendanceEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sortergps","name":"PushSorterGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/sorterhealth","name":"PushSorterHealthEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"departmentId","type":"number","length":"","comment":"所属单位","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/push/vehiclegps","name":"PushVehicleGpsEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"定位精度","nullable":false,"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"sn","type":"string","length":"","comment":"设备序列号","nullable":false,"source":"a.sn"},{"propertyName":"vehicleNo","type":"string","length":"","comment":"车牌号","nullable":true,"source":"a.vehicleNo"}]}},{"prefix":"/admin/push/weight","name":"PushWeightEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"deviceNo","type":"string","length":"","comment":"设备号","nullable":false,"source":"a.deviceNo"},{"propertyName":"garbageType","type":"string","length":"","comment":"垃圾类型","nullable":false,"source":"a.garbageType"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/recycle/data","name":"RecycleDataEntity","api":[{"method":"post","path":"/restore"},{"method":"get","path":"/info"},{"method":"post","path":"/page"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"userName","type":"string","length":"","comment":"姓名","nullable":true,"source":"b.name"},{"propertyName":"url","type":"string","length":"","comment":"请求的接口","nullable":true,"source":"a.url"}]}},{"prefix":"/admin/report/dailydepartment","name":"ReportDailyDepartmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"departmentId","type":"number","length":"","comment":"部门ID","nullable":false,"source":"a.departmentId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"departmentName","type":"string","length":"","comment":"部门名称","nullable":false,"source":"a.departmentName"}]}},{"prefix":"/admin/report/dailysite","name":"ReportDailysiteEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"siteId","type":"number","length":"","comment":"站点ID","nullable":false,"source":"a.siteId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"siteName","type":"string","length":"","comment":"站点名称","nullable":false,"source":"a.siteName"}]}},{"prefix":"/admin/report/dailysorter","name":"ReportDailySorterEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":false,"source":"a.businessId"},{"propertyName":"attendanceStatus","type":"string","length":"","comment":"考勤状态","nullable":false,"defaultValue":"缺卡","dict":["正常","迟到","早退","缺卡","旷工"],"source":"a.attendanceStatus"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"businessName","type":"string","length":"64","comment":"姓名","nullable":true,"source":"a.businessName"},{"propertyName":"businessId","type":"string","length":"32","comment":"身份证号","nullable":false,"source":"a.businessId"}]}},{"prefix":"/admin/report/dailyvehicle","name":"ReportDailyVehicleEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"date","type":"date","length":"","comment":"日期","nullable":false,"source":"a.date"},{"propertyName":"vehicleNo","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.vehicleNo"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"vehicleNo","type":"string","length":"32","comment":"车牌号","nullable":false,"source":"a.vehicleNo"}]}},{"prefix":"/admin/report/joblog","name":"ReportJoblogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"dataDate","type":"date","length":"","comment":"数据目标日期","nullable":false,"source":"a.dataDate"},{"propertyName":"status","type":"enum","length":"","comment":"状态: 未开始, 运行中, 成功, 失败","nullable":false,"defaultValue":"INIT","source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"jobName","type":"string","length":"","comment":"任务类型: SITE_DAILY(站点日汇总), DEPT_DAILY(部门日汇总)","nullable":false,"source":"a.jobName"}]}},{"prefix":"/admin/report/screen","name":"","api":[{"method":"post","path":"/query"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleappointment","name":"RecycleAppointmentEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"string","length":"","comment":"状态","nullable":false,"defaultValue":"新增","dict":["新增","待审核","待接单","已确认","已接单","上门中","已完成","已取消","未知"],"source":"a.status"},{"propertyName":"departmentId","type":"number","length":"","comment":"学校ID","nullable":true,"source":"a.departmentId"},{"propertyName":"sorterId","type":"string","length":"","comment":"分拣员ID","nullable":true,"defaultValue":0,"source":"a.sorterId"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"appointmentNo","type":"string","length":"","comment":"预约编号","nullable":false,"source":"a.appointmentNo"},{"propertyName":"contactName","type":"string","length":"","comment":"联系人","nullable":false,"source":"a.contactName"},{"propertyName":"contactPhone","type":"string","length":"","comment":"联系电话","nullable":false,"source":"a.contactPhone"}]}},{"prefix":"/admin/shop/recycleappointmentlog","name":"RecycleAppointmentLogEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"appointmentId","type":"number","length":"","comment":"预约ID","nullable":false,"source":"a.appointmentId"},{"propertyName":"action","type":"string","length":"","comment":"操作类型","nullable":false,"dict":["创建预约","审核通过","分配人员","确认","接单","到达","开始回收","完成","取消","改期"],"source":"a.action"},{"propertyName":"operatorType","type":"string","length":"","comment":"操作人类型","nullable":false,"source":"a.operatorType"},{"propertyName":"operatorId","type":"number","length":"","comment":"操作人ID","nullable":false,"source":"a.operatorId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleitem","name":"RecycleItemEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"itemId","type":"string","length":"","comment":"分类ID","nullable":false,"source":"a.itemId"},{"propertyName":"category","type":"string","length":"","comment":"废品类别编码","nullable":false,"source":"a.category"},{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":0,"dict":["启用","禁用"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/recycleorder","name":"RecycleOrderEntity","api":[{"method":"post","path":"/saveWithSummary"},{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"orderType","type":"string","length":"","comment":"订单类型","nullable":false,"defaultValue":"现场","dict":["现场","预约","大屏","活动","打卡"],"source":"a.orderType"},{"propertyName":"status","type":"string","length":"","comment":"状态","nullable":false,"defaultValue":"已完成","dict":["待处理","进行中","已完成","已取消"],"source":"a.status"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"orderNo","type":"string","length":"","comment":"订单编号","nullable":false,"source":"a.orderNo"}]}},{"prefix":"/admin/shop/recycleorderitem","name":"RecycleOrderItemEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"orderNo","type":"string","length":"","comment":"订单NO","nullable":false,"source":"a.orderNo"},{"propertyName":"itemId","type":"string","length":"","comment":"垃圾分类ID","nullable":false,"source":"a.itemId"}],"fieldLike":[{"propertyName":"itemName","type":"string","length":"","comment":"垃圾分类名称","nullable":false,"source":"a.itemName"}],"keyWordLikeFields":[]}},{"prefix":"/admin/shop/transaction","name":"RecycleTransactionEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"remark","type":"string","length":"","comment":"备注","nullable":true,"source":"a.remark"}]}},{"prefix":"/admin/space/info","name":"SpaceInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"type","type":"string","length":"","comment":"类型","nullable":false,"source":"a.type"},{"propertyName":"classifyId","type":"number","length":"","comment":"分类ID","nullable":true,"source":"a.classifyId"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/space/type","name":"SpaceTypeEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/task/info","name":"TaskInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"post","path":"/start"},{"method":"post","path":"/once"},{"method":"post","path":"/stop"},{"method":"get","path":"/info"},{"method":"post","path":"/page"},{"method":"get","path":"/log"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态 0-停止 1-运行","nullable":false,"defaultValue":1,"source":"a.status"},{"propertyName":"type","type":"number","length":"","comment":"状态 0-系统 1-用户","nullable":false,"defaultValue":0,"source":"a.type"}],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/user/address","name":"UserAddressEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[],"fieldLike":[],"keyWordLikeFields":[]}},{"prefix":"/admin/user/info","name":"UserInfoEntity","api":[{"method":"post","path":"/delete"},{"method":"post","path":"/update"},{"method":"get","path":"/info"},{"method":"post","path":"/list"},{"method":"post","path":"/page"},{"method":"post","path":"/add"}],"search":{"fieldEq":[{"propertyName":"status","type":"number","length":"","comment":"状态","nullable":false,"defaultValue":1,"dict":["禁用","正常","已注销"],"source":"a.status"},{"propertyName":"gender","type":"number","length":"","comment":"性别","nullable":false,"defaultValue":0,"dict":["未知","男","女"],"source":"a.gender"},{"propertyName":"loginType","type":"number","length":"","comment":"登录方式","nullable":false,"defaultValue":0,"dict":["小程序","公众号","H5"],"source":"a.loginType"}],"fieldLike":[],"keyWordLikeFields":[{"propertyName":"nickName","type":"string","length":"","comment":"昵称","nullable":true,"source":"a.nickName"},{"propertyName":"phone","type":"string","length":"","comment":"手机号","nullable":true,"source":"a.phone"}]}}] |
| New file |
| | |
| | | <template> |
| | | <div class="map-board"> |
| | | <aside class="map-board__side"> |
| | | <div class="map-board__side-head"> |
| | | <slot name="side-head" /> |
| | | </div> |
| | | <div class="map-board__side-body"> |
| | | <slot name="side" /> |
| | | </div> |
| | | </aside> |
| | | <div class="map-board__map"> |
| | | <slot name="map" /> |
| | | <div v-if="$slots.legend" class="map-board__legend"> |
| | | <slot name="legend" /> |
| | | </div> |
| | | </div> |
| | | <aside v-if="open" class="map-board__panel"> |
| | | <div class="map-board__panel-head"> |
| | | <div> |
| | | <div class="map-board__panel-title">{{ title }}</div> |
| | | <div v-if="sub" class="map-board__panel-sub">{{ sub }}</div> |
| | | </div> |
| | | <el-button text @click="$emit('close')">关闭</el-button> |
| | | </div> |
| | | <div class="map-board__panel-body"> |
| | | <slot name="panel" /> |
| | | </div> |
| | | </aside> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | defineProps<{ |
| | | open?: boolean; |
| | | title?: string; |
| | | sub?: string; |
| | | }>(); |
| | | |
| | | defineEmits(['close']); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .map-board { |
| | | display: flex; |
| | | height: 100%; |
| | | min-height: calc(100vh - 140px); |
| | | background: var(--el-bg-color-page); |
| | | gap: 10px; |
| | | |
| | | &__side { |
| | | width: 260px; |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | border: 1px solid var(--el-border-color-extra-light); |
| | | border-radius: 10px; |
| | | background: var(--el-bg-color); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | &__side-head { |
| | | padding: 12px; |
| | | border-bottom: 1px solid var(--el-border-color-extra-light); |
| | | } |
| | | |
| | | &__side-body { |
| | | flex: 1; |
| | | overflow: auto; |
| | | } |
| | | |
| | | &__map { |
| | | flex: 1; |
| | | min-width: 0; |
| | | position: relative; |
| | | border-radius: 10px; |
| | | overflow: hidden; |
| | | border: 1px solid var(--el-border-color-extra-light); |
| | | } |
| | | |
| | | &__legend { |
| | | position: absolute; |
| | | left: 12px; |
| | | bottom: 12px; |
| | | z-index: 20; |
| | | padding: 8px 10px; |
| | | border-radius: 8px; |
| | | background: rgba(255, 255, 255, 0.92); |
| | | box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); |
| | | font-size: 12px; |
| | | } |
| | | |
| | | &__panel { |
| | | width: 420px; |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | flex-direction: column; |
| | | border: 1px solid var(--el-border-color-extra-light); |
| | | border-radius: 10px; |
| | | background: var(--el-bg-color); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | &__panel-head { |
| | | display: flex; |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | gap: 8px; |
| | | padding: 12px 14px; |
| | | border-bottom: 1px solid var(--el-border-color-extra-light); |
| | | } |
| | | |
| | | &__panel-title { |
| | | font-size: 16px; |
| | | font-weight: 700; |
| | | color: var(--el-text-color-primary); |
| | | } |
| | | |
| | | &__panel-sub { |
| | | margin-top: 4px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | |
| | | &__panel-body { |
| | | flex: 1; |
| | | min-height: 0; |
| | | overflow: auto; |
| | | padding: 0 12px 12px; |
| | | } |
| | | } |
| | | |
| | | :deep(.tdt-container), |
| | | :deep(.mapDiv) { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <div class="track-bar"> |
| | | <el-popover v-model:visible="open" placement="bottom-start" :width="340" trigger="click"> |
| | | <template #reference> |
| | | <el-button :icon="Setting" circle size="small" /> |
| | | </template> |
| | | <div class="track-bar__form"> |
| | | <div class="track-bar__label">查询时段</div> |
| | | <el-date-picker |
| | | v-model="range" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | size="small" |
| | | /> |
| | | <div class="track-bar__actions"> |
| | | <el-button size="small" @click="open = false">取消</el-button> |
| | | <el-button type="primary" size="small" @click="confirm">查询轨迹</el-button> |
| | | </div> |
| | | </div> |
| | | </el-popover> |
| | | <el-button size="small" :disabled="!hasTrack" @click="$emit(playing ? 'pause' : 'play')"> |
| | | {{ playing ? '暂停' : '播放' }} |
| | | </el-button> |
| | | <el-button size="small" :disabled="!hasTrack" @click="$emit('stop')">停止</el-button> |
| | | <span class="track-bar__speed">{{ speed }}x</span> |
| | | <el-slider v-model="speedModel" :min="1" :max="30" :step="1" class="track-bar__slider" /> |
| | | <el-progress :percentage="progress" :stroke-width="6" class="track-bar__progress" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { computed, ref, watch } from 'vue'; |
| | | import { Setting } from '@element-plus/icons-vue'; |
| | | |
| | | const props = defineProps<{ |
| | | playing?: boolean; |
| | | speed?: number; |
| | | progress?: number; |
| | | hasTrack?: boolean; |
| | | startTime?: string; |
| | | endTime?: string; |
| | | }>(); |
| | | |
| | | const emit = defineEmits(['update:speed', 'play', 'pause', 'stop', 'query']); |
| | | |
| | | const open = ref(false); |
| | | const range = ref<[string, string] | null>(null); |
| | | const speedModel = computed({ |
| | | get: () => props.speed || 5, |
| | | set: v => emit('update:speed', v) |
| | | }); |
| | | |
| | | watch( |
| | | () => [props.startTime, props.endTime], |
| | | () => { |
| | | if (props.startTime && props.endTime) range.value = [props.startTime, props.endTime]; |
| | | }, |
| | | { immediate: true } |
| | | ); |
| | | |
| | | function confirm() { |
| | | if (!range.value) return; |
| | | emit('query', range.value); |
| | | open.value = false; |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .track-bar { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | padding: 8px 0 4px; |
| | | |
| | | &__slider { |
| | | width: 96px; |
| | | } |
| | | |
| | | &__speed { |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | min-width: 28px; |
| | | } |
| | | |
| | | &__progress { |
| | | flex: 1; |
| | | min-width: 80px; |
| | | } |
| | | |
| | | &__form { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 8px; |
| | | } |
| | | |
| | | &__label { |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | |
| | | &__actions { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | gap: 8px; |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | import { type ModuleConfig } from '/@/cool'; |
| | | |
| | | export default (): ModuleConfig => { |
| | | return { |
| | | label: '地图监控', |
| | | description: '站点、分拣员、车辆实时位置与历史轨迹', |
| | | order: 8, |
| | | views: [ |
| | | { |
| | | path: '/maps/site', |
| | | name: 'maps-site', |
| | | meta: { label: '站点地图' }, |
| | | component: () => import('./views/site.vue') |
| | | }, |
| | | { |
| | | path: '/maps/sorter', |
| | | name: 'maps-sorter', |
| | | meta: { label: '分拣员位置' }, |
| | | component: () => import('./views/sorter.vue') |
| | | }, |
| | | { |
| | | path: '/maps/vehicle', |
| | | name: 'maps-vehicle', |
| | | meta: { label: '车辆位置' }, |
| | | component: () => import('./views/vehicle.vue') |
| | | } |
| | | ] |
| | | }; |
| | | }; |
| New file |
| | |
| | | import type { LngLat } from 'vue-tianditu2'; |
| | | import { useCool } from '/@/cool'; |
| | | |
| | | export const MAP_TK = '51915011aa0997aa2ddd7e38504fa8bc'; |
| | | export const MAP_LOAD = { v: '4.0', tk: MAP_TK }; |
| | | export const DEFAULT_CENTER: LngLat = [121.280637, 32.125178]; |
| | | |
| | | export function pinIcon(color: string) { |
| | | const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="28" height="40" viewBox="0 0 28 40"><path fill="${color}" stroke="#fff" stroke-width="1.5" d="M14 1C7.4 1 2 6.4 2 13c0 8.8 12 25 12 25s12-16.2 12-25C26 6.4 20.6 1 14 1z"/><circle cx="14" cy="13" r="5" fill="#fff"/></svg>`; |
| | | return { |
| | | iconUrl: 'data:image/svg+xml;charset=UTF-8,' + encodeURIComponent(svg), |
| | | iconSize: [28, 40] as [number, number], |
| | | iconAnchor: [14, 40] as [number, number] |
| | | }; |
| | | } |
| | | |
| | | export const SITE_ICONS = { |
| | | 收集点: pinIcon('#16a34a'), |
| | | 压缩站: pinIcon('#f59e0b'), |
| | | default: pinIcon('#3b82f6') |
| | | }; |
| | | |
| | | export function siteIcon(type: string) { |
| | | if (type === '压缩站') return SITE_ICONS.压缩站; |
| | | if (type === '收集点') return SITE_ICONS.收集点; |
| | | return SITE_ICONS.default; |
| | | } |
| | | |
| | | export const SORTER_ICON = pinIcon('#2563eb'); |
| | | export const VEHICLE_ICON = pinIcon('#7c3aed'); |
| | | export const PLAY_ICON = pinIcon('#ef4444'); |
| | | |
| | | export function useMapsApi() { |
| | | const { service } = useCool(); |
| | | |
| | | function call(name: string, data?: Record<string, any>) { |
| | | const api = (service as any).maps?.live?.[name]; |
| | | if (typeof api === 'function') { |
| | | return api.call((service as any).maps.live, data); |
| | | } |
| | | return service.request({ |
| | | url: `admin/maps/live/${name}`, |
| | | method: 'POST', |
| | | data |
| | | }); |
| | | } |
| | | |
| | | return { |
| | | sites: () => call('sites'), |
| | | siteWeight: (data: { businessId: string; startTime: string; endTime: string }) => call('siteWeight', data), |
| | | sorterOnline: () => call('sorterOnline'), |
| | | sorterTrack: (data: { idCard: string; startTime: string; endTime: string }) => call('sorterTrack', data), |
| | | sorterHealth: (idCard: string) => call('sorterHealth', { idCard }), |
| | | vehicleOnline: () => call('vehicleOnline'), |
| | | vehicleTrack: (data: { vehicleNo: string; startTime: string; endTime: string }) => call('vehicleTrack', data), |
| | | vehicleEvents: (vehicleNo: string) => call('vehicleEvents', { vehicleNo }) |
| | | }; |
| | | } |
| | | |
| | | export async function fetchYsToken(service: any) { |
| | | const res = await service.base.sys.param.stringbykey({ key: 'ys7.accessToken' }); |
| | | return (res as string) || ''; |
| | | } |
| | | |
| | | export function formatTime(v: any) { |
| | | if (!v) return '-'; |
| | | const d = new Date(v); |
| | | if (Number.isNaN(d.getTime())) return String(v); |
| | | const p = (n: number) => String(n).padStart(2, '0'); |
| | | return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`; |
| | | } |
| | | |
| | | export function dayRange(offsetEnd = 0, offsetStart = 0) { |
| | | const end = new Date(); |
| | | end.setHours(23, 59, 59, 999); |
| | | if (offsetEnd) end.setTime(end.getTime() + offsetEnd); |
| | | const start = new Date(); |
| | | start.setHours(0, 0, 0, 0); |
| | | if (offsetStart) start.setTime(start.getTime() + offsetStart); |
| | | return { start, end }; |
| | | } |
| | | |
| | | export function lastHours(hours = 1) { |
| | | const end = new Date(); |
| | | const start = new Date(end.getTime() - hours * 3600 * 1000); |
| | | return { start, end }; |
| | | } |
| | | |
| | | export function toStamp(v: any) { |
| | | const t = new Date(v).getTime(); |
| | | return Number.isFinite(t) ? t : 0; |
| | | } |
| New file |
| | |
| | | import { onBeforeUnmount, ref, type Ref } from 'vue'; |
| | | import type { LngLat } from 'vue-tianditu2'; |
| | | import { toStamp } from '../hooks/use-map'; |
| | | |
| | | export type TrackPoint = { longitude: number; latitude: number; time?: any; speed?: number }; |
| | | |
| | | export function useTrackPlayback(points: Ref<TrackPoint[]>) { |
| | | const playing = ref(false); |
| | | const speed = ref(5); |
| | | const progress = ref(0); |
| | | const playPos = ref<LngLat | null>(null); |
| | | let raf = 0; |
| | | let startedAt = 0; |
| | | let elapsed = 0; |
| | | |
| | | function path(): LngLat[] { |
| | | return points.value |
| | | .filter(p => Number(p.longitude) && Number(p.latitude)) |
| | | .map(p => [Number(p.longitude), Number(p.latitude)] as LngLat); |
| | | } |
| | | |
| | | function duration() { |
| | | const list = points.value; |
| | | if (list.length < 2) return 8000; |
| | | const t0 = toStamp(list[0].time); |
| | | const t1 = toStamp(list[list.length - 1].time); |
| | | const real = t1 > t0 ? t1 - t0 : list.length * 2000; |
| | | return Math.max(real, 4000); |
| | | } |
| | | |
| | | function at(ratio: number): LngLat | null { |
| | | const list = path(); |
| | | if (!list.length) return null; |
| | | if (list.length === 1) return list[0]; |
| | | const times = points.value.map((p, i) => toStamp(p.time) || i * 1000); |
| | | const t0 = times[0]; |
| | | const t1 = times[times.length - 1]; |
| | | const span = Math.max(t1 - t0, 1); |
| | | const target = t0 + span * ratio; |
| | | let i = 0; |
| | | while (i < times.length - 1 && times[i + 1] < target) i += 1; |
| | | const a = list[i]; |
| | | const b = list[Math.min(i + 1, list.length - 1)]; |
| | | const seg = Math.max(times[Math.min(i + 1, times.length - 1)] - times[i], 1); |
| | | const k = Math.min(Math.max((target - times[i]) / seg, 0), 1); |
| | | return [a[0] + (b[0] - a[0]) * k, a[1] + (b[1] - a[1]) * k]; |
| | | } |
| | | |
| | | function tick(now: number) { |
| | | if (!playing.value) return; |
| | | const total = duration() / Math.max(speed.value, 1); |
| | | elapsed += now - startedAt; |
| | | startedAt = now; |
| | | const ratio = Math.min(elapsed / total, 1); |
| | | progress.value = Math.round(ratio * 100); |
| | | playPos.value = at(ratio); |
| | | if (ratio >= 1) { |
| | | playing.value = false; |
| | | return; |
| | | } |
| | | raf = requestAnimationFrame(tick); |
| | | } |
| | | |
| | | function play() { |
| | | if (!points.value.length) return; |
| | | if (progress.value >= 100) { |
| | | progress.value = 0; |
| | | elapsed = 0; |
| | | } |
| | | playing.value = true; |
| | | startedAt = performance.now(); |
| | | raf = requestAnimationFrame(tick); |
| | | } |
| | | |
| | | function pause() { |
| | | playing.value = false; |
| | | cancelAnimationFrame(raf); |
| | | } |
| | | |
| | | function stop() { |
| | | pause(); |
| | | elapsed = 0; |
| | | progress.value = 0; |
| | | playPos.value = points.value.length |
| | | ? [Number(points.value[0].longitude), Number(points.value[0].latitude)] |
| | | : null; |
| | | } |
| | | |
| | | function reset() { |
| | | stop(); |
| | | playPos.value = null; |
| | | } |
| | | |
| | | onBeforeUnmount(pause); |
| | | |
| | | return { playing, speed, progress, playPos, path, play, pause, stop, reset }; |
| | | } |
| New file |
| | |
| | | <template> |
| | | <map-board :open="!!current" :title="current?.businessName" :sub="current?.siteType" @close="current = null"> |
| | | <template #side-head> |
| | | <el-input v-model="keyword" placeholder="搜索站点" clearable size="small" /> |
| | | <div class="filters"> |
| | | <el-checkbox-group v-model="types" size="small"> |
| | | <el-checkbox value="收集点" label="收集点">收集点</el-checkbox> |
| | | <el-checkbox value="压缩站" label="压缩站">压缩站</el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </template> |
| | | <template #side> |
| | | <div |
| | | v-for="item in visibleSites" |
| | | :key="item.id" |
| | | class="list-item" |
| | | :class="{ 'is-active': current?.id === item.id }" |
| | | @click="select(item)" |
| | | > |
| | | <i :style="{ background: item.siteType === '压缩站' ? '#f59e0b' : '#16a34a' }" /> |
| | | <div> |
| | | <div class="list-item__name">{{ item.businessName }}</div> |
| | | <div class="list-item__meta">{{ item.siteType }} · {{ item.address || '无地址' }}</div> |
| | | </div> |
| | | </div> |
| | | <el-empty v-if="!visibleSites.length" description="暂无站点" :image-size="64" /> |
| | | </template> |
| | | <template #legend> |
| | | <div class="legend"><i style="background:#16a34a" />收集点</div> |
| | | <div class="legend"><i style="background:#f59e0b" />压缩站</div> |
| | | </template> |
| | | <template #map> |
| | | <div class="mapDiv"> |
| | | <tdt-map :center="center" :zoom="zoom" :controls="controls" :loadConfig="MAP_LOAD"> |
| | | <tdt-marker |
| | | v-for="item in visibleSites" |
| | | :key="item.id" |
| | | :position="pos(item)" |
| | | :icon="siteIcon(item.siteType)" |
| | | :title="item.businessName" |
| | | @click="select(item)" |
| | | /> |
| | | </tdt-map> |
| | | </div> |
| | | </template> |
| | | <template #panel> |
| | | <el-tabs v-model="tab"> |
| | | <el-tab-pane label="基本属性" name="info"> |
| | | <el-descriptions :column="1" border size="small"> |
| | | <el-descriptions-item label="站点编码">{{ current?.businessId }}</el-descriptions-item> |
| | | <el-descriptions-item label="名称">{{ current?.businessName }}</el-descriptions-item> |
| | | <el-descriptions-item label="类型">{{ current?.siteType }}</el-descriptions-item> |
| | | <el-descriptions-item label="地址">{{ current?.address || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="负责人">{{ current?.leader || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="经纬度">{{ current?.longitude }}, {{ current?.latitude }}</el-descriptions-item> |
| | | <el-descriptions-item label="备注">{{ current?.remark || '-' }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | <cl-image v-if="current?.photo" :src="current.photo" style="margin-top: 10px; width: 100%" /> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="实时监控" name="live"> |
| | | <el-empty v-if="!cameras.length" description="该站点没有关联监控" :image-size="72" /> |
| | | <div v-for="dev in cameras" :key="dev.id" class="cam"> |
| | | <div class="cam__name">{{ dev.iotName || dev.iotCode }}</div> |
| | | <ezuikit-player |
| | | v-if="ysToken" |
| | | :key="'p_' + dev.id + '_' + ysToken" |
| | | :container-id="'site_player_' + dev.id" |
| | | :access-token="ysToken" |
| | | :url="`ezopen://open.ys7.com/${dev.iotCode}/1.hd.live`" |
| | | /> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="称重历史" name="weight"> |
| | | <div class="weight-tools"> |
| | | <span>默认当天</span> |
| | | <el-popover v-model:visible="weightOpen" placement="bottom-end" :width="340" trigger="click"> |
| | | <template #reference> |
| | | <el-button :icon="Setting" circle size="small" /> |
| | | </template> |
| | | <div class="weight-form"> |
| | | <el-date-picker |
| | | v-model="weightRange" |
| | | type="datetimerange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | size="small" |
| | | /> |
| | | <div class="weight-form__actions"> |
| | | <el-button size="small" @click="weightOpen = false">取消</el-button> |
| | | <el-button type="primary" size="small" @click="queryWeight()">查询</el-button> |
| | | </div> |
| | | </div> |
| | | </el-popover> |
| | | </div> |
| | | <el-table :data="weights" size="small" height="360" stripe> |
| | | <el-table-column prop="uploadTime" label="时间" min-width="150"> |
| | | <template #default="{ row }">{{ formatTime(row.uploadTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="garbageName" label="种类" min-width="90"> |
| | | <template #default="{ row }">{{ row.garbageName || row.garbageType }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="weight" label="重量kg" width="80" /> |
| | | <el-table-column prop="deviceNo" label="设备" min-width="90" /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </template> |
| | | </map-board> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | defineOptions({ name: 'maps-layers' }); |
| | | |
| | | import { computed, onMounted, ref } from 'vue'; |
| | | import { Setting } from '@element-plus/icons-vue'; |
| | | import { TdtMap, TdtMarker, type LngLat } from 'vue-tianditu2'; |
| | | import { useCool } from '/@/cool'; |
| | | import EzuikitPlayer from '../../ezuikit/components/ezuikit-player.vue'; |
| | | import MapBoard from '../components/map-board.vue'; |
| | | import { |
| | | DEFAULT_CENTER, |
| | | MAP_LOAD, |
| | | siteIcon, |
| | | fetchYsToken, |
| | | formatTime, |
| | | useMapsApi |
| | | } from '../hooks/use-map'; |
| | | |
| | | const { service } = useCool(); |
| | | const api = useMapsApi(); |
| | | |
| | | const sites = ref<any[]>([]); |
| | | const keyword = ref(''); |
| | | const types = ref(['收集点', '压缩站']); |
| | | const current = ref<any>(null); |
| | | const center = ref<LngLat>(DEFAULT_CENTER); |
| | | const zoom = ref(12); |
| | | const tab = ref('info'); |
| | | const cameras = ref<any[]>([]); |
| | | const ysToken = ref(''); |
| | | const weights = ref<any[]>([]); |
| | | const weightOpen = ref(false); |
| | | const weightRange = ref<[string, string] | null>(null); |
| | | |
| | | const controls = ['Zoom', 'Scale', { name: 'MapType', position: 'topright' }]; |
| | | |
| | | const visibleSites = computed(() => |
| | | sites.value.filter(e => { |
| | | if (!types.value.includes(e.siteType)) return false; |
| | | if (!keyword.value) return true; |
| | | const k = keyword.value.toLowerCase(); |
| | | return [e.businessName, e.businessId, e.address].some(v => String(v || '').toLowerCase().includes(k)); |
| | | }) |
| | | ); |
| | | |
| | | function pos(item: any): LngLat { |
| | | return [Number(item.longitude), Number(item.latitude)]; |
| | | } |
| | | |
| | | function todayRange() { |
| | | const d = new Date(); |
| | | const p = (n: number) => String(n).padStart(2, '0'); |
| | | const day = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`; |
| | | return [`${day} 00:00:00`, `${day} 23:59:59`] as [string, string]; |
| | | } |
| | | |
| | | async function select(item: any) { |
| | | current.value = item; |
| | | center.value = pos(item); |
| | | zoom.value = 16; |
| | | tab.value = 'info'; |
| | | cameras.value = []; |
| | | weights.value = []; |
| | | weightRange.value = todayRange(); |
| | | if (!ysToken.value) { |
| | | try { |
| | | ysToken.value = await fetchYsToken(service); |
| | | } catch {} |
| | | } |
| | | try { |
| | | cameras.value = (await service.basicdata.iot.getYsDevices({ businessId: item.businessId })) || []; |
| | | } catch { |
| | | cameras.value = []; |
| | | } |
| | | await queryWeight(); |
| | | } |
| | | |
| | | async function queryWeight() { |
| | | if (!current.value) return; |
| | | weightOpen.value = false; |
| | | const range = weightRange.value || todayRange(); |
| | | weights.value = (await api.siteWeight({ |
| | | businessId: current.value.businessId, |
| | | startTime: range[0], |
| | | endTime: range[1] |
| | | })) || []; |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | sites.value = (await api.sites()) || []; |
| | | const first = visibleSites.value[0]; |
| | | if (first) { |
| | | center.value = pos(first); |
| | | zoom.value = 13; |
| | | } |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .filters { |
| | | margin-top: 8px; |
| | | } |
| | | |
| | | .list-item { |
| | | display: flex; |
| | | gap: 8px; |
| | | padding: 10px 12px; |
| | | cursor: pointer; |
| | | border-bottom: 1px solid var(--el-border-color-extra-light); |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | margin-top: 6px; |
| | | border-radius: 50%; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &:hover, |
| | | &.is-active { |
| | | background: var(--el-color-primary-light-9); |
| | | } |
| | | |
| | | &__name { |
| | | font-size: 13px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | &__meta { |
| | | margin-top: 2px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | } |
| | | |
| | | .legend { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | margin: 2px 0; |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | } |
| | | } |
| | | |
| | | .cam { |
| | | margin-bottom: 12px; |
| | | |
| | | &__name { |
| | | margin-bottom: 6px; |
| | | font-size: 13px; |
| | | color: var(--el-text-color-regular); |
| | | } |
| | | } |
| | | |
| | | .weight-tools { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin: 8px 0; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | |
| | | .weight-form { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 8px; |
| | | |
| | | &__actions { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | gap: 8px; |
| | | } |
| | | } |
| | | |
| | | .mapDiv { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <map-board :open="!!current" :title="current?.name" :sub="current?.idCard" @close="close"> |
| | | <template #side-head> |
| | | <el-input v-model="keyword" placeholder="搜索分拣员" clearable size="small" /> |
| | | <div class="hint">最近 15 分钟有 GPS 视为在线 · {{ list.length }} 人</div> |
| | | </template> |
| | | <template #side> |
| | | <div |
| | | v-for="item in visibleList" |
| | | :key="item.idCard" |
| | | class="list-item" |
| | | :class="{ 'is-active': current?.idCard === item.idCard }" |
| | | @click="select(item)" |
| | | > |
| | | <i /> |
| | | <div> |
| | | <div class="list-item__name">{{ item.name || item.idCard }}</div> |
| | | <div class="list-item__meta">{{ formatTime(item.uploadTime) }} · {{ item.speed || 0 }} km/h</div> |
| | | </div> |
| | | </div> |
| | | <el-empty v-if="!visibleList.length" description="当前没有在线分拣员" :image-size="64" /> |
| | | </template> |
| | | <template #legend> |
| | | <div class="legend"><i style="background:#2563eb" />在线分拣员</div> |
| | | <div class="legend"><i style="background:#ef4444" />轨迹回放</div> |
| | | </template> |
| | | <template #map> |
| | | <div class="mapDiv"> |
| | | <tdt-map :center="center" :zoom="zoom" :controls="controls" :loadConfig="MAP_LOAD"> |
| | | <tdt-marker |
| | | v-for="item in visibleList" |
| | | :key="item.idCard" |
| | | :position="pos(item)" |
| | | :icon="SORTER_ICON" |
| | | :title="item.name" |
| | | @click="select(item)" |
| | | /> |
| | | <tdt-polyline v-if="trackPath.length" :path="trackPath" color="#16a34a" :weight="4" :opacity="0.85" /> |
| | | <tdt-marker v-if="playPos" :position="playPos" :icon="PLAY_ICON" title="回放位置" /> |
| | | </tdt-map> |
| | | </div> |
| | | </template> |
| | | <template #panel> |
| | | <el-tabs v-model="tab"> |
| | | <el-tab-pane label="基本信息" name="info"> |
| | | <el-descriptions :column="1" border size="small"> |
| | | <el-descriptions-item label="姓名">{{ current?.name }}</el-descriptions-item> |
| | | <el-descriptions-item label="身份证">{{ current?.idCard }}</el-descriptions-item> |
| | | <el-descriptions-item label="手机">{{ current?.phone || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="工作站点">{{ current?.workSiteId || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="当前速度">{{ current?.speed || 0 }} km/h</el-descriptions-item> |
| | | <el-descriptions-item label="定位时间">{{ formatTime(current?.uploadTime) }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="健康上报" name="health"> |
| | | <el-table :data="health.recent" size="small" height="220" stripe> |
| | | <el-table-column label="时间" min-width="140"> |
| | | <template #default="{ row }">{{ formatTime(row.uploadTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="temperature" label="体温" width="64" /> |
| | | <el-table-column prop="heartRate" label="心率" width="64" /> |
| | | <el-table-column label="血压" width="80"> |
| | | <template #default="{ row }">{{ row.bloodPressureHigh || '-' }}/{{ row.bloodPressureLow || '-' }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="bloodOxygen" label="血氧" width="64" /> |
| | | <el-table-column prop="dataType" label="类型" width="64" /> |
| | | </el-table> |
| | | <div class="block-title">异常上报</div> |
| | | <el-table :data="health.abnormal" size="small" height="160" stripe> |
| | | <el-table-column label="时间" min-width="140"> |
| | | <template #default="{ row }">{{ formatTime(row.uploadTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="temperature" label="体温" width="64" /> |
| | | <el-table-column prop="heartRate" label="心率" width="64" /> |
| | | <el-table-column prop="dataType" label="类型" width="64" /> |
| | | </el-table> |
| | | <div class="block-title">健康告警</div> |
| | | <el-table :data="health.alarms" size="small" height="160" stripe> |
| | | <el-table-column label="时间" min-width="140"> |
| | | <template #default="{ row }">{{ formatTime(row.uploadTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmType" label="类型" min-width="80" /> |
| | | <el-table-column prop="alarmLevel" label="级别" width="70" /> |
| | | <el-table-column prop="content" label="内容" min-width="120" show-overflow-tooltip /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="历史轨迹" name="track"> |
| | | <track-toolbar |
| | | v-model:speed="speed" |
| | | :playing="playing" |
| | | :progress="progress" |
| | | :has-track="trackPoints.length > 1" |
| | | :start-time="trackStart" |
| | | :end-time="trackEnd" |
| | | @play="play" |
| | | @pause="pause" |
| | | @stop="stop" |
| | | @query="onQueryTrack" |
| | | /> |
| | | <div class="hint">默认最近 1 小时,回放默认 5 倍速</div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </template> |
| | | </map-board> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | defineOptions({ name: 'maps-sorter' }); |
| | | |
| | | import { computed, onBeforeUnmount, onMounted, ref } from 'vue'; |
| | | import { TdtMap, TdtMarker, TdtPolyline, type LngLat } from 'vue-tianditu2'; |
| | | import MapBoard from '../components/map-board.vue'; |
| | | import TrackToolbar from '../components/track-toolbar.vue'; |
| | | import { DEFAULT_CENTER, MAP_LOAD, PLAY_ICON, SORTER_ICON, formatTime, lastHours, useMapsApi } from '../hooks/use-map'; |
| | | import { useTrackPlayback, type TrackPoint } from '../hooks/use-track'; |
| | | |
| | | const api = useMapsApi(); |
| | | const list = ref<any[]>([]); |
| | | const keyword = ref(''); |
| | | const current = ref<any>(null); |
| | | const center = ref<LngLat>(DEFAULT_CENTER); |
| | | const zoom = ref(12); |
| | | const tab = ref('info'); |
| | | const health = ref<{ recent: any[]; abnormal: any[]; alarms: any[] }>({ recent: [], abnormal: [], alarms: [] }); |
| | | const trackPoints = ref<TrackPoint[]>([]); |
| | | const trackStart = ref(''); |
| | | const trackEnd = ref(''); |
| | | const { playing, speed, progress, playPos, path, play, pause, stop, reset } = useTrackPlayback(trackPoints); |
| | | const trackPath = computed(() => path()); |
| | | const controls = ['Zoom', 'Scale', { name: 'MapType', position: 'topright' }]; |
| | | let timer: number; |
| | | |
| | | const visibleList = computed(() => { |
| | | if (!keyword.value) return list.value; |
| | | const k = keyword.value.toLowerCase(); |
| | | return list.value.filter(e => [e.name, e.idCard, e.phone].some(v => String(v || '').toLowerCase().includes(k))); |
| | | }); |
| | | |
| | | function pos(item: any): LngLat { |
| | | return [Number(item.longitude), Number(item.latitude)]; |
| | | } |
| | | |
| | | function fmt(d: Date) { |
| | | const p = (n: number) => String(n).padStart(2, '0'); |
| | | return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`; |
| | | } |
| | | |
| | | async function loadOnline() { |
| | | list.value = (await api.sorterOnline()) || []; |
| | | if (!current.value && list.value[0]) { |
| | | center.value = pos(list.value[0]); |
| | | zoom.value = 13; |
| | | } |
| | | } |
| | | |
| | | async function select(item: any) { |
| | | current.value = item; |
| | | center.value = pos(item); |
| | | zoom.value = 16; |
| | | tab.value = 'info'; |
| | | reset(); |
| | | const { start, end } = lastHours(1); |
| | | trackStart.value = fmt(start); |
| | | trackEnd.value = fmt(end); |
| | | const [h, track] = await Promise.all([ |
| | | api.sorterHealth(item.idCard), |
| | | api.sorterTrack({ idCard: item.idCard, startTime: trackStart.value, endTime: trackEnd.value }) |
| | | ]); |
| | | health.value = h || { recent: [], abnormal: [], alarms: [] }; |
| | | trackPoints.value = track || []; |
| | | if (trackPoints.value.length) { |
| | | playPos.value = pos(trackPoints.value[0] as any); |
| | | } |
| | | } |
| | | |
| | | async function onQueryTrack(range: [string, string]) { |
| | | if (!current.value) return; |
| | | trackStart.value = range[0]; |
| | | trackEnd.value = range[1]; |
| | | reset(); |
| | | trackPoints.value = (await api.sorterTrack({ |
| | | idCard: current.value.idCard, |
| | | startTime: range[0], |
| | | endTime: range[1] |
| | | })) || []; |
| | | } |
| | | |
| | | function close() { |
| | | current.value = null; |
| | | reset(); |
| | | trackPoints.value = []; |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | await loadOnline(); |
| | | timer = window.setInterval(loadOnline, 30000); |
| | | }); |
| | | |
| | | onBeforeUnmount(() => clearInterval(timer)); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .hint { |
| | | margin-top: 8px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | line-height: 1.4; |
| | | } |
| | | |
| | | .list-item { |
| | | display: flex; |
| | | gap: 8px; |
| | | padding: 10px 12px; |
| | | cursor: pointer; |
| | | border-bottom: 1px solid var(--el-border-color-extra-light); |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | margin-top: 6px; |
| | | border-radius: 50%; |
| | | background: #22c55e; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &:hover, |
| | | &.is-active { |
| | | background: var(--el-color-primary-light-9); |
| | | } |
| | | |
| | | &__name { |
| | | font-size: 13px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | &__meta { |
| | | margin-top: 2px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | } |
| | | |
| | | .legend { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | margin: 2px 0; |
| | | font-size: 12px; |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | } |
| | | } |
| | | |
| | | .block-title { |
| | | margin: 12px 0 6px; |
| | | font-size: 13px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .mapDiv { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <map-board :open="!!current" :title="current?.vehicleNo" :sub="current?.vehicleType" @close="close"> |
| | | <template #side-head> |
| | | <el-input v-model="keyword" placeholder="搜索车牌" clearable size="small" /> |
| | | <div class="hint">最近 15 分钟有 GPS 视为在线 · {{ list.length }} 辆</div> |
| | | </template> |
| | | <template #side> |
| | | <div |
| | | v-for="item in visibleList" |
| | | :key="item.vehicleNo" |
| | | class="list-item" |
| | | :class="{ 'is-active': current?.vehicleNo === item.vehicleNo }" |
| | | @click="select(item)" |
| | | > |
| | | <i /> |
| | | <div> |
| | | <div class="list-item__name">{{ item.vehicleNo }}</div> |
| | | <div class="list-item__meta">{{ formatTime(item.gpsTime) }} · {{ item.speed || 0 }} km/h</div> |
| | | </div> |
| | | </div> |
| | | <el-empty v-if="!visibleList.length" description="当前没有在线车辆" :image-size="64" /> |
| | | </template> |
| | | <template #legend> |
| | | <div class="legend"><i style="background:#7c3aed" />在线车辆</div> |
| | | <div class="legend"><i style="background:#ef4444" />轨迹回放</div> |
| | | </template> |
| | | <template #map> |
| | | <div class="mapDiv"> |
| | | <tdt-map :center="center" :zoom="zoom" :controls="controls" :loadConfig="MAP_LOAD"> |
| | | <tdt-marker |
| | | v-for="item in visibleList" |
| | | :key="item.vehicleNo" |
| | | :position="pos(item)" |
| | | :icon="VEHICLE_ICON" |
| | | :title="item.vehicleNo" |
| | | @click="select(item)" |
| | | /> |
| | | <tdt-polyline v-if="trackPath.length" :path="trackPath" color="#7c3aed" :weight="4" :opacity="0.85" /> |
| | | <tdt-marker v-if="playPos" :position="playPos" :icon="PLAY_ICON" title="回放位置" /> |
| | | </tdt-map> |
| | | </div> |
| | | </template> |
| | | <template #panel> |
| | | <el-tabs v-model="tab"> |
| | | <el-tab-pane label="基本信息" name="info"> |
| | | <el-descriptions :column="1" border size="small"> |
| | | <el-descriptions-item label="车牌">{{ current?.vehicleNo }}</el-descriptions-item> |
| | | <el-descriptions-item label="车型">{{ current?.vehicleType || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="载重">{{ current?.capacityTon || '-' }} 吨</el-descriptions-item> |
| | | <el-descriptions-item label="设备号">{{ current?.sn || '-' }}</el-descriptions-item> |
| | | <el-descriptions-item label="当前速度">{{ current?.speed || 0 }} km/h</el-descriptions-item> |
| | | <el-descriptions-item label="定位时间">{{ formatTime(current?.gpsTime) }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="司机行为" name="event"> |
| | | <el-table :data="events" size="small" height="280" stripe> |
| | | <el-table-column label="时间" min-width="140"> |
| | | <template #default="{ row }">{{ formatTime(row.alarmTime || row.createTime) }}</template> |
| | | </el-table-column> |
| | | <el-table-column prop="alarmType" label="类型" min-width="90" /> |
| | | <el-table-column prop="describe" label="描述" min-width="120" show-overflow-tooltip /> |
| | | <el-table-column prop="deviceName" label="设备" min-width="90" show-overflow-tooltip /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="车载监控" name="live"> |
| | | <el-empty v-if="!cameras.length" description="该车辆没有关联车载摄像头" :image-size="72" /> |
| | | <div v-for="dev in cameras" :key="dev.id" class="cam"> |
| | | <div class="cam__name">{{ dev.iotName || dev.iotCode }}</div> |
| | | <ezuikit-player |
| | | v-if="ysToken" |
| | | :key="'v_' + dev.id + '_' + ysToken" |
| | | :container-id="'vehicle_player_' + dev.id" |
| | | :access-token="ysToken" |
| | | :url="`ezopen://open.ys7.com/${dev.iotCode}/1.hd.live`" |
| | | /> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="历史轨迹" name="track"> |
| | | <track-toolbar |
| | | v-model:speed="speed" |
| | | :playing="playing" |
| | | :progress="progress" |
| | | :has-track="trackPoints.length > 1" |
| | | :start-time="trackStart" |
| | | :end-time="trackEnd" |
| | | @play="play" |
| | | @pause="pause" |
| | | @stop="stop" |
| | | @query="onQueryTrack" |
| | | /> |
| | | <div class="hint">默认最近 1 小时,回放默认 5 倍速</div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </template> |
| | | </map-board> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | defineOptions({ name: 'maps-vehicle' }); |
| | | |
| | | import { computed, onBeforeUnmount, onMounted, ref } from 'vue'; |
| | | import { TdtMap, TdtMarker, TdtPolyline, type LngLat } from 'vue-tianditu2'; |
| | | import { useCool } from '/@/cool'; |
| | | import EzuikitPlayer from '../../ezuikit/components/ezuikit-player.vue'; |
| | | import MapBoard from '../components/map-board.vue'; |
| | | import TrackToolbar from '../components/track-toolbar.vue'; |
| | | import { |
| | | DEFAULT_CENTER, |
| | | MAP_LOAD, |
| | | PLAY_ICON, |
| | | VEHICLE_ICON, |
| | | fetchYsToken, |
| | | formatTime, |
| | | lastHours, |
| | | useMapsApi |
| | | } from '../hooks/use-map'; |
| | | import { useTrackPlayback, type TrackPoint } from '../hooks/use-track'; |
| | | |
| | | const { service } = useCool(); |
| | | const api = useMapsApi(); |
| | | const list = ref<any[]>([]); |
| | | const keyword = ref(''); |
| | | const current = ref<any>(null); |
| | | const center = ref<LngLat>(DEFAULT_CENTER); |
| | | const zoom = ref(12); |
| | | const tab = ref('info'); |
| | | const events = ref<any[]>([]); |
| | | const cameras = ref<any[]>([]); |
| | | const ysToken = ref(''); |
| | | const trackPoints = ref<TrackPoint[]>([]); |
| | | const trackStart = ref(''); |
| | | const trackEnd = ref(''); |
| | | const { playing, speed, progress, playPos, path, play, pause, stop, reset } = useTrackPlayback(trackPoints); |
| | | const trackPath = computed(() => path()); |
| | | const controls = ['Zoom', 'Scale', { name: 'MapType', position: 'topright' }]; |
| | | let timer: number; |
| | | |
| | | const visibleList = computed(() => { |
| | | if (!keyword.value) return list.value; |
| | | const k = keyword.value.toLowerCase(); |
| | | return list.value.filter(e => String(e.vehicleNo || '').toLowerCase().includes(k)); |
| | | }); |
| | | |
| | | function pos(item: any): LngLat { |
| | | return [Number(item.longitude), Number(item.latitude)]; |
| | | } |
| | | |
| | | function fmt(d: Date) { |
| | | const p = (n: number) => String(n).padStart(2, '0'); |
| | | return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`; |
| | | } |
| | | |
| | | async function loadOnline() { |
| | | list.value = (await api.vehicleOnline()) || []; |
| | | if (!current.value && list.value[0]) { |
| | | center.value = pos(list.value[0]); |
| | | zoom.value = 13; |
| | | } |
| | | } |
| | | |
| | | async function select(item: any) { |
| | | current.value = item; |
| | | center.value = pos(item); |
| | | zoom.value = 16; |
| | | tab.value = 'info'; |
| | | reset(); |
| | | cameras.value = []; |
| | | events.value = []; |
| | | const { start, end } = lastHours(1); |
| | | trackStart.value = fmt(start); |
| | | trackEnd.value = fmt(end); |
| | | if (!ysToken.value) { |
| | | try { |
| | | ysToken.value = await fetchYsToken(service); |
| | | } catch {} |
| | | } |
| | | const [ev, cam, track] = await Promise.all([ |
| | | api.vehicleEvents(item.vehicleNo), |
| | | service.basicdata.iot.getYsDevices({ businessId: item.vehicleNo }).catch(() => []), |
| | | api.vehicleTrack({ vehicleNo: item.vehicleNo, startTime: trackStart.value, endTime: trackEnd.value }) |
| | | ]); |
| | | events.value = ev || []; |
| | | cameras.value = cam || []; |
| | | trackPoints.value = track || []; |
| | | if (trackPoints.value.length) { |
| | | playPos.value = [Number(trackPoints.value[0].longitude), Number(trackPoints.value[0].latitude)]; |
| | | } |
| | | } |
| | | |
| | | async function onQueryTrack(range: [string, string]) { |
| | | if (!current.value) return; |
| | | trackStart.value = range[0]; |
| | | trackEnd.value = range[1]; |
| | | reset(); |
| | | trackPoints.value = (await api.vehicleTrack({ |
| | | vehicleNo: current.value.vehicleNo, |
| | | startTime: range[0], |
| | | endTime: range[1] |
| | | })) || []; |
| | | } |
| | | |
| | | function close() { |
| | | current.value = null; |
| | | reset(); |
| | | trackPoints.value = []; |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | await loadOnline(); |
| | | timer = window.setInterval(loadOnline, 30000); |
| | | }); |
| | | |
| | | onBeforeUnmount(() => clearInterval(timer)); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .hint { |
| | | margin-top: 8px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | line-height: 1.4; |
| | | } |
| | | |
| | | .list-item { |
| | | display: flex; |
| | | gap: 8px; |
| | | padding: 10px 12px; |
| | | cursor: pointer; |
| | | border-bottom: 1px solid var(--el-border-color-extra-light); |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | margin-top: 6px; |
| | | border-radius: 50%; |
| | | background: #7c3aed; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | &:hover, |
| | | &.is-active { |
| | | background: var(--el-color-primary-light-9); |
| | | } |
| | | |
| | | &__name { |
| | | font-size: 13px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | &__meta { |
| | | margin-top: 2px; |
| | | font-size: 12px; |
| | | color: var(--el-text-color-secondary); |
| | | } |
| | | } |
| | | |
| | | .legend { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 6px; |
| | | margin: 2px 0; |
| | | font-size: 12px; |
| | | |
| | | i { |
| | | width: 8px; |
| | | height: 8px; |
| | | border-radius: 50%; |
| | | } |
| | | } |
| | | |
| | | .cam { |
| | | margin-bottom: 12px; |
| | | |
| | | &__name { |
| | | margin-bottom: 6px; |
| | | font-size: 13px; |
| | | color: var(--el-text-color-regular); |
| | | } |
| | | } |
| | | |
| | | .mapDiv { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |