279 Commits

Author SHA1 Message Date
xiaoyu 2ff6be6a61 线索新增品牌归属 2023-08-14 17:58:56 +08:00
xiaoyu ef857babd2 待跟进增加筛选 2023-08-09 14:16:35 +08:00
老叶 70f2218f22 添加C级日历 2023-06-19 15:40:49 +08:00
老叶 89dd5b800b 数据二级 2023-06-14 15:33:32 +08:00
老叶 9dd8f5e358 统计二级数据 2023-06-14 11:36:47 +08:00
老叶 e989f664a5 按揭返点 2023-06-13 17:06:00 +08:00
老叶 3c43344c7b 直营店返点 2023-06-12 11:35:54 +08:00
老叶 9f23becd48 复制 2023-06-09 14:19:56 +08:00
老叶 66ff4f7c73 复制手机号 2023-06-09 11:43:35 +08:00
老叶 42d23dbccd 保险返点 2023-06-08 17:22:50 +08:00
老叶 a526a46a16 正式环境 2023-06-02 14:22:25 +08:00
老叶 abf0adfcf6 glider添加一个 2023-06-02 14:21:32 +08:00
yerz123 8fc072d52a 服务费 2023-05-23 19:47:22 +08:00
yerz123 ce6ac9238c 服务费 2023-05-23 12:15:22 +08:00
老叶 7d2d85ba97 服务费 2023-05-23 10:57:29 +08:00
老叶 419726a2e8 group_id 2023-05-19 17:39:45 +08:00
老叶 ad6c7389c8 切换角色 2023-05-19 15:44:23 +08:00
老叶 251e2eafdb 按揭付款 2023-05-17 11:35:59 +08:00
老叶 d51c29cb70 按揭分期 2023-05-17 10:42:03 +08:00
老叶 bad5de9426 零首付按揭 2023-05-16 17:40:17 +08:00
老叶 0d6b345477 首付按揭去掉贴息 2023-05-16 16:24:21 +08:00
老叶 d822c959cb 零首付按揭 2023-05-16 15:05:37 +08:00
老叶 8fc6e4cec6 首付按揭 2023-05-16 15:00:58 +08:00
老叶 d66d7a5bb8 零首付 2023-05-16 11:15:33 +08:00
老叶 65bd9e2b55 分期改为按揭 2023-05-15 14:13:39 +08:00
老叶 2a4596f249 编辑订单详情去掉编辑权限限制userInfo.uid==1||info.car_id!=33 2023-05-15 10:57:54 +08:00
老叶 5020402f10 修改购车人信息 2023-04-07 15:26:24 +08:00
老叶 0c259d0119 店长,掌柜,渠道经理开发创建订单权限 2023-03-30 15:44:45 +08:00
老叶 ddc84a9551 0首付-编辑 2023-03-28 15:34:18 +08:00
老叶 4372744ca2 添加0首付 2023-03-28 15:12:32 +08:00
老叶 cf8ea16dc2 选装 2023-03-24 16:53:23 +08:00
老叶 838b468418 编辑-车辆选装包 2023-03-23 16:49:44 +08:00
老叶 9a5a0d056f 订单登记-车辆选装包 2023-03-23 15:04:01 +08:00
老叶 5b54793690 电话 MSG 2023-03-21 11:40:36 +08:00
老叶 9a996d1fd2 拨打电话 2023-03-21 10:02:16 +08:00
老叶 6dcdcd9e05 个微截图 2023-03-20 12:03:06 +08:00
老叶 4774dd42b4 去掉上牌保险必选 2023-03-16 15:27:55 +08:00
老叶 59d4f0fd9f 意向标签 2023-03-13 16:38:29 +08:00
yerz123 062235ba68 战败 2023-03-12 13:56:08 +08:00
老叶 aa23608aa5 是否贴息 2023-03-08 14:13:24 +08:00
老叶 89c27cb9e0 城市筛查 2023-03-07 11:07:16 +08:00
老叶 289a764026 订单(复购)不判断权限 2023-03-02 17:06:45 +08:00
老叶 4810f052cf 生成订单 2023-03-02 15:43:33 +08:00
老叶 c94a19d968 添加个微 2023-03-01 09:51:29 +08:00
老叶 dce2233be8 标题添加个人微信 2023-02-24 15:32:09 +08:00
老叶 b260e7f18e 客户手机号隐藏,车主地址修改 2023-02-23 17:04:48 +08:00
老叶 85ed33ba8c 车主地址 2023-02-23 12:00:41 +08:00
老叶 43f60e87b6 车主地址修改 2023-02-23 11:05:16 +08:00
老叶 0ed812ff7d 添加导航 2023-02-14 14:11:04 +08:00
老叶 8ec245f457 统计修改 2023-02-13 16:53:08 +08:00
老叶 db88dd4141 统计 2023-02-13 16:15:33 +08:00
老叶 00f5190c5f 统计样式修改 2023-02-13 16:09:22 +08:00
老叶 0a638cd516 统计修改 2023-02-13 14:53:55 +08:00
老叶 916700c3d7 客户列表添加画像筛查,渠道经理统计数据调整 2023-02-13 14:03:12 +08:00
老叶 5389cbe802 隐藏私域通 2023-02-08 16:59:34 +08:00
老叶 547a0d7a1d 添加战败理由标签 2023-02-08 15:56:24 +08:00
老叶 9b6fc9d972 保险修改-添加意外险 2023-02-08 09:51:12 +08:00
老叶 5dfd7ffc30 首页页面加载中 2023-01-28 11:44:29 +08:00
老叶 509bd02299 企微图 2022-12-20 17:50:14 +08:00
老叶 71267c64e3 上传失败提示 2022-12-20 17:33:07 +08:00
老叶 bec388ab40 画布改大备份 2022-12-20 17:23:06 +08:00
yerz123 6c724ac21d car_id!=33 2022-11-26 21:13:50 +08:00
yerz123 7bf43deb33 car_id 2022-11-26 15:10:22 +08:00
yerz123 6f80b130c8 s_id==33 2022-11-26 15:06:19 +08:00
老叶 63910b257b 正式环境 2022-11-23 09:49:15 +08:00
老叶 706c7f00fc 客户是否已存在 2022-11-22 17:59:52 +08:00
yerz123 6b7388719b 正式 2022-11-15 21:56:53 +08:00
老叶 4cca0525fc 列表添加车辆品牌车系车型车辆版本 2022-11-15 17:58:58 +08:00
老叶 380dadbfa5 按揭图片展示 2022-11-15 17:21:27 +08:00
老叶 5c250d53de 按揭通知函多图 2022-11-15 17:02:12 +08:00
老叶 41dd758bff 上传图片修改 2022-11-15 15:21:44 +08:00
老叶 b4c1100a13 实名认证资料 2022-11-03 14:23:56 +08:00
老叶 10c680eff9 实名认证资料 2022-11-03 14:22:08 +08:00
老叶 17876858d4 实销凭证 2022-11-01 14:46:04 +08:00
老叶 a8e68bff32 订单详情添加企微信息 2022-11-01 14:25:12 +08:00
老叶 5730cfea22 正式线 2022-10-17 17:56:30 +08:00
老叶 e75cf13e85 数据看板 2022-10-17 16:23:17 +08:00
老叶 4261b03e82 数据看板修改 2022-10-13 10:37:13 +08:00
老叶 ba06adb6a7 统计数据 2022-10-12 15:47:40 +08:00
老叶 e8e142d51a 订单筛选 2022-09-07 14:02:36 +08:00
老叶 bc0d42c08c 交付订单确定 2022-08-31 10:48:34 +08:00
老叶 63f479d72c 编辑查看大图 2022-08-26 11:08:18 +08:00
老叶 406f0cf7e8 添加交付确认单 2022-08-19 16:17:15 +08:00
老叶 6765776ad9 点击高级搜索不重置 2022-08-17 13:57:22 +08:00
老叶 2d0234e3aa 销售顾问多选 2022-08-17 13:48:42 +08:00
老叶 e3877ab86a 门店数据改成 数据看板 2022-08-16 16:42:42 +08:00
老叶 8c7bd3985e 店铺数据 2022-08-16 14:39:06 +08:00
老叶 3e40bd1d04 店铺数据 2022-08-15 17:38:03 +08:00
老叶 bcdc92bd7d 漏斗数据 2022-08-15 15:34:12 +08:00
老叶 827048f2c4 门店数据修改 2022-08-15 15:28:16 +08:00
老叶 178ab1ea72 带时间到子页面 2022-08-15 14:21:37 +08:00
老叶 706cf3a087 门店数据 2022-08-15 13:57:16 +08:00
老叶 b843c47ff7 门店数据 2022-08-15 13:57:16 +08:00
老叶 93f0cf046a 统计表消息通讯 2022-08-15 13:57:15 +08:00
老叶 3147791b6b 数据统计-静态 2022-08-15 13:57:15 +08:00
老叶 308b9008d1 订单详情,退款所有信息不可编辑 2022-08-12 14:38:21 +08:00
老叶 321be4abac 订单详情-发票-合格证展示 2022-08-12 10:46:16 +08:00
老叶 7e8892cfbf iconfont 2022-08-11 17:40:05 +08:00
老叶 ead124d8a4 合格证,发票展示修改 2022-08-11 17:29:44 +08:00
老叶 fdaa89d42a 订单手机号,身份证去除空格 2022-08-09 15:39:10 +08:00
老叶 f2d5e79464 订单详情样式修改 2022-08-05 11:59:49 +08:00
老叶 6e412b88b7 保单入口判断 2022-08-05 10:19:10 +08:00
老叶 67bf2bbbbe 订单详情 - 保单上传 2022-08-02 16:41:37 +08:00
老叶 b9cf0be6df 移交 2022-07-28 09:45:09 +08:00
老叶 d5cc6898bd 分配订单 2022-07-27 17:57:50 +08:00
老叶 5ca9c9b9a7 离职管理 2022-07-27 15:23:17 +08:00
老叶 a43c6a6a4c 企业微信客服样式 2022-07-21 17:28:18 +08:00
老叶 6f713ffcf3 企微客服替换 2022-07-21 10:38:19 +08:00
老叶 83023a5b50 分配,回访可以选当天 2022-07-20 15:12:39 +08:00
老叶 6a20f801d5 隐藏转介绍 2022-07-11 10:07:30 +08:00
老叶 5157016eac 企业下单客户身份证 2022-07-07 16:00:10 +08:00
老叶 7a3673efd9 他店改派样式 2022-07-05 15:31:11 +08:00
老叶 dbf02638ed 客户分配,选择城市地区 2022-07-04 11:34:34 +08:00
老叶 978d67eac1 uid==1才可以编辑车主信息 2022-07-01 11:32:44 +08:00
老叶 3c62dab9d0 线索来源是否显示 2022-06-30 16:05:12 +08:00
老叶 d97c06a053 精品选装&用户画像 2022-06-27 15:29:02 +08:00
老叶 e2fe0296ad 精品选装&用户画像 2022-06-27 10:10:13 +08:00
老叶 890ab93010 Update index.js 2022-06-20 16:39:59 +08:00
老叶 7434edda76 新增了小记评论功能 2022-06-20 16:39:07 +08:00
老叶 8fb56e6aab 小记评论静态 2022-06-17 11:37:29 +08:00
老叶 5d9a46d12a 分配加回访时间 2022-06-10 14:29:56 +08:00
老叶 22d52a2da7 识别身份证 2022-06-07 16:32:28 +08:00
老叶 f45fc5893f 添加身份证识别 2022-06-07 15:59:51 +08:00
老叶 c843abb7bf 去掉分期必填 2022-06-06 16:05:26 +08:00
老叶 0207310823 门店首页判断是否重置才能走其他接口 2022-06-06 14:15:35 +08:00
老叶 a81e615f48 回访待跟进tab 2022-06-02 11:47:54 +08:00
老叶 c3a40e5bf5 配当前年月日 2022-06-01 09:42:48 +08:00
老叶 a6aa7063e8 日历修改 2022-06-01 09:31:32 +08:00
老叶 533c448dcd 修改判断顾问,去掉版本提示 2022-05-30 10:01:03 +08:00
老叶 4bd9d11c32 客户切换TAB不重置 2022-05-26 17:28:02 +08:00
老叶 5dab9c70f4 客户统计修改 2022-05-26 17:09:07 +08:00
老叶 c04dda7a17 客户统计,订单筛选等调整 2022-05-26 09:22:52 +08:00
老叶 d39b9213bb 客户统计 2022-05-24 15:20:04 +08:00
老叶 16bdc15eee 客户等级统计 2022-05-24 14:50:50 +08:00
老叶 dc4596bdc7 狸车宝客户跟进进度调整 2022-05-23 13:53:11 +08:00
老叶 95bfc1f075 小记修改 2022-05-20 18:01:11 +08:00
老叶 d85b9863a6 去掉版本提示 2022-05-12 11:58:45 +08:00
老叶 4508ebe87a 编辑资料预计购车时间去掉 2022-05-10 10:51:02 +08:00
老叶 217394e525 代办不重置 2022-05-09 16:32:13 +08:00
老叶 0d853d4cd1 登录页添加注册协议 2022-05-05 16:30:45 +08:00
老叶 59e71cfce6 轮播内容太多不显示轮播点 2022-05-05 15:50:47 +08:00
老叶 fcfb911273 需开具本地发票 2022-04-29 18:01:28 +08:00
老叶 2ae74d0aa5 去掉判断自己订单 2022-04-28 11:01:58 +08:00
老叶 e7640860b4 Update index.wxml 2022-04-27 18:00:53 +08:00
老叶 a644f0802d 订单未支付 2022-04-27 17:52:03 +08:00
老叶 ff375b0d8f 客户详情 2022-04-27 16:25:27 +08:00
老叶 df18d36223 订单客户不改状态 2022-04-26 17:49:13 +08:00
老叶 3d3530f074 订单客户不能改状态 2022-04-26 17:19:01 +08:00
老叶 f0e621e056 客户详情修改 2022-04-26 17:05:29 +08:00
老叶 80bb5427f9 修改特别约定权限 2022-04-22 11:35:22 +08:00
老叶 548d47a8f4 客户详情修改 2022-04-22 10:22:29 +08:00
老叶 f7b5d039f0 特别约定样式修改 2022-04-22 09:18:28 +08:00
老叶 51e8f70480 特别约定 2022-04-21 18:06:03 +08:00
老叶 569a32d5ae 填写补充说明 2022-04-21 17:43:07 +08:00
老叶 939ae79a42 添加双方约定 2022-04-21 16:21:30 +08:00
老叶 578632742e 隐藏我的资产入口 2022-04-21 11:07:18 +08:00
老叶 394614b3c0 版本说明 2022-04-21 10:44:44 +08:00
老叶 3d3d756585 编辑不默认省份 2022-04-21 10:41:00 +08:00
老叶 0c2963deb3 省市居中 2022-04-21 10:25:19 +08:00
老叶 3db27c3444 客户详情置顶功能,更新说明 2022-04-21 10:20:43 +08:00
老叶 74d89cb630 客户信息,订单信息,贷款信息修改 2022-04-20 17:58:37 +08:00
老叶 fa4a9ef679 applyUpdate 2022-04-18 14:45:41 +08:00
老叶 a2028a2fac 订单详情销售顾问 2022-04-18 14:15:45 +08:00
老叶 aa6b83430a 更新新版本提醒 2022-04-15 15:11:17 +08:00
老叶 92092a482c 开票信息 2022-04-12 11:21:45 +08:00
老叶 0b5e431893 正式环境 2022-04-12 09:32:17 +08:00
老叶 fda266508a 继续创建BUG修复 2022-04-12 09:30:29 +08:00
老叶 565bf3c053 DEV环境 2022-04-08 15:27:07 +08:00
老叶 08bf91b202 订单登记-biz_type == 1 上牌保险必填 2022-04-08 15:20:51 +08:00
老叶 8749858003 订单列表样式 2022-04-08 11:48:26 +08:00
yerz123 7dcbc0c6e6 代办去掉判断限额 2022-04-04 19:23:33 +08:00
老叶 33ec78436a 客户战败变更状态 2022-03-31 10:41:25 +08:00
老叶 9074059858 请选择定金必填修改 2022-03-30 17:42:15 +08:00
老叶 0b065b05bc 海报二维码大小修改 2022-03-30 16:33:57 +08:00
老叶 9cd9d83bea 添加用户协议 2022-03-28 16:43:51 +08:00
老叶 aa9bf5fb36 详情添加微信图标 2022-03-28 11:12:12 +08:00
老叶 952d45b41b 判断是否微信客户 2022-03-25 17:20:45 +08:00
老叶 2212e682ff 隐藏订单统计 2022-03-25 16:09:22 +08:00
老叶 1543632b23 列表 2022-03-24 16:26:09 +08:00
老叶 715f8c9816 订单列表样式 2022-03-24 16:14:24 +08:00
老叶 e38eba359c 线索来源 预计购车时间改必填 2022-03-24 14:23:49 +08:00
老叶 a0d379cb18 客户登记标题 2022-03-23 17:18:01 +08:00
老叶 940d6829b4 新订单去掉扫码签合同 2022-03-22 10:15:45 +08:00
yerz123 90e7a641b7 订单修改 2022-03-20 23:57:49 +08:00
yerz123 6f5fa61de0 编辑地址 2022-03-18 19:42:18 +08:00
老叶 970fa4ae64 金融产品编辑 2022-03-18 18:15:26 +08:00
老叶 31f3d5f63f 订单详情 2022-03-18 16:42:13 +08:00
老叶 f31d348134 订单修改 2022-03-18 15:53:53 +08:00
老叶 6c63b74afc 客户重新分配销售顾问 2022-03-17 14:58:08 +08:00
老叶 f77676a5c7 订单登记编辑去掉金融机构 2022-03-17 10:43:28 +08:00
老叶 420fd64c06 选择金融产品 2022-03-16 11:16:21 +08:00
yerz123 4219f745b4 待分配 2022-03-15 17:58:59 +08:00
yerz123 d694f57dc8 随车物品确认 2022-03-15 17:42:58 +08:00
yerz123 cdb409796b 销售顾问 未分配 2022-03-15 16:57:55 +08:00
yerz123 c2cfb7a295 金融 2022-03-15 16:29:37 +08:00
yerz123 6d3fe307b2 客户标签添加单选模式 2022-03-15 15:39:48 +08:00
yerz123 b452fccee1 修改贷款信息 2022-03-15 15:07:13 +08:00
yerz123 4e67e362b2 去掉贷款信息 2022-03-15 14:32:01 +08:00
yerz123 3beb630357 客服登记等去掉选择车辆 2022-03-15 14:03:29 +08:00
老叶 bfc64dd8cc 客户标签 2022-03-14 17:12:49 +08:00
老叶 b5c729260a 订单加价 2022-03-11 17:36:50 +08:00
老叶 7efedb3e7a 客户购车时间 2022-03-10 15:27:12 +08:00
老叶 5e04eb4f35 客户线索修改 2022-03-09 17:49:23 +08:00
老叶 777a4d81c5 调拨盘点库存入口修改 2022-03-09 17:32:01 +08:00
老叶 86b2543d84 客户线索接口 2022-03-09 17:30:20 +08:00
老叶 b6548ae0d7 调拨,盘点,库存功能 2022-03-07 17:34:31 +08:00
老叶 637627b80f 隐藏精品尊享包精品优惠,直营店才有水平业务,获取车辆价格添加小版本好 2022-02-28 15:38:20 +08:00
老叶 0e5716edab 非直营店,老订单去掉水平业务 2022-02-24 17:33:47 +08:00
老叶 f1a03674e1 授权用户头像 2022-02-24 12:01:37 +08:00
老叶 f90c077767 新版logo添加版本号 2022-02-23 15:28:50 +08:00
老叶 29650d44c7 当前企业微信 2022-02-22 10:02:39 +08:00
老叶 bb95bf51d6 旧版扫码签名 2022-02-14 14:32:28 +08:00
老叶 4aa477e842 订单登记,订单编辑-修改保险显示 2022-02-11 10:01:40 +08:00
老叶 33c6d3490a 私域通 2022-02-10 17:08:31 +08:00
老叶 a1797c09e5 私域通 2022-02-10 16:59:18 +08:00
老叶 3ec6c4c8a7 调拨 2022-02-10 10:49:13 +08:00
老叶 df67ab05c1 调拨 2022-02-10 10:38:03 +08:00
老叶 4096d72bfc 私域通 2022-02-10 10:25:16 +08:00
老叶 d030e780d7 私域通 2022-02-10 09:43:54 +08:00
老叶 989db45e1f 调拨修改 2022-02-09 15:20:42 +08:00
老叶 82b095c669 Merge branch 'feature/yerz' of http://git.haodian.cn:8081/yerz/XiaoChengXu-LiCheBao into feature/yerz 2022-02-08 17:11:42 +08:00
老叶 c55ea9a4c5 调拨信息 2022-02-08 17:11:39 +08:00
老叶 f111f9e267 私域通样式修改 2022-02-08 09:56:32 +08:00
老叶 f112b2e631 私域通样式修改 2022-02-08 09:55:45 +08:00
老叶 83e4b59d72 渠道-水平业务相关-先隐藏 2022-01-28 17:18:54 +08:00
老叶 a8b8bef367 私域通-活动背景 2022-01-28 17:11:30 +08:00
老叶 9f44b2e859 Update index.wxml 2022-01-28 17:06:16 +08:00
老叶 8af1ee4825 标题 2022-01-28 17:05:48 +08:00
老叶 47e6bc5e4a 修改色调 2022-01-28 16:50:50 +08:00
老叶 b6c7d0d31a 二维码海报 2022-01-28 16:03:27 +08:00
老叶 2a7808f97c 私域通样式 2022-01-28 15:26:00 +08:00
老叶 2837a99036 私域通入口 2022-01-28 15:07:34 +08:00
老叶 03c877ce0d 私域通 2022-01-28 15:07:34 +08:00
老叶 517d487122 私域通静态 2022-01-28 15:07:34 +08:00
老叶 8b972a119a 精品尊享包价格 2022-01-28 15:05:41 +08:00
老叶 f26417e4ea 车系车型 车辆版本 车身颜色 2022-01-28 13:51:55 +08:00
老叶 3914fd56cc 订单 2022-01-27 20:12:49 +08:00
老叶 bdaa1931c1 筛选订单列表 2022-01-27 16:41:52 +08:00
老叶 3c2e376819 订单编辑 2022-01-27 14:26:35 +08:00
老叶 5102ee13c3 Update index.wxml 2022-01-27 10:02:28 +08:00
老叶 7ac003a353 订单列表 2022-01-26 17:53:51 +08:00
老叶 a629279504 订单详情 2022-01-26 15:55:15 +08:00
老叶 4f4373e0c1 IOS同层always-embed 2022-01-26 15:36:31 +08:00
老叶 81c4e094c3 订单登记金额 2022-01-26 15:03:57 +08:00
老叶 ba83d73a4f 订单编辑金额 2022-01-26 14:38:06 +08:00
老叶 5f3be8c3cd 代办费 2022-01-25 17:54:35 +08:00
老叶 7ada03565c 修改订单基本信息 2022-01-25 16:44:46 +08:00
老叶 b2a4167a95 代办 2022-01-25 16:18:46 +08:00
老叶 25d006d3c6 信息调整 2022-01-25 15:11:46 +08:00
老叶 8b2f95acc4 订单 2022-01-25 10:27:12 +08:00
老叶 77e3241ee4 订单 2022-01-24 17:22:39 +08:00
老叶 46b0dad571 订单 2022-01-24 16:47:15 +08:00
老叶 b07d77d72f 订单详情 2022-01-21 17:45:34 +08:00
老叶 83ac70f362 订单编辑 2022-01-21 16:07:38 +08:00
老叶 b361a97ba2 上传图片 2022-01-21 15:09:49 +08:00
老叶 4721f99f26 订单登记 2022-01-19 17:53:48 +08:00
老叶 963b5b057d 订单列表详情 2022-01-19 16:55:46 +08:00
老叶 99aad8fa71 订单登记 2022-01-18 17:27:51 +08:00
老叶 b5d4022b29 店铺概况-tag 2022-01-10 11:49:12 +08:00
老叶 15c3848ea3 正式环境 2022-01-10 10:11:46 +08:00
老叶 ed33505d75 店铺概况,渠道经理可见 2022-01-07 17:36:46 +08:00
老叶 abe52f5140 文案修改 2022-01-07 17:32:55 +08:00
老叶 381f6c53ef 上传图片,调拨添加身份证 2022-01-07 17:20:05 +08:00
老叶 9608977d91 店铺概况 2022-01-07 17:09:50 +08:00
老叶 30eff0c60c 静态 2022-01-06 13:43:58 +08:00
老叶 2da40ba5d0 订单登记,有弹窗的时候改变input状态 2021-12-30 16:25:25 +08:00
老叶 dbc25ea37f 调拨渠道查看 2021-12-29 17:05:51 +08:00
老叶 7b11b0df0b 渠道调拨提醒 2021-12-29 16:23:28 +08:00
老叶 3f4974a911 渠道添加调拨 2021-12-29 15:43:48 +08:00
老叶 4def645552 修改文字,去掉店长好 2021-12-28 17:37:19 +08:00
老叶 ceaed58886 添加调拨状态 2021-12-28 16:28:29 +08:00
老叶 ea0246e65d 短信ICON 2021-12-28 15:05:18 +08:00
老叶 df33af98a0 iconfont 2021-12-28 10:47:54 +08:00
老叶 20be8974c0 调拨 2021-12-28 10:44:21 +08:00
老叶 0a0b048678 店长 掌柜可设置转介绍佣金 2021-12-24 17:01:50 +08:00
老叶 7efb6220e6 转介绍 2021-12-24 15:44:53 +08:00
老叶 20c31b2355 转介绍静态 2021-12-24 11:26:16 +08:00
老叶 1618eb617c 音频播放器 2021-12-23 16:37:37 +08:00
老叶 f1cf644902 精品去掉优惠价格限制 2021-12-21 11:46:45 +08:00
212 changed files with 25051 additions and 2907 deletions
+6 -1
View File
@@ -5,6 +5,10 @@ App({
this.updateVersion()
wx.getSystemInfo({
success(res) {
console.log(res)
if(!!res.environment&&res.environment=='wxwork'){
console.log('当前企业微信')
}
that.globalData.statusBarHeight = res.statusBarHeight;
that.globalData.screenHeight = res.screenHeight;
that.globalData.screenWidth = res.screenWidth;
@@ -133,10 +137,11 @@ App({
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
})
updateManager.onUpdateReady(function () {
wx.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
content: '新版本已经准备好,\n是否重启应用?',
success: function (res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+33 -1
View File
@@ -30,7 +30,39 @@
"pages/distribute/storePoster/index",
"pages/distribute/storePoster/modelList/index",
"pages/allot/detail/index",
"pages/allot/list/index"
"pages/allot/list/index",
"pages/audioPlay/index",
"pages/recommend/index",
"pages/allot/index",
"pages/storeInfo/index",
"pages/order/detail/index2",
"pages/order/edit/index2",
"pages/order/editOwner/index",
"pages/order/filterList/index2",
"pages/siyutong/index",
"pages/siyutong/activityDetail/index",
"pages/siyutong/activityRanking/index",
"pages/inventory/detail/index",
"pages/inventory/list/index",
"pages/inventory/warning/index",
"pages/order/editFinance/index",
"pages/statement/registration/index",
"pages/statement/privacy/index",
"pages/order/editCardid/index",
"pages/order/editBusinessBicence/index",
"pages/order/editLicenseImg/index",
"pages/order/editInsImg/index",
"pages/order/editOtherImg/index",
"pages/storeData/index",
"pages/storeData/customerData/index",
"pages/storeData/wechatData/index",
"pages/storeData/orderData/index",
"pages/order/editDeliveryckimg/index",
"pages/order/editQVImg/index",
"pages/order/editVoucherImg/index",
"pages/dataAnalysis/detail/index",
"pages/order/editBuyer/index",
"pages/storeData/subData/index"
],
"echarts": [
{
+7 -1
View File
@@ -10,6 +10,7 @@
.bg-1a{background-color: #1a1a1a;}
.bg-36afa2{background-color:#36afa2;}
.bg-f9394d{background-color:#f9394d;}
.bg-3f4047{background-color:#3f4047;}
.bg-000-op30{background-color:rgba(0,0,0,.3);}
.bg-000-op50{background-color:rgba(0,0,0,.5);}
@@ -26,6 +27,8 @@
.bg-2f3346-1a1c26{background-image:linear-gradient(#2f3346,#1a1c26);}
.bg-f6-fff{background-image:linear-gradient(#f6f6f6,#fff);}
.bg-f3f6fc{background-color:#f3f6fc;}
.bg-fffaeb{background-color:#fffaeb;}
.bg-f1f9f8{background-color:#f1f9f8;}
@@ -33,4 +36,7 @@
.bg-e3f5f3{background-color:#e3f5f3;}
.bg-2e3246{background-color:#2e3246;}
.bg-ffedeb{background-color:#ffedeb;}
.bg-ffedeb{background-color:#ffedeb;}
.bg-f0f4ff{background-color:#f0f4ff;}
.bg-fffaf3{background-color:#fffaf3;}
+7
View File
@@ -9,12 +9,19 @@
.bds-1-eb{border:#ebebeb 1rpx solid; box-sizing:border-box;}
.btd-1-eb{border-top:#ebebeb 1rpx dashed;box-sizing:border-box;}
.bds-2-eb{border:#ebebeb 2rpx solid; box-sizing:border-box;}
.bds-2-fff{border:#fff 2rpx solid; box-sizing:border-box;}
.bds-7dbeeb{border:#7dbeeb 1rpx solid;box-sizing:border-box;}
.bds-2-36afa2{border:#36afa2 2rpx solid;box-sizing:border-box;}
.bts-2-36afa2{border-top:#36afa2 2rpx solid;box-sizing:border-box;}
.bls-2-36afa2{border-left:#36afa2 2rpx solid;box-sizing:border-box;}
.brs-2-36afa2{border-right:#36afa2 2rpx solid;box-sizing:border-box;}
.bbs-2-36afa2{border-bottom:#36afa2 2rpx solid;box-sizing:border-box;}
.bds-2-f9394d{border:#f9394d 2rpx solid;box-sizing:border-box;}
.bts-1-474a65{border-top:#474a65 1rpx solid; box-sizing:border-box;}
.bbs-1-474a65{border-bottom:#474a65 1rpx solid; box-sizing:border-box;}
.last-b-none:last-child{border-bottom:none;}
+3 -1
View File
@@ -11,5 +11,7 @@
.color-bbb{color:#bbb;}
.color-ccc{color:#ccc;}
.color-f9394d{color:#f9394d;}
.color-fe4109{color:#fe4109;}
.color-36afa2{color:#36afa2;}
.color-00c800{color:#00c800;}
.color-00c800{color:#00c800;}
.color-575b6a{color:#575b6a;}
+3 -1
View File
@@ -20,9 +20,11 @@
.font-54{font-size:54rpx;}
.font-56{font-size:56rpx;}
.font-60{font-size:60rpx;}
.font-64{font-size:64rpx;}
.font-66{font-size:66rpx;}
.font-72{font-size:72rpx;}
.font-75{font-size:75rpx;}
.font-80{font-size:80rpx;}
.font-90{font-size:90rpx;}
.font-120{font-size:120rpx;}
.font-120{font-size:120rpx;}
.font-180{font-size:180rpx;}
+5 -2
View File
@@ -1,4 +1,4 @@
.img-24x24{width:32rpx;height:32rpx;box-sizing:border-box;}
.img-24x24{width:24rpx;height:24rpx;box-sizing:border-box;}
.img-45x45{width:45rpx;height:45rpx;box-sizing:border-box;}
.img-50x50{width:50rpx;height:50rpx;box-sizing:border-box;}
.img-55x55{width:55rpx;height:55rpx;box-sizing:border-box;}
@@ -12,16 +12,19 @@
.img-100x100{width:100rpx;height:100rpx;box-sizing:border-box;}
.img-120x120{width:120rpx;height:120rpx;box-sizing:border-box;}
.img-125x75{width:125rpx;height:75rpx;box-sizing:border-box;}
.img-130x130{width:130rpx;height:130rpx;box-sizing:border-box;}
.img-135x135{width:135rpx;height:135rpx;box-sizing:border-box;}
.img-140x140{width:140rpx;height:140rpx;box-sizing:border-box;}
.img-160x160{width:160rpx;height:160rpx;box-sizing:border-box;}
.img-190x175{width:190rpx;height:175rpx;box-sizing:border-box;}
.img-200x180{width:200rpx;height:180rpx;box-sizing:border-box;}
.img-208x170{width:208rpx;height:170rpx;box-sizing:border-box;}
.img-220x200{width:220rpx;height:200rpx;box-sizing:border-box;}
.img-250x150{width:250rpx;height:150rpx;box-sizing:border-box;}
.img-300x200{width:300rpx;height:200rpx;box-sizing:border-box;}
.img-250x250{width:250rpx;height:250rpx;box-sizing:border-box;}
.img-250x445{width:250rpx;height:445rpx;box-sizing:border-box;}
.img-300x200{width:300rpx;height:200rpx;box-sizing:border-box;}
.img-300x230{width:300rpx;height:230rpx;box-sizing:border-box;}
.img-750x250{width:750rpx;height:250rpx;box-sizing:border-box;}
.img-750x422{width:100%;height:422rpx;box-sizing:border-box;}
+8 -3
View File
@@ -29,7 +29,6 @@
/*layout flex*/
.fn-flex{display:flex;flex-flow:row;align-items:stretch;}
.fn-flex-center{align-items:center;}
.fn-flex-item{display:block;flex:1;}
.fn-flex-item.flexsize2{flex:2;}
.fn-flex-item.flexsize3{flex:3;}
@@ -43,8 +42,9 @@
.fn-flex-between{justify-content: space-between;}/*两端对齐*/
.fn-flex-wrap{flex-wrap:wrap}/*多行*/
.fn-flex-around{justify-content: space-around;}/*各项周围留有空白*/
.fn-flex-middle{align-items:center;}/*交叉轴上上下居中对齐*/
.fn-flex-center{justify-content: center;}/*居中对齐*/
.wp20{width:20%;box-sizing:border-box;}
.wp25{width:25%;box-sizing:border-box;}
.wp31{width:31%;box-sizing:border-box;}
.wp33{width:33%;box-sizing:border-box;}
@@ -117,6 +117,8 @@
.line-height-20{line-height:2;}
.rich-text-img{display:bolck;max-width:100% !important;height:auto !important;margin:40rpx 0 20rpx 0 !important;}
.height-80{height:80rpx;box-sizing:border-box;}
.height-90{height:90rpx;box-sizing:border-box;}
.height-100{height:100rpx;box-sizing:border-box;}
.height-120{height:120rpx;box-sizing:border-box;}
.height-190{height:190rpx;box-sizing:border-box;}
@@ -128,4 +130,7 @@
.tabmenu{line-height:80rpx;}
.tabmenu.active::before{display:block;position:absolute;bottom:0;left:50%;width:30rpx;height:4rpx;margin-left:-15rpx;content:"";background-color:#36afa2;}
.safe-pb{padding-bottom:calc(constant(safe-area-inset-bottom) - 15px );padding-bottom:calc(env(safe-area-inset-bottom) - 15px);}
.safe-pb{padding-bottom:calc(constant(safe-area-inset-bottom) - 15px );padding-bottom:calc(env(safe-area-inset-bottom) - 15px);}
.datecell{width:14.28%;padding:30rpx 0;text-align:center;box-sizing:border-box;}
.datecell.active{background-color:#36afa2;color:#fff;}
+5
View File
@@ -19,9 +19,11 @@
.mt90{margin-top:90rpx;}
.mt110{margin-top:110rpx;}
.mt120{margin-top:120rpx;}
.mt130{margin-top:130rpx;}
.mt150{margin-top:150rpx;}
.mt190{margin-top:190rpx;}
.ml-1{margin-left:-1rpx;}
.ml1{margin-left:1rpx;}
.ml5{margin-left:5rpx;}
.ml10{margin-left:10rpx;}
.ml15{margin-left:15rpx;}
@@ -33,6 +35,7 @@
.ml45{margin-left:45rpx;}
.ml50{margin-left:50rpx;}
.ml60{margin-left:60rpx;}
.ml65{margin-left:65rpx;}
.ml70{margin-left:70rpx;}
.ml80{margin-left:80rpx;}
.ml110{margin-left:110rpx;}
@@ -43,6 +46,7 @@
.ml200{margin-left:200rpx;}
.mr-20{margin-right:-20rpx;}
.mr-30{margin-right:-30rpx;}
.mr1{margin-right:1rpx;}
.mr5{margin-right:5rpx;}
.mr10{margin-right:10rpx;}
.mr11{margin-right:11rpx;}
@@ -62,6 +66,7 @@
.mr170{margin-right:170rpx;}
.mr180{margin-right:180rpx;}
.mr190{margin-right:190rpx;}
.mb5{margin-bottom:5rpx;}
.mb10{margin-bottom:10rpx;}
.mb15{margin-bottom:15rpx;}
.mb20{margin-bottom:20rpx;}
+4
View File
@@ -1,3 +1,4 @@
.inner6{padding:6rpx;}
.inner8{padding:8rpx;}
.inner10{padding:10rpx;}
.inner20{padding:20rpx;}
@@ -8,6 +9,8 @@
.pt0{padding-top:0;}
.pt2{padding-top:2rpx;}
.pt3{padding-top:3rpx;}
.pt4{padding-top:4rpx;}
.pt5{padding-top:5rpx}
.pt8{padding-top:8rpx;}
.pt10{padding-top:10rpx;}
@@ -30,6 +33,7 @@
.pt160{padding-top:160rpx;}
.pt180{padding-top:180rpx;}
.pt200{padding-top:200rpx;}
.pt300{padding-top:300rpx;}
.pt400{padding-top:400rpx;}
.pl0{padding-left:0;}
.pl5{padding-left:5rpx;}
File diff suppressed because one or more lines are too long
+84 -6
View File
@@ -1,4 +1,4 @@
const env = "p";
const env = "d";
const version = 1,
@@ -36,8 +36,7 @@ api = {
appCustomerData: "app/customers/data", //获取客户详细信息
appCusorder: "app/cusorder", //新建订单 /获取订单列表 /获取订单详情 /修改付款方式 /修改委托协议
appCusorderTabs: "app/cusorder/tabs", //获取tab
appEmployees: "app/employees", //获取客户详细信息 /获取店员列表 /更新店员信息 /删除店员
appLoan: "app/loan", //获取贷款产品信息 /创建贷款信息 /修改贷款信息
appEmployees: "app/employees", //获取客户详细信息 /获取店员列表 /更新店员信息 /删除店员
appIdcard: "app/idcard", //创建申请开票信息
appUserCal: "app/user/cal", //获取用户统计
appCusorderCkcar: "app/cusorder/ckcar", //确认交付
@@ -47,14 +46,16 @@ api = {
appCustomerData: "app/customers/data", //修改客户基本信息
appServicesPackage: "app/services/package", //获取代办包
appSeriesInfo: "app/series/info", //获取车辆价格
appBusiness: "app/business", //获取商务政策
appSeriesBrands: "app/series/brands", //获取车型品牌
appSeries: "app/series", //获取车型车
appSeries: "app/series", //获取车系车型
appUserTel: "app/user/tel", //编辑拨打电话
appFinance: "app/finance", //获取金融产品列表
appFinanceNums: "app/finance/nums", //获取金融分期期数
appLoan: "app/loan", //修改贷款信息
appUserBizs: "app/user/bizs", //获取管理门店
appStatisticsCust: "app/statistics/cust", //获取渠道客户统计
@@ -64,6 +65,12 @@ api = {
appStatisticsOcust: "app/statistics/ocust", //数据分析-订单数据
appStatisticsHcust: "app/statistics/hcust", //首页-客户图标数据
appStatisticsHorder: "app/statistics/horder", //首页-订单图表数据
appStatisticsStats: "app/statistics/stats", //获取渠道经理数据分析入口数据
appStatisticsStats_days: "app/statistics/stats_days", //获取渠道经理数据分析数据
appStatisticsStats_customer: "app/statistics/stats_customer", //获取渠道经理数据分析数据
appUserResetbiz: "app/user/resetbiz", //更新用户店铺id
appXzStat: "app/xz/stat", //获取电话统计数据
appCity: "app/city", //获取系统配置城市
@@ -82,7 +89,7 @@ api = {
appCustomersDefeats: 'app/customers/defeats', //战败客户列表 /战败/再战申请
appServices:'app/services', //获取代办服务列表
appFine:'app/fine', //获取精品赠送列表
appFine:'app/fine', //获取精品赠送列表 /获取精品选装
materialHomeBiz:'material/home/biz', //店铺海报
materialHomePosters:'material/home/posters', //保存店铺海报
@@ -97,6 +104,71 @@ api = {
appCusorderCdata:'app/cusorder/cdata', //上传资料
appBrokerageOrders:'app/brokerage/orders', //转介绍列表
appBrokerage:'app/brokerage', //获取佣金设置 /更新佣金设置 /创建佣金设置
appTransferTabs:'app/transfer/tabs', //调拨记录_tab
appTransferTransport:'app/transfer/transport', //上传运输单
appBizSituation_tabs:'app/biz/situation_tabs', //店铺概况_tab
appBizSituation:'app/biz/situation', //店铺概况 /店铺概况保存
appBizStreet:'app/biz/street', //获取乡镇
appCusorderV2Inten:'app/cusorderV2/inten', //新增意向金订单
appCusorderV2:'app/cusorderV2', //新建订单 /获取订单列表 /订单详情 /修改订单信息
appCusorderV2Tabs:'app/cusorderV2/tabs', //获取订单列表tab
appCusorderdata:'app/Cusorderdata', //获取订单图片 /上传编辑国补资料
appCusorderV2Info:'app/cusorderV2/info', //修改订单基本信息
appCusorderV2Status:'app/cusorderV2/status', //删除订单
appSytactivityTabs:'app/sytactivity/tabs', //私域通_tab
appSytactivityList:'app/sytactivity/list', //活动列表
appSytactivityDetail:'app/sytactivity/detail', //活动详情
appSytactivityLog:'app/sytactivity/log', //实时战报
appSytactivityRanking:'app/sytactivity/ranking', //活动排名
appInventoryTabs:'app/inventory/tabs', //盘点记录_tab
appInventoryLists:'app/inventory/lists', //盘点记录
appInventory:'app/inventory', //盘点详情 /盘点上传图片
appInventoryRemind:'app/inventory/remind', //盘点提醒
appGoodsRemind:'app/goods/remind', //库存提醒/预警
appGoodsLists:'app/goods/lists', //库存列表
appCustomersOffline_sources:'app/customers/offline_sources', //客户来源
appCustomersTag:'app/customers/tag', //客户标签
appCityOncard:'app/city/oncard', //获取上牌城市
appFinanceNums:'app/finance/nums', //获取金融分期期数
appCusorderV2Customer:'app/cusorderV2/customer', //获取客户订单
appCustomersVisit_tabs:'app/customers/visit_tabs', //回访待跟进tab
appIdcardInfo:'app/idcard/info', //识别身份证号码
appCustomersComments:'app/customers/comments', //用户评论
appCityArea:'app/city/area', //获取省/市/区/街道
appEmployeesLeave:'app/employees/leave', //获取离职 //提交离职
appCusorderV2Admins:'app/cusorderV2/admins', //分配订单
appCusorderdataInfo:'app/cusorderdata/info', //保单信息确认
appBizStats:'app/biz/stats', //数据看板首页
appBizStats_customer:'app/biz/stats_customer', //客户数据
appBizStats_wxqy:'app/biz/stats_wxqy', //企微数据
appBizStats_order:'app/biz/stats_order', //订单数据
appBizStats_days:'app/biz/stats_days', //客户/订单走势图
appBizStats_customer_pid:'app/biz/stats_customer_pid', //客户数据二级
appBizStats_order_series:'app/biz/stats_order_series', //品牌数据二级
appOptions:'app/options', //获取车辆选装包
appResetgroupid:'app/user/resetgroupid', //切换角色
}
//远程图片存储地址
@@ -139,6 +211,11 @@ var white401UrlList = {
'app/home/qrcode':'app/home/qrcode'
}
/**
* 订单id临界切换版本
*/
var v2OrderId = 10000
export default {
env,
api,
@@ -151,5 +228,6 @@ export default {
bookTmpId,
getLotteryTmpId,
subscribeTmpId,
white401UrlList
white401UrlList,
v2OrderId,
}
File diff suppressed because one or more lines are too long
+418 -52
View File
@@ -24,33 +24,6 @@ apiQuery.putUserInfo = function (params) {
})
}
//用户信息授权
apiQuery.authUserInfo = function (params) {
return new Promise(function (resolve, reject) {
wx.getSetting({
success(res) {
let userInfo = app.getStorageByKey("userInfo");
console.log(res.authSetting)
if (res.authSetting['scope.userInfo']) {
if (!userInfo.nickname || !userInfo.headimg || (userInfo.headimg != JSON.parse(params.detail.rawData).avatarUrl)) {
asyncLogin().then(res => {
apiQuery.putUserInfo({
encryptedData: params.detail.encryptedData,
iv: params.detail.iv
}).then(res => {
//设置本地存储
resolve(res)
})
})
} else {
resolve(userInfo)
}
}
}
})
})
}
//用户手机号码授权
apiQuery.authUserPhone = function (params) {
return new Promise(function (resolve, reject) {
@@ -229,7 +202,7 @@ apiQuery.postAppEmployees = function (params) {
})
}
//更新店员信息
//更新店员信息 //提交离职
apiQuery.putAppEmployees = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appEmployees, 2, params, "PUT", resolve, reject)
@@ -243,27 +216,6 @@ apiQuery.deleteAppEmployees = function (params) {
})
}
//获取贷款产品信息
apiQuery.getAppLoan = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appLoan, 2, params, "GET", resolve, reject)
})
}
//创建贷款信息
apiQuery.postAppLoan = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appLoan, 2, params, "POST", resolve, reject)
})
}
//修改贷款信息
apiQuery.putAppLoan = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appLoan, 2, params, "PUT", resolve, reject)
})
}
//创建申请开票信息
apiQuery.postAppIdcard = function (params) {
return new Promise(function (resolve, reject) {
@@ -281,7 +233,7 @@ apiQuery.putAppIdcard = function (params) {
//获取用户统计
apiQuery.getAppUserCal = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appUserCal, 2, params, "GET", resolve, reject)
HttpRequest(true, Config.api.appUserCal, 2, params, "GET", resolve, reject)
})
}
@@ -306,7 +258,7 @@ apiQuery.getAppXz = function (params) {
})
}
//新增日志
//新增日志 /作废
apiQuery.postAppCustomerlogs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCustomerlogs, 2, params, "POST", resolve, reject)
@@ -334,6 +286,13 @@ apiQuery.getAppSeriesInfo = function(params){
})
}
//获取商务政策
apiQuery.getAppBusiness = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBusiness, 2, params, "GET", resolve, reject)
})
}
//获取车型品牌
apiQuery.getAppSeriesBrands = function(params){
return new Promise(function (resolve, reject) {
@@ -341,7 +300,7 @@ apiQuery.getAppSeriesBrands = function(params){
})
}
//获取车型车
//获取车系车型
apiQuery.getAppSeries = function(params){
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSeries, 2, params, "GET", resolve, reject)
@@ -614,4 +573,411 @@ apiQuery.putAppCusorderCdata = function (params) {
})
}
//获取佣金设置
apiQuery.getAppBrokerage = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBrokerage, 2, params, "GET", resolve, reject)
})
}
//创建佣金设置
apiQuery.postAppBrokerage = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appBrokerage, 2, params, "POST", resolve, reject)
})
}
//更新佣金设置
apiQuery.putAppBrokerage = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appBrokerage, 2, params, "PUT", resolve, reject)
})
}
//转介绍列表
apiQuery.getAppBrokerageOrders = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBrokerageOrders, 2, params, "GET", resolve, reject)
})
}
//调拨记录_tab
apiQuery.getAppTransferTabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appTransferTabs, 2, params, "GET", resolve, reject)
})
}
//上传运输单
apiQuery.postAppTransferTransport = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appTransferTransport, 2, params, "POST", resolve, reject)
})
}
//店铺概况_tab
apiQuery.getAppBizSituation_tabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizSituation_tabs, 2, params, "GET", resolve, reject)
})
}
//店铺概况
apiQuery.getAppBizSituation = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizSituation, 2, params, "GET", resolve, reject)
})
}
//店铺概况保存
apiQuery.postAppBizSituation = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appBizSituation, 2, params, "POST", resolve, reject)
})
}
//获取乡镇
apiQuery.getAppBizStreet = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStreet, 2, params, "GET", resolve, reject)
})
}
//新增意向金订单
apiQuery.postAppCusorderV2Inten = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2Inten, 2, params, "POST", resolve, reject)
})
}
//新建订单
apiQuery.postAppCusorderV2 = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2, 2, params, "POST", resolve, reject)
})
}
//获取订单列表tab
apiQuery.getAppCusorderV2Tabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderV2Tabs, 2, params, "GET", resolve, reject)
})
}
//获取订单列表
apiQuery.getAppCusorderV2List = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderV2, 2, params, "GET", resolve, reject)
})
}
//订单详情
apiQuery.getAppCusorderV2 = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderV2, 2, params, "GET", resolve, reject)
})
}
//获取订单图片
apiQuery.getAppCusorderdata = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderdata, 2, params, "GET", resolve, reject)
})
}
//上传编辑国补资料
apiQuery.putAppCusorderdata = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderdata, 2, params, "PUT", resolve, reject)
})
}
//修改订单信息
apiQuery.putAppCusorderV2 = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2, 2, params, "PUT", resolve, reject)
})
}
//修改订单基本信息
apiQuery.putAppCusorderV2Info = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2Info, 2, params, "PUT", resolve, reject)
})
}
//删除订单
apiQuery.putAppCusorderV2Status = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2Status, 2, params, "PUT", resolve, reject)
})
}
//私域通_tab
apiQuery.getAppSytactivityTabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSytactivityTabs, 2, params, "GET", resolve, reject)
})
}
//活动列表
apiQuery.getAppSytactivityList = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSytactivityList, 2, params, "GET", resolve, reject)
})
}
//活动详情
apiQuery.getAppSytactivityDetail = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSytactivityDetail, 2, params, "GET", resolve, reject)
})
}
//实时战报
apiQuery.getAppSytactivityLog = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSytactivityLog, 2, params, "GET", resolve, reject)
})
}
//活动排名
apiQuery.getAppSytactivityRanking = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appSytactivityRanking, 2, params, "GET", resolve, reject)
})
}
//盘点记录_tab
apiQuery.getAppInventoryTabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appInventoryTabs, 2, params, "GET", resolve, reject)
})
}
//盘点列表
apiQuery.getAppInventoryLists = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appInventoryLists, 2, params, "GET", resolve, reject)
})
}
//盘点详情
apiQuery.getAppInventory = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appInventory, 2, params, "GET", resolve, reject)
})
}
//确认盘点
apiQuery.postAppInventory = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appInventory, 2, params, "POST", resolve, reject)
})
}
//盘点提醒
apiQuery.getAppInventoryRemind = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appInventoryRemind, 2, params, "GET", resolve, reject)
})
}
//库存提醒/预警
apiQuery.getAppGoodsRemind = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appGoodsRemind, 2, params, "GET", resolve, reject)
})
}
//库存列表
apiQuery.getAppGoodsLists = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appGoodsLists, 2, params, "GET", resolve, reject)
})
}
//客户来源
apiQuery.getAppCustomersOffline_sources = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCustomersOffline_sources, 2, params, "GET", resolve, reject)
})
}
//客户标签
apiQuery.getAppCustomersTag = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCustomersTag, 2, params, "GET", resolve, reject)
})
}
//修改贷款信息
apiQuery.putAppLoan = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appLoan, 2, params, "PUT", resolve, reject)
})
}
//获取上牌城市
apiQuery.getAppCityOncard = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCityOncard, 2, params, "GET", resolve, reject)
})
}
//获取金融分期期数
apiQuery.getAppFinanceNums = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appFinanceNums, 2, params, "GET", resolve, reject)
})
}
//获取客户订单
apiQuery.getAppCusorderV2Customer = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCusorderV2Customer, 2, params, "GET", resolve, reject)
})
}
//回访待跟进tab
apiQuery.getAppCustomersVisit_tabs = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCustomersVisit_tabs, 2, params, "GET", resolve, reject)
})
}
//识别身份证号码
apiQuery.getAppIdcardInfo = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appIdcardInfo, 2, params, "GET", resolve, reject)
})
}
//用户评论
apiQuery.postAppCustomersComments = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCustomersComments, 2, params, "POST", resolve, reject)
})
}
//获取省/市/区/街道
apiQuery.getAppCityArea = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appCityArea, 2, params, "GET", resolve, reject)
})
}
//获取离职
apiQuery.getAppEmployeesLeave = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appEmployeesLeave, 2, params, "GET", resolve, reject)
})
}
//提交离职
apiQuery.putAppEmployeesLeave = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appEmployeesLeave, 2, params, "PUT", resolve, reject)
})
}
//分配订单
apiQuery.putAppCusorderV2Admins = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderV2Admins, 2, params, "PUT", resolve, reject)
})
}
//保单信息确认
apiQuery.putAppCusorderdataInfo = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appCusorderdataInfo, 2, params, "PUT", resolve, reject)
})
}
//数据看板首页
apiQuery.getAppBizStats = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats, 2, params, "GET", resolve, reject)
})
}
//客户数据
apiQuery.getAppBizStats_customer = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_customer, 2, params, "GET", resolve, reject)
})
}
//企微数据
apiQuery.getAppBizStats_wxqy = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_wxqy, 2, params, "GET", resolve, reject)
})
}
//订单数据
apiQuery.getAppBizStats_order = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_order, 2, params, "GET", resolve, reject)
})
}
//客户/订单走势图
apiQuery.getAppBizStats_days = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_days, 2, params, "GET", resolve, reject)
})
}
//客户数据二级
apiQuery.getAppBizStats_customer_pid = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_customer_pid, 2, params, "GET", resolve, reject)
})
}
//品牌数据二级
apiQuery.getAppBizStats_order_series = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appBizStats_order_series, 2, params, "GET", resolve, reject)
})
}
//获取渠道经理数据分析入口数据
apiQuery.getAppStatisticsStats = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsStats, 2, params, "GET", resolve, reject)
})
}
//获取渠道经理数据分析数据
apiQuery.getAppStatisticsStats_days = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsStats_days, 2, params, "GET", resolve, reject)
})
}
//获取渠道经理数据分析数据
apiQuery.getAppStatisticsStats_customer = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsStats_customer, 2, params, "GET", resolve, reject)
})
}
//获取车辆选装包
apiQuery.getAppOptions = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appOptions, 2, params, "GET", resolve, reject)
})
}
//切换角色
apiQuery.putAppResetgroupid = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(true, Config.api.appResetgroupid, 2, params, "PUT", resolve, reject)
})
}
export default apiQuery;
+2 -1
View File
@@ -50,7 +50,8 @@ function HttpNoUkeyRequest(loading, url, sessionChoose, params, method, callBack
}
wx.showToast({
title: res.data.msg,
icon: "none"
icon: "none",
duration: 2500
});
}
}
+1
View File
@@ -134,6 +134,7 @@ let combineUrl = (DATA) => {
let toEncrypt = (DATA) => {
// let secretKey = randomString()
let data = combineUrl(DATA)
//console.log(data)//加密原始数据
return md5.hex_md5(data);
}
+1 -147
View File
@@ -19,7 +19,7 @@ function getAjaxUserInfo(){
function isAuthUserInfo() {
return new Promise(function (resolve, reject) {
api.getUserInfo().then(res=>{
resolve(Boolean(res && res.nickname && res.headimg))
resolve(Boolean(res && res.headimg))
})
})
}
@@ -47,155 +47,9 @@ function isOpenCard() {
})
}
/**
* 获得用户位置,返回一个promise,同时间只会跑一个
* {
* lat,
* lng,
* from_storage //true表示是从缓存里获得, false表示从设置里获得
* }
*/
// function getUserLocation() {
// return new Promise((resolve, reject) => {
// // const lat = wx.getStorageSync('u_lat');
// // const lng = wx.getStorageSync('u_lng');
// // if (lat && lng) {
// // return resolve({
// // lat,
// // lng,
// // from_storage: true,
// // })
// // } else {
// const loading = wx.getStorageSync('loading_gps');
// if (loading) {
// setTimeout(() => {
// return resolve(this.getUserLocation());
// }, 30);
// return;
// }
// wx.setStorageSync('loading_gps', 1)
// wx.getSetting({
// success(res) {
// console.log("======获取用户地理位置=====")
// console.log(res);
// wx.getLocation({
// type: 'gcj02',
// success: function (res) {
// var lat = res.latitude
// var lng = res.longitude
// wx.setStorageSync('u_lat', lat)
// wx.setStorageSync('u_lng', lng)
// wx.removeStorageSync('loading_gps')
// return resolve({
// lat,
// lng,
// from_storage: false,
// })
// },
// fail: function (res) {
// console.log("用户没有授权地理位置")
// console.log(res);
// wx.removeStorageSync('loading_gps')
// wx.showModal({
// title: '提示',
// content: '请先授权地理位置权限',
// showCancel: false,
// success(res) {
// if (res.confirm) {
// console.log('用户点击确定')
// wx.openSetting({
// success(res) {
// console.log(res.authSetting)
// }
// })
// } else if (res.cancel) {
// console.log('用户点击取消')
// }
// }
// })
// return reject('用户没有授权地理位置')
// }
// })
// },
// })
// // }
// })
// }
const getUserLocation = function () {
return new Promise(function (resolve, reject) {
wx.getLocation({
type: 'wgs84',
success(res) {
app.setStorage('u_lat', res.latitude)
app.setStorage('u_lng', res.longitude)
resolve({
lat:res.latitude,
lng:res.longitude,
from_storage: false,
});
},
fail(res) {
app.printErrorClient('userLocationFail', ['错误信息:'+ JSON.stringify(res)])
_ModelForGetLocationModel(resolve, reject);
}
})
})
}
function _ModelForGetLocationModel(resolve, reject) {
wx.showModal({
title: '',
content: '检测到你未打开地理位置的权限,是否前往开启',
confirmText: '前往开启',
showCancel:false,
success(res) {
if (res.confirm) {
//成功的时候只执行一次(通过手动的时候就没执行了)
wx.openSetting({
success(res) {
wx.authorize({
scope: 'scope.userLocation',
success() {
// resolve("toggle");
wx.getLocation({
type: 'wgs84',
success(res) {
app.setStorage('u_lat', res.latitude)
app.setStorage('u_lng', res.longitude)
resolve({
lat:res.latitude,
lng:res.longitude,
from_storage: false,
});
}
})
},
fail() {
app.printErrorClient('userLocationFail',['错误信息:打开打开地理位置的权限,未设置'])
_ModelForGetLocationModel(resolve, reject);
}
})
}
})
} else if (res.cancel) {
app.printErrorClient('userLocationFail',['错误信息:用户点击取消'])
reject()
}
}
})
}
module.exports = {
getAjaxUserInfo,
isAuthUserInfo,
isBindMobile,
isOpenCard,
getUserLocation
// getLocation
}
+222
View File
@@ -0,0 +1,222 @@
import _ from '../../commons/js/commons'
import Canvas from '../../commons/js/utils/canvas'
let isGetImgInfo = false
const app = getApp()
Component({
//组件的属性列表
properties: {
isShow: {
type: Boolean,
value: false
},
customImg: {
type: String,
value: ''
},
codeImg: {
type: String,
value: ''
},
},
//组件的初始数据
data: {
imgs: [],
tempPosterPath: '',
showOptBtn:false,//操作按钮显示
},
attached: function () {
isGetImgInfo = false
},
//数据监听
observers: {
'isShow': function (e) {
if (e) {
this.setData({
showOptBtn:false,
})
this.createPoster()
}
},
'customImg': function (e) {
if (e) {
this.getImageInfo(this.data.customImg, 0)
}
},
'codeImg': function (e) {
if (e) {
this.getImageInfo(this.data.codeImg, 1)
}
},
},
//组件的方法列表
methods: {
// 转化网络图片,获取路径
getImageInfo(src, index) {
let that = this
isGetImgInfo = false
setTimeout(function () {
wx.getImageInfo({
src: src,
success: (res) => {
let arr = that.data.imgs
arr[index] = res
that.setData({
imgs: arr
})
isGetImgInfo = true
},
fail: (err) => {
console.log('error img is: ' + src)
}
})
}, 200)
},
//自定义海报
customizePoster(CTX){
if(this.data.customImg){
let that = this
let width = 600
let height = (parseFloat(this.data.imgs[0].height)/parseFloat(this.data.imgs[0].width))*600
this.setData({
canvasInfo:{
width: width+'px',
height: height+'px'
}
})
// CTX.setFillStyle('#ffffff')
// CTX.fillRect(0, 0,width+20, picheight+optheight+ftheight+20)
//底图
if (that.data.imgs[0]) {
CTX.drawImage(that.data.imgs[0].path, 0, 0, that.data.imgs[0].width, that.data.imgs[0].height, 0, 0, width, height)
}
//二维码
if (that.data.imgs[1]) {
CTX.drawImage(that.data.imgs[1].path,417, height-180,140,140)
}
setTimeout(function(){
CTX.save()
CTX.draw(true, function () {
wx.hideLoading()
that.saveCanvas()
})
},200)
}
},
//生成海报
createPoster() {
let that = this
wx.showLoading({
title: '正在生成',
})
if(isGetImgInfo){
this.setData({
tempPosterPath: ''
})
let ctx = wx.createCanvasContext('postercanvas', that)
that.customizePoster(ctx)
}
},
//临时存储canvas
saveCanvas() {
let that = this
wx.canvasToTempFilePath({
canvasId: 'postercanvas',
quality: 1,
success: (res) => {
// this.tempFilePath = res.tempFilePath
that.setData({
'tempPosterPath': res.tempFilePath
})
setTimeout(function () {
that.setData({
showOptBtn:true,
})
},200)
},
fail: (res) => {
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
}
}, this)
},
//保存到相册
saveToAblum() {
let that = this
wx.saveImageToPhotosAlbum({
filePath: this.data.tempPosterPath,
success: (res) => {
_.utils.$toast('保存成功')
},
fail: (err) => {
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
_.utils.$toast('您已取消保存')
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
if (res) {
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
}
})
}
}
})
},
//隐藏海报弹框
hidePoster() {
this.setData({
isShow: false
})
wx.hideLoading()
},
//预览图片
preview() {
wx.previewImage({
current: this.data.tempPosterPath, // 当前显示图片的http链接
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
})
},
//推送链接
pushLink(e) {
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//复制内容
copyWord(e){
if(e.currentTarget.dataset.tx){
wx.setClipboardData({
data: e.currentTarget.dataset.tx,
success (res) {
_.utils.$toast('复制成功')
}
})
}else{
_.utils.$toast('目前无文案')
}
},
}
})
+4
View File
@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}
+16
View File
@@ -0,0 +1,16 @@
<!-- components/poster/index.wxml -->
<view class="poster fixed {{isShow?'show':'hide'}}">
<view class="poster-bg absolute top-0 bottom-0 left-0 right-0" bindtap="hidePoster"></view>
<view class="poster-main bg-fff inner40 pt70 poster-main-img absolute box-center-middle ulib-r10">
<view class="absolute top-0 right-0 mt5 mr5 inner30 bg-fff img-50x50" bindtap="hidePoster"><text class="absolute box-center-middle iconfont icon-guanbi1 text-bold font-40 color-999"></text></view>
<canvas canvas-id='postercanvas' class='canvas absolute box-center-middle' style="width:{{canvasInfo.width}};height:{{canvasInfo.height}}"></canvas>
<view wx:if="{{showOptBtn}}" class="overflowhidden">
<scroll-view scroll-y="true" style="max-height:1000rpx;">
<image class="block wp100 ulib-r10" wx:if="{{tempPosterPath}}" src="{{tempPosterPath}}" mode="widthFix" catchtap="preview" />
</scroll-view>
</view>
<view class="mt40 fn-flex" wx:if="{{showOptBtn}}">
<button class="fn-flex-item btn-ffa73d-ff7a28 font-32 color-fff ulib-r750 text-center ml20 mr20" catchtap="saveToAblum">保存分享</button>
</view>
</view>
</view>
+26
View File
@@ -0,0 +1,26 @@
@import "../../commons/css/common.wxss";
.poster{
top: 0;
left: 100%;
width: 100%;
height: 100%;
z-index: 9999;
}
.show{
left: 0;
}
.poster-bg{
z-index: 9998;
background-color: rgba(0,0,0,.6);
}
.poster-main{
z-index: 9999;
}
.poster-main-img{
width:580rpx;
}
.poster-main-img canvas{
left: 1000%;
}
.btn-ffa73d-ff7a28{background-image:linear-gradient(#ffa73d,#ff7a28);border:none;}
.btn-ffa73d-ff7a28::after{border:none;}
+139 -23
View File
@@ -1,32 +1,105 @@
import _ from '../../commons/js/commons'
const app = getApp()
Component({
/**
* 组件的属性列表
*/
//组件的属性列表
properties: {
isShow: {
type: Boolean,
value: false
},
userInfo:{
type: Object,
value:""
},
//是否显示授权用户信息
isShowProfile: {
type: Boolean,
value: true
},
//是否强制显示授权用户信息
isForceProfile: {
type: Boolean,
value:false
},
title:{
type: String,
value: ''
},
cancelbtn:{
type: String,
value: ''
},
submitbtn:{
type: String,
value: ''
},
tip:{
type: String,
value: ''
},
type:{
type: String,
value: ''
},
zindex: {
type: Number,
value: 10
},
//专题模式登录样式
mode:{
type: String,
value: ''
},
modeDate:{
type: Object,
value:""
},
},
/**
* 组件的初始数据
*/
//组件的初始数据
data: {
code:'',
isRunning:false,
userCurrInfo:"",
isBindMobile:false
},
lifetimes: {
attached: function () {
wx.login({
success: res => {
// 在组件实例进入页面节点树时执行
if (this.data.type == "mobile") {
if (!this.data.userInfo){
_.apiQuery.getUserInfo("",false).then(res => {
this.setData({
userCurrInfo: res
})
})
}else{
this.setData({
code: res.code,
userCurrInfo: this.data.userInfo
})
}
}
if (this.data.type == "userinfo") {
_.userManager.isAuthUserInfo().then(re => {
if (re) {
this.setData({
isShowProfile:false
})
}else{
this.setData({
isShowProfile:true
})
}
})
}
},
detached: function () {
// 在组件实例被从页面节点树移除时执行
this.setData({
isBindMobile:false,
isShow:false
})
},
},
@@ -35,6 +108,8 @@ Component({
* 组件的方法列表
*/
methods: {
//catchtap
emptyfunc(){},
//授权用户信息
getUserProfile(){
let that = this
@@ -45,32 +120,73 @@ Component({
wx.getUserProfile({
desc:'获取你的昵称、头像、地区及性别',//不写不弹提示框
success:function(res){
let params = {};
params['code'] = that.data.code;
params['userInfo'] = res.userInfo;
that.setData({
isShow: false,
})
_.apiQuery.putAppUser(params).then(res => {
_.apiQuery.putUserInfo(params).then(res => {
that.setData({
isRunning:false
});
wx.showToast({
title: '授权成功',
icon: 'success',
duration: 2000
})
});
that.successEvent()
_.eventBus.emit("isShowProfile",false)
})
},
fail:function(err){
that.setData({
isRunning:false
});
console.log('拒绝授权')
wx.showToast({
title: '您拒绝授权,将无法进行更多操作!',
icon: 'none',
duration: 2000
});
}
})
},
//授权手机号码
getPhoneNumber(e) {
if (e.detail.errMsg && e.detail.errMsg.indexOf('ok') > -1){
let that = this;
_.apiQuery.authUserPhone(e).then(res=>{
_.apiQuery.getUserInfo()
this.setData({
isBindMobile: true
})
})
}else{
app.printErrorClient('failGetPhoneNumber',['用户拒绝授权手机号码:'+JSON.stringify(e)])
}
},
onShow:function () {
this.setData({
isShow: true
});
this.triggerEvent('onShow', {
type: this.data.type
});
},
onClose: function () {
this.setData({
isShow: false
});
this.triggerEvent('onClose', {
type: this.data.type
});
if(this.data.type=="mobile" && this.data.isBindMobile){
this.setData({
isBindMobile:false
})
this.successEvent()
}
},
//成功回调方法
successEvent(){
this.triggerEvent('onSuccess', {
type: this.data.type
});
},
}
})
+1 -4
View File
@@ -1,6 +1,3 @@
{
"component": true,
"usingComponents": {
"lcb-msg": "/components/msg/index"
}
"component": true
}
+56 -10
View File
@@ -1,16 +1,62 @@
<!--
用法
<lcb-auth isShow="true" bind:onSuccess="authEvent"></lcb-auth>
type="mobile"用法
<lcb-auth type="mobile" isShow="true" bind:onSuccess="authEvent" bind:onClose="authFailEvent"></lcb-auth>
type="userinfo"用法 isForceProfile需要强制更新用户信息的时候才添加
<lcb-auth type="userinfo" isForceProfile="true" isShowProfile="{{isShowProfile}}" bind:onSuccess="authEvent"></lcb-auth>
-->
<!-- <view catch:tap="emptyfunc" wx:if="{{type=='userinfo' || !type}}">
<button open-type="getUserInfo" class="auth-btngetUserInfo" bindgetuserinfo="getUserInfo">获取用户信息</button>
</view> -->
<lcb-msg isShow="{{isShow}}" isHasClose="{{true}}">
<view slot="content" class="inner40 text-center">
<view class='pt20 text-center'><i class="iconfont font-80 color-00c800 icon-weixin"></i></view>
<view class='pt20 pb30 text-center font-28 color-666'>
<view>授权您的公开信息(昵称和头像)</view>
<view>便于查看预定信息哦~</view>
<view catch:tap="emptyfunc" wx:if="{{type=='userinfo' || !type}}">
<block wx:if="{{isForceProfile || isShowProfile}}">
<button class="auth-btngetUserInfo" bindtap="getUserProfile">获取用户信息</button>
</block>
<block wx:else>
<button class="auth-btngetUserInfo" bindtap="successEvent">已获取用户信息</button>
</block>
</view>
<view class="auth-dialog-special inner40" style="z-index:{{zindex+1}};" catchtouchmove="true" wx:if="{{type=='mobile' && isShow && mode=='special'}}">
<view class="mt30 pt2" wx:if="{{!isBindMobile}}">
<image class='block auth-dialog-logo box-shadow-000-10-10 img-100x100 ulib-r750' src="{{modeDate.logo}}" lazy-load="{{true}}" mode="scaleToFill"></image>
<view class="mt5 text-center font-32 text-bold" wx:if="{{modeDate.title}}">{{modeDate.title}}</view>
<view class="relative special-intro bg-f5 mt30 inner30 line-height-16 font-28 color-333 ulib-r10">{{modeDate.content}}</view>
<view class="mt30">
<button class="btn-1a1a1a text-spacing-10 font-34 color-fff ulib-r10" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">{{modeDate.btn}}</button>
</view>
<button class='mt20 btn-36afa2 text-center font-32 color-fff ulib-r10' hover-class="btn-36afa2-hover" bindtap="getUserProfile">授权登录</button>
<text class="special-close iconfont icon-guanbi font-60 color-fff" bindtap="onClose"></text>
</view>
</lcb-msg>
<view class="pt20 pb20" wx:else>
<view class="text-center font-32 text-bold">{{modeDate.success}}</view>
<view class="relative special-intro bg-f5 mt30 inner30 line-height-16 font-28 color-333 ulib-r10">{{modeDate.content}}</view>
<view class="mt30 pl70 pr70">
<button class="btn-border-1a1a1a font-32 color-1a ulib-r10" bindtap="onClose">知道了</button>
</view>
</view>
</view>
<view class="auth-dialog" style="z-index:{{zindex+1}};" catchtouchmove="true" wx:elif="{{type=='mobile' && isShow}}">
<view wx:if="{{!isBindMobile}}">
<view class="cap">{{title || '立即登录'}}</view>
<view class="intro">授权手机号即可登录狸车小程序,了解更多狸车资讯,一手活动特惠即刻拥有。</view>
<view class="btn-list">
<view class="item-cell">
<button class="btn-cancel" bindtap="onClose">{{cancelbtn || '取消'}}</button>
</view>
<view class="item-cell">
<button class="btn-confirm" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">{{submitbtn || '授权手机号'}}</button>
</view>
</view>
</view>
<view wx:else>
<view class="cap">{{tip || '恭喜您,登录成功!'}}</view>
<view class="btn-list">
<view class="item-cell">
<button class="btn-cancel" bindtap="onClose">知道了</button>
</view>
</view>
</view>
</view>
<view class="auth-dialog-mask" style="z-index:{{zindex}};" catchtouchmove="true" wx:if="{{isShow && type=='mobile'}}"></view>
+116 -1
View File
@@ -1 +1,116 @@
@import "../../commons/css/common.wxss";
@import "../../commons/css/common.wxss";
.auth-dialog{
position: fixed;
left:50%;
top:50%;
transform: translate(-50%,-50%);
width:88%;
padding:70rpx 60rpx;
background-color:#fff;
box-sizing: border-box;
border-radius: 10rpx;
overflow: hidden;
z-index: 10;
}
.auth-dialog-special{
position: fixed;
left:50%;
top:50%;
transform: translate(-50%,-50%);
width:80%;
background-color:#fff;
box-sizing: border-box;
border-radius: 10rpx;
z-index: 10;
}
.auth-btngetUserInfo{
position: absolute;
left:0;
top:0;
right:0;
bottom:0;
opacity: 0;
}
.auth-dialog .cap{
color:#000;
font-size: 36rpx;
line-height: 36rpx;
text-align: center;
font-weight: bold;
}
.auth-dialog .intro{
margin-top:30rpx;
color:#666;
font-size: 28rpx;
line-height: 46rpx;
}
.auth-dialog .btn-list{
display: flex;
margin-top:40rpx;
}
.auth-dialog .btn-list .item-cell{
flex: 1;
padding:0 10rpx;
}
.auth-dialog .btn-list button{
width: 220rpx;
height: 72rpx;
line-height: 72rpx;
overflow: hidden;
border-radius: 50rpx;
font-size: 30rpx;
box-sizing: border-box;
}
.auth-dialog .btn-list button.btn-cancel{
background: #fff;
color: #1a1a1a;
line-height: 68rpx;
border:1rpx solid #1a1a1a;
}
.auth-dialog .btn-list button.btn-confirm{
background: #1a1a1a;
color: #fff;
}
.auth-dialog .btn-list button::after{
border:none;
}
.auth-dialog-mask{
position: fixed;
left:0;
right: 0;
top:0;
bottom:0;
background-color: rgba(0, 0, 0, 0.6);
}
.auth-dialog-logo{
position:absolute;
top:-50rpx;
left:50%;
transform:translate(-50%,0);
}
.special-intro::before{
display:block;
position:absolute;
top:-20rpx;
left:50%;
transform:translate(-50%,0);
width: 0;
height: 0;
border-color: transparent transparent #f5f5f5 transparent;
border-style: solid;
border-width: 0 20rpx 20rpx 20rpx;
content:"";
}
.special-close{
position:absolute;
bottom:-100rpx;
left:50%;
transform:translate(-50%,0);
}
@@ -0,0 +1,277 @@
import _ from '../../commons/js/commons'
import Canvas from '../../commons/js/utils/canvas'
let isGetImgInfo = false
const app = getApp()
Component({
//组件的属性列表
properties: {
source: {
type: String,
value: 'goods'
},
isShow: {
type: Boolean,
value: false
},
isCreateQrcode: {
type: Boolean,
value: false
},
qccodeid: {
type: String,
value: ''
},
customImg: {
type: String,
value: ''
},
slogan: {
type: String,
value: ''
},
moments: {
type: String,
value: ''
},
},
//组件的初始数据
data: {
//headImg:app.getStorageByKey("userInfo").headimg,
defaultQrcode: _.config.imgUrl + 'common/qr.jpg',
imgs: [],
tempPosterPath: '',
showOptBtn:false,//操作按钮显示
},
attached: function () {
isGetImgInfo = false
},
//数据监听
observers: {
'isCreateQrcode': function (e) {
if (e) {
this.getMaterialHomeQrcode()
}
},
'isShow': function (e) {
if (e) {
this.setData({
showOptBtn:false,
})
this.createPoster()
}
},
'customImg': function (e) {
if (e) {
// this.setData({
// headImg:app.getStorageByKey("userInfo").headimg,
// })
//头像
//this.getImageInfo(this.data.headImg, 4)
this.getImageInfo(this.data.customImg, 3)
}
},
},
//组件的方法列表
methods: {
// 转化网络图片,获取路径
getImageInfo(src, index) {
let that = this
isGetImgInfo = false
setTimeout(function () {
wx.getImageInfo({
src: src,
success: (res) => {
let arr = that.data.imgs
arr[index] = res
that.setData({
imgs: arr
})
isGetImgInfo = true
},
fail: (err) => {
console.log('error img is: ' + src)
}
})
}, 200)
},
//获取二维码
getMaterialHomeQrcode() {
let params = {};
params['page'] = 'pages/special2/index';
params['scene'] = this.data.qccodeid+'_'+app.getStorageByKey("userInfo").biz_id;
params['width'] = 1280;
_.apiQuery.getMaterialHomeQrcode(params).then(res => {
this.getImageInfo(res.data.url, 2)
}).catch(res => {
//this.getImageInfo(this.data.defaultQrcode, 2)
})
},
//自定义海报
customizePoster(CTX){
if(this.data.customImg){
let that = this
this.setData({
canvasInfo:{
width: parseFloat(this.data.imgs[3].width)+'px',
height: parseFloat(this.data.imgs[3].height)+'px'
}
})
console.log(this.data.imgs[3].width)
console.log(this.data.imgs[3].height)
//背景
if (that.data.imgs[3]) {
CTX.drawImage(that.data.imgs[3].path, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height, 0, 0, that.data.imgs[3].width, that.data.imgs[3].height)
}
// //头像
// if (that.data.imgs[4]) {
// Canvas.circleImage(CTX,that.data.imgs[4].path,20, (that.data.imgs[3].height-170)/2,22/2)
// }
// //昵称
// Canvas.drawTextOverflow(CTX, app.getStorageByKey("userInfo").nickname, 150, 1, 14, '#fff', 20, 46, (that.data.imgs[3].height-132)/2)
// //标语
// if (that.data.slogan) {
// Canvas.drawTextOverflow(CTX, that.data.slogan, 200, 2, 11, '#fff', 17, 20, (that.data.imgs[3].height-85)/2)
// }
// //标语
// if (that.data.slogan) {
// Canvas.drawTextOverflow(CTX, that.data.slogan, 180, 2, 11, '#666', 17, 20, (that.data.imgs[3].height-100)/2)
// }
//二维码
if (that.data.imgs[2]) {
if(this.data.imgs[3].width>this.data.imgs[3].height){
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width)-parseFloat(this.data.imgs[3].height/5.5)-30, parseFloat(this.data.imgs[3].height)-parseFloat(this.data.imgs[3].height/5.5)-30,parseFloat(this.data.imgs[3].height/11))
}else{
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width)-parseFloat(this.data.imgs[3].width/5.5)-30, parseFloat(this.data.imgs[3].height)-parseFloat(this.data.imgs[3].width/5.5)-30,parseFloat(this.data.imgs[3].width/11))
}
}
setTimeout(function(){
CTX.save()
CTX.draw(true, function () {
wx.hideLoading()
that.saveCanvas()
})
},200)
}
},
//生成海报
createPoster() {
let that = this
wx.showLoading({
title: '正在生成',
})
if(isGetImgInfo){
this.setData({
tempPosterPath: ''
})
let ctx = wx.createCanvasContext('postercanvas', that)
that.customizePoster(ctx)
}
},
//临时存储canvas
saveCanvas() {
let that = this
wx.canvasToTempFilePath({
canvasId: 'postercanvas',
quality: 1,
success: (res) => {
// this.tempFilePath = res.tempFilePath
that.setData({
'tempPosterPath': res.tempFilePath
})
setTimeout(function () {
that.setData({
showOptBtn:true,
})
},200)
},
fail: (res) => {
app.printErrorClient('poseterfail',['错误信息:临时存储canvas失败',JSON.stringify(res)])
}
}, this)
},
//保存到相册
saveToAblum() {
let that = this
wx.saveImageToPhotosAlbum({
filePath: this.data.tempPosterPath,
success: (res) => {
_.utils.$toast('保存成功')
},
fail: (err) => {
app.printErrorClient('poseterfail',['错误信息:图片保存失败',JSON.stringify(err)])
if (err.errMsg == 'saveImageToPhotosAlbum:fail cancel') {
_.utils.$toast('您已取消保存')
} else if (err.errMsg == 'saveImageToPhotosAlbum:fail auth deny') {
_.utils.$modal('提示', '保存图片失败,您可以点击确定设置获取相册权限后再尝试保存!', '去授权').then(res => {
if (res) {
wx.openSetting({}) // 打开小程序设置页面,可以设置权限
}
})
}
}
})
},
//隐藏海报弹框
hidePoster() {
this.setData({
isShow: false
})
wx.hideLoading()
},
//预览图片
preview() {
wx.previewImage({
current: this.data.tempPosterPath, // 当前显示图片的http链接
urls: [this.data.tempPosterPath] // 需要预览的图片http链接列表
})
},
//推送链接
pushLink(e) {
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//复制内容
copyWord(e){
if(e.currentTarget.dataset.tx){
wx.setClipboardData({
data: e.currentTarget.dataset.tx,
success (res) {
_.utils.$toast('复制成功')
}
})
}else{
_.utils.$toast('目前无文案')
}
},
}
})
+1 -1
View File
@@ -150,7 +150,7 @@ Component({
//二维码
if (that.data.imgs[2]) {
Canvas.circleImage(CTX,that.data.imgs[2].path,(that.data.imgs[3].width-182)/2, (that.data.imgs[3].height-182)/2,70/2)
Canvas.circleImage(CTX,that.data.imgs[2].path,parseFloat(this.data.imgs[3].width/2)-parseFloat(this.data.imgs[3].width/8.5)-16, parseFloat(this.data.imgs[3].height/2)-parseFloat(this.data.imgs[3].width/8.5)-16,parseFloat(this.data.imgs[3].width/17))
}
setTimeout(function(){
+1 -1
View File
@@ -1,7 +1,7 @@
<view class="footer text-center">
<view>
<text class="support-tx">Powered by</text>
<image class='inline-block img-30x30' mode='aspectFit' src='https://qs.haodian.cn/wechat_app/common/lc-logo-gray.png?v=20210721'></image>
<image class='inline-block img-30x30' mode='aspectFit' src='https://qs.haodian.cn/wechat_app/common/lc-logo-gray.png?v=220223'></image>
<text class="support-tx">狸车</text>
</view>
</view>
+5 -1
View File
@@ -24,6 +24,10 @@ Component({
type: Boolean,
value: false
},
isCustomTabBar: { //是否有底部自定义TabBar
type: Boolean,
value: false
},
iconType: { //图标
type: String,
value: ''
@@ -63,7 +67,7 @@ Component({
isShow: false
})
this.triggerEvent('closeevent', {
isClose: true
bubbles: true
})
},
aaa(){
+2 -2
View File
@@ -1,7 +1,7 @@
<!-- "usingComponents": {
"lcb-msg": "/components/msg/index"
},
<lcb-msg closeevent="closeevent"></lcb-msg>
<lcb-msg bind:closeevent="closeevent"></lcb-msg>
关闭方法: closeevent
@@ -10,7 +10,7 @@
<view slot="opt">这里是插入到组件slot中的内容</view> -->
<view class="lcb-msg" style="{{isShow?'display:block':'display:none'}}" catchmove="aaa">
<view class="msgBg" style="background-color: rgba(0, 0, 0, .6);"></view>
<view class="msgMain {{isShow?'active':''}}" style="{{isTransparent?'background-color: transparent;':''}}" catchmove="aaa">
<view class="msgMain {{isShow?'active':''}}" style="{{isTransparent?'background-color: transparent;':''}}{{isCustomTabBar?'margin-top: -95rpx;':''}}" catchmove="aaa">
<block wx:if="{{isHasClose !=''}}">
<view wx:if="{{isHasClose=='up'}}" class="close up">
<text class="iconfont icon-guanbi1 color-fff" bindtap="close"></text>
+236 -44
View File
@@ -3,9 +3,14 @@ const app = getApp()
Page({
data: {
imgUrl:_.config.imgUrl,
photos:[],
photos:[],//异常报备
note:'',
isShowReport:false,
isShowReport:false,//是否显示报备异常弹窗
isShowTransfer:false,//是否显示确认弹窗
transport:[],//请上传运输单
id:'',//查看id
tran_id:'',//操作ID
mileage:'',//里程数
},
onLoad: function (options) {
for (let key in options) {
@@ -18,16 +23,22 @@ Page({
},
onShow: function () {
},
//获取订单详情
getAppTransfer(){
let params = {};
params['id'] = this.data.id;
if(this.data.id != ''){
params['id'] = this.data.id;
}
if(this.data.tran_id != ''){
params['tran_id'] = this.data.tran_id;
}
_.apiQuery.getAppTransfer(params).then(res=>{
this.setData({
info:res.data,
transport:res.data.transport.imgs,
})
wx.stopPullDownRefresh()
@@ -36,10 +47,10 @@ Page({
},
//选择图片
chooseImg() {
chooseImg(e) {
let that = this
wx.chooseImage({
count: 10 - this.data.photos.length, // 默认10
count: e.currentTarget.dataset.amount - this.data.photos.length, // 默认10
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res1) {
@@ -80,8 +91,8 @@ Page({
let imgdata = JSON.parse(res.data)
let list = []
list.push({
img:imgdata.data.url,
img_url:imgdata.data.full_url,
value:imgdata.data.url,
src:imgdata.data.full_url,
})
that.setData({
photos: that.data.photos.concat(list),
@@ -107,7 +118,7 @@ Page({
})
},
//显示短信弹框
//显示报备异常弹框
optShowReport(e){
this.setData({
isShowReport:!this.data.isShowReport,
@@ -117,6 +128,17 @@ Page({
})
},
//显示确认弹框
optShowTransfer(e){
this.setData({
isShowTransfer:!this.data.isShowTransfer,
photos:[],
mileage:'',
optType:e.currentTarget.dataset.type?e.currentTarget.dataset.type:'',
optid:e.currentTarget.dataset.id?e.currentTarget.dataset.id:'',
})
},
//拨打电话
call(e) {
wx.makePhoneCall({
@@ -133,51 +155,128 @@ Page({
//查看图片
previewImage: function (e) {
wx.previewImage({
current:this.data.info.abnormal.imgs[0],
urls:this.data.info.abnormal.imgs,
})
if(e.currentTarget.dataset.type=='abnormal'){
wx.previewImage({
current:this.data.info.abnormal.imgs[0],
urls:this.data.info.abnormal.imgs,
})
}else if(e.currentTarget.dataset.type=='transport'){
let transportImg = []
this.data.info.transport.imgs.forEach(item => {
transportImg.push(item.src)
})
wx.previewImage({
current:transportImg[0],
urls:transportImg,
})
}else if(e.currentTarget.dataset.type=='start_mileage'){
let start_mileage = []
this.data.info.transport.start_mileage.imgs.forEach(item => {
start_mileage.push(item.src)
})
wx.previewImage({
current:start_mileage[0],
urls:start_mileage,
})
}else if(e.currentTarget.dataset.type=='end_mileage'){
let end_mileage = []
this.data.info.transport.end_mileage.imgs.forEach(item => {
end_mileage.push(item.src)
})
wx.previewImage({
current:end_mileage[0],
urls:end_mileage,
})
}
else if(e.currentTarget.dataset.type=='edit_transport'){
let transportImg = []
this.data.transport.forEach(item => {
transportImg.push(item.src)
})
wx.previewImage({
current:e.currentTarget.dataset.current,
urls:transportImg,
})
}
else if(e.currentTarget.dataset.type=='edit_photos'){
let photos = []
this.data.photos.forEach(item => {
photos.push(item.src)
})
wx.previewImage({
current:e.currentTarget.dataset.current,
urls:photos,
})
}
},
//确认发车/接车
putAppTransfer(e) {
putAppTransfer() {
let that = this
let params = {};
params['id'] = e.currentTarget.dataset.id;
_.apiQuery.putAppTransfer(params).then(res => {
if (that.data.mileage == ''){
wx.showToast({
title: '请填定里程数',
icon: 'none'
})
}else if(that.data.photos.length==0){
wx.showToast({
title: '请拍照上传',
icon: 'none'
})
}else{
that.setData({
submitFlag: false,
submitFlag: true,
})
//刷新列表页
let pages = getCurrentPages();
let prevPage = null; //上一个页面
if (pages.length >= 2) {
prevPage = pages[pages.length - 2]; //上一个页面
if(prevPage.route == 'pages/allot/list/index'){
prevPage.onPullDownRefresh()
}
let params = {};
params['id'] = that.data.optid;
if(that.data.optType==2){
let start_mileage = that.data.info.transport.start_mileage?that.data.info.transport.start_mileage:{}
start_mileage.value = that.data.mileage
start_mileage.imgs = that.data.photos
params['start_mileage'] = start_mileage;
}else if(that.data.optType==3){
let end_mileage = that.data.info.transport.end_mileage?that.data.info.transport.end_mileage:{}
end_mileage.value = that.data.mileage
end_mileage.imgs = that.data.photos
params['end_mileage'] = end_mileage;
}
_.apiQuery.putAppTransfer(params).then(res => {
wx.showModal({
title: '操作成功',
content: '',
confirmText: "返回",
confirmColor: "#36afa2",
showCancel:false,
success(res) {
if (res.confirm) {
wx.navigateBack({
delta: 1
})
let pages = getCurrentPages();
let prevPage = null; //上一个页面
if (pages.length >= 2) {
prevPage = pages[pages.length - 2]; //上一个页面
if(prevPage.route == 'pages/allot/list/index'){
prevPage.onPullDownRefresh()
}
}
})
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
that.setData({
submitFlag: false,
isShowTransfer: false,
})
wx.showModal({
title: '操作成功',
content: '',
confirmText: "返回",
confirmColor: "#36afa2",
showCancel:false,
success(res) {
if (res.confirm) {
wx.navigateBack({
delta: 1
})
}
}
})
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
},
//报备异常
@@ -203,7 +302,7 @@ Page({
if(that.data.photos.length > 0){
let imgs = []
that.data.photos.forEach(item => {
imgs.push(item.img)
imgs.push(item.value)
})
params['imgs'] = imgs;
}
@@ -237,6 +336,99 @@ Page({
}
},
/*上传运输单*/
transportUpload(e) {
let that = this
wx.chooseImage({
count: 10 - that.data.transport.length, //
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res1) {
wx.showLoading({
title: '图片上传中',
})
let transport=that.data.transport
let k = 0
for (let i = 0; i < res1.tempFilePaths.length; i++) {
//上传图片
wx.uploadFile({
url:_.config.api.upImg,
filePath:res1.tempFilePaths[i],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
k = k + 1
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let imgdata = resp.data
let list = []
list.push({
value:imgdata.data.url,
src:imgdata.data.full_url,
})
transport=transport.concat(list)
if(k == res1.tempFilePaths.length){
let params = {};
params['id'] = that.data.info.id;
params['type'] = 0;
let imgs = []
transport.forEach(item => {
imgs.push(item.value)
})
params['imgs'] = imgs;
_.apiQuery.postAppTransferTransport(params).then(res => {
that.setData({
transport,
})
})
}
}else{
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
})
}
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
},
// 编辑页面删除图片
delTransport(e){
let transport = this.data.transport
transport.splice(e.currentTarget.dataset.index, 1)
let params = {};
params['id'] = this.data.info.id;
let imgs = []
transport.forEach(item => {
imgs.push(item.value)
})
params['imgs'] = imgs;
_.apiQuery.postAppTransferTransport(params).then(res => {
this.setData({
transport,
})
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.getAppTransfer()
+4 -1
View File
@@ -1,3 +1,6 @@
{
"usingComponents": {}
"navigationBarTitleText": "调拨详情",
"usingComponents": {
}
}
+129 -19
View File
@@ -1,11 +1,12 @@
<view class="container">
<view class="inner30">
<view class="inner30 {{info.status==1?'pb200':'pb100'}}">
<view class="relative bg-fff ulib-r10 box-shadow-000-10-10">
<view class="relative inner40 pr180 bbs-1-eb">
<view class="font-28">
<text class="font-32">{{info.transport.name}}</text>
<text class="font-28 color-666">({{info.transport.mobile}})</text>
</view>
<view class="mt10 font-22 color-666">身份证:{{info.transport.cardid}}</view>
<view class="mt10 font-22 color-999">{{info.transport.title}}</view>
<view class="absolute right-0 box-middle">
<view class="inline-block relative img-55x55 mr40 bg-333 font-28 color-fff ulib-r750" catchtap="call">
@@ -31,24 +32,79 @@
<view class="font-32">报备异常</view>
<view class="mt20 font-28 color-666" wx:if="{{info.abnormal.note}}">{{info.abnormal.note}}</view>
<view class="mt20" wx:if="{{info.abnormal.imgs.length>0}}">
<view class="img-200x180 relative" bindtap="previewImage">
<view class="img-200x180 relative" bindtap="previewImage" data-type="abnormal">
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.abnormal.imgs.length>1}}">{{info.abnormal.imgs.length}}张</view>
<image class='img-200x180 ulib-r10' src='{{info.abnormal.imgs[0]}}' mode='aspectFill'></image>
</view>
</view>
</view>
<view class="pl40 pr40 pb30">
<view class="font-32" wx:if="{{info.status==1}}">请上传运输单</view>
<view class="font-32" wx:elif="{{info.transport.imgs.length>0}}">请上传运输单</view>
<view class="mt20" wx:if="{{info.status==1}}">
<scroll-view class="space-nowrap" scroll-x="true">
<block wx:for='{{transport}}' wx:for-item='transport' wx:for-index="index" wx:key='transport'>
<view class="inline-block img-200x180 mr20 relative">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delTransport" data-index="{{index}}" ></i>
<image class='img-200x180 ulib-r10' src='{{transport.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_transport" data-current="{{transport.src}}"></image>
</view>
</block>
<block wx:if="{{transport.length<10}}">
<view class="inline-block text-center bg-f8 img-200x180 mr20 relative ulib-r10 overflowhidden" bindtap="transportUpload">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
</block>
</scroll-view>
</view>
<view class="mt20" wx:elif="{{info.transport.imgs.length>0}}">
<view class="img-200x180 relative" bindtap="previewImage" data-type="transport">
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.imgs.length>1}}">{{info.transport.imgs.length}}张</view>
<image class='img-200x180 ulib-r10' src='{{info.transport.imgs[0].src}}' mode='aspectFill'></image>
</view>
</view>
</view>
<view class="pl40 pr40 pb30" wx:if="{{info.transport.start_mileage.imgs.length>0}}">
<view class="font-32">发车信息</view>
<view class="mt20 font-28 color-666">
{{info.transport.start_mileage.title}}{{info.transport.start_mileage.value}}{{info.transport.start_mileage.tag}}
</view>
<view class="mt20">
<view class="img-200x180 relative" bindtap="previewImage" data-type="start_mileage">
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.start_mileage.imgs.length>1}}">{{info.transport.start_mileage.imgs.length}}张</view>
<image class='img-200x180 ulib-r10' src='{{info.transport.start_mileage.imgs[0].src}}' mode='aspectFill'></image>
</view>
</view>
</view>
<view class="pl40 pr40 pb30" wx:if="{{info.transport.end_mileage.imgs.length>0}}">
<view class="font-32">接车信息</view>
<view class="mt20 fn-clear font-28 color-666">
{{info.transport.end_mileage.title}}{{info.transport.end_mileage.value}}{{info.transport.end_mileage.tag}}
</view>
<view class="mt20">
<view class="img-200x180 relative" bindtap="previewImage" data-type="end_mileage">
<view class="absolute box-center-middle font-28 color-fff z-index-1" wx:if="{{info.transport.end_mileage.imgs.length>1}}">{{info.transport.end_mileage.imgs.length}}张</view>
<image class='img-200x180 ulib-r10' src='{{info.transport.end_mileage.imgs[0].src}}' mode='aspectFill'></image>
</view>
</view>
</view>
</view>
<view class="mt30 font-24 color-999"><i class="mr5 iconfont icon-tishi"></i>请仔细检查车辆外观与随车物品是否正常,如有异常点击下方报备异常。</view>
</view>
</view>
<view class="fixed left-0 right-0 bottom-0 bg-fff-op90 inner40 fn-flex safe-pb">
<view class="fixed left-0 right-0 bottom-0 bg-fff-op90 inner40 fn-flex safe-pb" wx:if="{{info.status==1}}">
<block wx:for="{{info.btn}}" wx:key='index'>
<block wx:if="{{item.type==1}}">
<button class="wp100 bds-2-36afa2 bg-fff mr20 pt10 pb10 text-center font-32 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover" bindtap="optShowReport" data-id="{{item.id}}">{{item.title}}</button>
</block>
<block wx:elif="{{item.type==2}}">
<button class="wp100 btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppTransfer" data-id="{{item.id}}">{{item.title}}</button>
<block wx:elif="{{item.type==2||item.type==3}}">
<button class="wp100 btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="optShowTransfer" data-type="{{item.type}}" data-id="{{item.id}}">{{item.title}}</button>
</block>
</block>
</view>
@@ -59,35 +115,53 @@
<view class="font-36 text-center">报备异常</view>
</view>
<view class="mt30 pl30 pr40">
<scroll-view class="space-nowrap" style="width:540rpx;" scroll-x="true">
<scroll-view class="space-nowrap text-center" style="width:540rpx;" scroll-x="true">
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
<view class="inline-block img-200x180 ml10 mr10 relative">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
<image class='img-200x180 ulib-r10' src='{{photos.img_url}}' mode='aspectFill'></image>
<image class='img-200x180 ulib-r10' src='{{photos.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_photos" data-current="{{photos.src}}"></image>
</view>
</block>
<block wx:if="{{photos.length==0}}">
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
</block>
<block wx:elif="{{photos.length==1}}">
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
</block>
<block wx:elif="{{photos.length<10}}">
<view class="inline-block img-200x180 ml10 mr10 relative" bindtap="chooseImg">
<image class='img-200x180 ulib-r10' src='{{imgUrl}}allot/add-pic.jpg' mode='aspectFill'></image>
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
</block>
</scroll-view>
@@ -101,4 +175,40 @@
<button disabled="{{submitFlag}}" bindtap="postAppTransfer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowTransfer}}">
<view slot="content">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center" wx:if="{{optType==2}}">发车信息</view>
<view class="font-36 text-center" wx:elif="{{optType==3}}">接车信息</view>
</view>
<view class="relative mt20 pl40 pr100">
<input class="mt15 wp100 pl20 pr20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请填写里程数" type="digit" style="height:70rpx;" model:value='{{mileage}}'/>
<view class="absolute box-middle right-0 pr40 font-32 color-666">km</view>
</view>
<view class="mt30 pb40 pl30 pr40">
<scroll-view class="space-nowrap text-center" style="width:540rpx;" scroll-x="true">
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
<view class="inline-block img-200x180 ml10 mr10 relative">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-guanbi1 inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
<image class='img-200x180 ulib-r10' src='{{photos.src}}' mode='aspectFill' bindtap="previewImage" data-type="edit_photos" data-current="{{photos.src}}"></image>
</view>
</block>
<block wx:if="{{photos.length==0}}">
<view class="inline-block bg-f8 img-200x180 ml10 mr10 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-amount="1">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">拍照上传</view>
</view>
</view>
</block>
</scroll-view>
<view class="mt10 text-center font-26 color-999">仪表盘拍照上传</view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowTransfer" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="putAppTransfer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
+112
View File
@@ -0,0 +1,112 @@
import _ from '../../commons/js/commons'
const app = getApp()
Page({
data: {
imgUrl: _.config.imgUrl,
isShowReport:false,//是否显示调拨盘点弹框
},
onLoad: function (options) {
this.getUserInfo()
},
onShow: function () {
this.setData({
isShowReport:false,//是否显示调拨盘点弹框
remindMsg:[],
});
this.getAppTransferRemind()
this.getAppInventoryRemind()
this.getAppGoodsRemind()
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
this.setData({
userInfo: res
})
});
},
//调拨提醒
getAppTransferRemind(){
_.apiQuery.getAppTransferRemind().then(res => {
if(res.data.total>0){
let remindMsg = this.data.remindMsg
remindMsg.push({
title:'调拨提醒',
content:'您有新的车辆调拨,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/allot/car.gif?v=220224',
btn:{
title:'前往操作',
url:'/pages/allot/list/index',
},
})
this.setData({
remindMsg,
isShowReport:true,
})
}
});
},
//盘点提醒
getAppInventoryRemind(){
_.apiQuery.getAppInventoryRemind().then(res => {
if(res.data.total>0){
let remindMsg = this.data.remindMsg
remindMsg.push({
title:'盘点提醒',
content:'您有新的车辆盘点,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/inventory/animation.gif',
btn:{
title:'前往操作',
url:'/pages/inventory/list/index',
},
})
this.setData({
remindMsg,
isShowReport:true,
})
}
});
},
//库存提醒/预警
getAppGoodsRemind(){
let params = {};
params['type'] = 1;
_.apiQuery.getAppGoodsRemind(params).then(res => {
this.setData({
stock:res.data,
})
wx.stopPullDownRefresh()
});
},
//推送链接
pushLink(e) {
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//显示隐藏调拨盘点弹窗
optShowReport(e){
this.setData({
isShowReport:!this.data.isShowReport,
})
},
//退出登录
logout(){
wx.clearStorage()
wx.reLaunch({
url: '/pages/login/index'
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppGoodsRemind()
},
})
+9
View File
@@ -0,0 +1,9 @@
{
"enablePullDownRefresh": true,
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1a1c26",
"backgroundColor": "#ffffff",
"backgroundColorTop": "#1a1c26",
"usingComponents": {
}
}
+60
View File
@@ -0,0 +1,60 @@
<view class="container">
<view class='pt160 text-center'>
<image class='img-130x130 ulib-r750' mode="aspectFill" src='{{imgUrl}}/login/logo.jpg?v=220223'></image>
<view class='mt20 font-32 color-fff'>{{userInfo.uname}},欢迎回到狸车宝!</view>
<!-- <view class="mt10 font-64 color-fff">{{userInfo.uname}}</view> -->
<view class="mt20">
<view class="inline-block bg-fff mt10 pt10 pb10 pl30 pr30 font-32 ulib-r750">{{userInfo.biz_name}}</view>
</view>
<view class="mt20">
<view class="inline-block pt10 pb10 pl30 pr30 font-24 color-fff ulib-r750" bindtap="logout">
<i class="iconfont icon-tuichu mr10"></i>退出
</view>
</view>
</view>
</view>
<view class="fixed left-0 bottom-0 right-0 bg-fff pt200 pb20 pl100 pr100">
<!-- <button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="pushLink" data-url="/pages/allot/list/index"><text class="iconfont icon-zengjia mr10"></text>新增调拨</button> -->
</view>
<view class="fixed left-0 bottom-0 right-0 pl30 pr30 pb50">
<view class="relative ml15 mr15 mb30 pt20 pb20 pl30 pr200 ulib-r750 font-24 color-fff" style="background-image:linear-gradient(45deg, #30cfbd, #2cbf8b);" bindtap="pushLink" data-url="/pages/inventory/warning/index" wx:if="{{stock.show==1}}">
<view class="text-left">{{stock.inventory.title}}</view>
<view class="absolute right-0 box-middle mr25 mb10">
<text class="text-middle">{{stock.inventory.value}}</text>
<i class="iconfont icon-gengduo ml5 text-middle"></i>
</view>
</view>
<view class="pt30 pb30 pl15 pr15 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="fn-flex">
<view class="fn-flex-item ml15 mr15" bindtap="pushLink" data-url="/pages/allot/list/index?tabs_id=1&type=1&title=调拨发车"><image class='img-300x230' mode="aspectFill" src='{{imgUrl}}/allot/tip-1.png'></image></view>
<view class="fn-flex-item ml15 mr15" bindtap="pushLink" data-url="/pages/allot/list/index?tabs_id=1&type=2&title=调拨收车"><image class='img-300x230' mode="aspectFill" src='{{imgUrl}}/allot/tip-2.png'></image></view>
</view>
</view>
</view>
<!-- 调拨提醒 盘点提醒 -->
<lcb-msg isShow="{{isShowReport}}">
<view slot="content">
<swiper class='wp100' style="height:550rpx;" autoplay circular bindchange="bannerChange">
<swiper-item class="relative" wx:for="{{remindMsg}}" wx:key="index">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center">{{item.title}}</view>
<view class="mt10 font-22 text-center color-999">{{item.content}}</view>
</view>
<view class="mt20 pl40 pr40 pb40">
<image class='wp100 ulib-r10' src='{{item.img}}' mode='widthFix'></image>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button bindtap="pushLink" data-url="{{item.btn.url}}" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">{{item.btn.title}}</button>
</view>
</swiper-item>
</swiper>
<view class="absolute left-0 right-0 bottom-0 pb20 text-center" style='height:30rpx' wx:if="{{remindMsg.length>1&&remindMsg.length<16}}">
<block wx:for-items="{{remindMsg}}" wx:for-index="j" wx:key='j'>
<view class="inline-block indicator-pin {{banneractive==j?'active':''}}"></view>
</block>
</view>
</view>
</lcb-msg>
+7
View File
@@ -0,0 +1,7 @@
page{
background-repeat:no-repeat;
background-position:center top;
background-size:100% auto;
background-color:#1a1c26;
background-image:url('http://qs.haodian.cn/wechat_app/lichebao/allot/theme.jpg');
}
+48 -1
View File
@@ -11,6 +11,12 @@ Page({
flag:1,
s_date:'',
e_date:'',
type:'',//调拨类型 1调拨发车2调拨收车
tabs_id:'',//分类 1进行中2已完成
tab:[],
channel:'',//是否来自渠道
city_id:'',//城市ID
},
onLoad: function (options) {
for (let key in options) {
@@ -18,7 +24,36 @@ Page({
[key]: options[key]
})
}
this.getAppTransferLists()
if(this.data.title){
wx.setNavigationBarTitle({
title:this.data.title,
})
}
this.getAppTransferTabs()
},
//客户-tab
getAppTransferTabs() {
_.apiQuery.getAppTransferTabs().then(res => {
this.setData({
tab:res.data,
tabs_id:this.data.tabs_id==''?res.data[0].id:this.data.tabs_id,
})
this.getAppTransferLists()
wx.stopPullDownRefresh()
});
},
//切换tab
changeTab(e){
this.setData({
tabs_id: this.data.tab[e.currentTarget.dataset.index].id,
})
this.searchSubmit()
},
//获取客户列表
@@ -30,6 +65,18 @@ Page({
let params = {};
params['page'] = this.data.pageNo;
params['size'] = 10;
if(this.data.channel != ''){
params['channel'] = this.data.channel;
}
if(this.data.city_id != ''){
params['city_id'] = this.data.city_id;
}
if(this.data.type != ''){
params['type'] = this.data.type;
}
if(this.data.tabs_id != ''){
params['tabs_id'] = this.data.tabs_id;
}
if(this.data.s_date != ''){
params['s_date'] = this.data.s_date;
}
+4 -1
View File
@@ -1,3 +1,6 @@
{
"usingComponents": {}
"navigationBarTitleText": "调拨列表",
"usingComponents": {
}
}
+29 -2
View File
@@ -1,5 +1,28 @@
<view class="container">
<view class="pt30 pl30 relative text-center font-22">
<view>
<view style="padding-top:110rpx"></view>
<view class="fixed top-0 left-0 right-0 bg-fff z-index-1">
<view class="fn-flex mt5 pl100 pr100 font-32 color-666 text-center" wx:if="{{tab.length<5}}">
<block wx:for='{{tab}}' wx:key='list'>
<view class="fn-flex-item pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab">
<view class="relative">{{item.name}}</view>
</view>
</block>
</view>
<scroll-view class="mt5 font-32 color-666 text-center space-nowrap" scroll-x="true" wx:else>
<view class="pl20 inline-block"></view>
<block wx:for='{{tab}}' wx:key='list'>
<view class="pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab" >
<view class="relative">{{item.name}}</view>
</view>
</block>
<view class="pl40 inline-block"></view>
</scroll-view>
</view>
</view>
<view class="pl30 relative text-center font-22">
<view class="inline-block text-middle pt10 pb10 bg-f6 ulib-r750" style="width:240rpx;">
<picker mode="date" value="{{s_date}}" bindchange="startDate">
<text class="color-ccc" wx:if="{{s_date == ''}}">请选择</text>
@@ -20,7 +43,11 @@
<block wx:for='{{list}}' wx:key='index'>
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="{{item.url}}">
<view class="font-40" wx:if="{{item.biz_name}}">{{item.biz_name}}</view>
<view class="relative font-34 fn-clear">
<i class="absolute box-center-middle iconfont icon-arrow font-30 color-888"></i>
<view class="fn-fl wp45 text-nowrap" style="color:{{item.out_car.color}}">{{item.out_car.title}}</view>
<view class="fn-fr wp45 text-nowrap text-right" style="color:{{item.in_car.color}}">{{item.in_car.title}}</view>
</view>
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='it' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{it.title}}</view>
+3 -1
View File
@@ -1 +1,3 @@
/* pages/allot/list/index.wxss */
.tabmenu2{display:inline-block;line-height:72rpx;}
.tabmenu2.active view.relative{display:inline-block;}
.tabmenu2.active view.relative::before{display:inline-block;position:absolute;bottom:0;left:50%;transform:translate(-50%,0);width:64rpx;height:6rpx;content:"";background-color:#36afa2;}
+131
View File
@@ -0,0 +1,131 @@
const innerAudioContext = wx.createInnerAudioContext();
let interval = null
Page({
data: {
currentime:0,
currentx:'00:00'
},
onLoad: function (options) {
let res = {"code":200,"data":{"list":[{"content":"【帆神】拨打电话","record_url":"https:\/\/media.liche.cn\/liche\/xz_video_b0f8821632330b5f\/1f06c26a0da82604.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话","record_url":"https:\/\/media.liche.cn\/liche\/xz_video_65efc63e86180ab0\/12c3837809e69d57.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话","record_url":"https:\/\/img.liche.cn\/liche\/xz_video_e41408d91a337343\/3177bd021db3c7cd.mp3","second":5,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话(未接通)","record_url":"","second":0,"imgs":[],"c_time":"2021.07.27"},{"content":"【老叶】拨打电话(未接通)","record_url":"","second":0,"imgs":[],"c_time":"2021.07.27"},{"content":"【lccsw】【lccsw】分配客户","record_url":"","second":0,"imgs":[],"c_time":"2021.07.22"},{"content":"【admin】后台分配","record_url":"","second":0,"imgs":[],"c_time":"2021.07.22"}],"total":7,"statistics":[{"name":"去电","val":5,"color":"#f3f6fc"},{"name":"短信","val":0,"color":"#fffaeb"},{"name":"到店","val":"0","color":"#f1f9f8"},{"name":"试驾","val":"0","color":"#fff6f8"}]},"msg":""}
let list = res.data.list
list.forEach(item => {
if(item.record_url){
item.alltime=this.format(item.second)
}
})
this.setData({
logslist:list,
})
innerAudioContext.onEnded(() => {
this.offaudio()
})
},
//生命周期函数--监听页面隐藏
onHide: function () {
this.offaudio()
},
//生命周期函数--监听页面卸载
onUnload: function () {
this.offaudio()
},
onShow(){
this.offaudio()
},
//时间格式话
format(t) {
let time = Math.floor(t / 60) >= 10 ? Math.floor(t / 60) : '0' + Math.floor(t / 60)
t = time + ':' + ((t % 60) / 100).toFixed(2).slice(-2)
return t
},
//点击
handle_slider_move_start(e){
clearTimeout(interval)
innerAudioContext.stop()
this.setData({
currentIndex:e.currentTarget.dataset.index,
play:false,
})
},
//拖动中
hanle_slider_changing(e){
clearTimeout(interval)
innerAudioContext.stop()
this.setData({
currentime:e.detail.value,
currentx:this.format(parseInt(e.detail.value))
})
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
},
//拖动结束
hanle_slider_change(e){
clearTimeout(interval)
innerAudioContext.stop()
this.setData({
currentime:e.detail.value,
currentx:this.format(parseInt(e.detail.value))
})
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
innerAudioContext.seek(parseInt(this.data.currentime))
},
//离开页面
offaudio() {
this.setData({
currentIndex:'-1',
play: false,
currentime:0,
currentx:'00:00'
})
innerAudioContext.stop()
clearTimeout(interval)
},
//操作录音
audioPlay: function (e) {
clearTimeout(interval)
if(this.data.currentIndex != e.currentTarget.dataset.index){
innerAudioContext.stop()
this.setData({
currentIndex:e.currentTarget.dataset.index,
currentime:0,
play:true,
})
innerAudioContext.src = this.data.logslist[e.currentTarget.dataset.index].record_url
innerAudioContext.play()
this.countDown()
}else{
if(this.data.play){
this.setData({
play:false,
})
innerAudioContext.pause()
}else{
this.setData({
play:true,
})
innerAudioContext.play()
this.countDown()
}
}
},
//播放录音时间
countDown:function () {
interval = setInterval(res => {
this.setData({
currentime:this.data.currentime + 1,
currentx:this.format(this.data.currentime + 1)
})
}, 1000)
},
})
+3
View File
@@ -0,0 +1,3 @@
{
"usingComponents": {}
}
+51
View File
@@ -0,0 +1,51 @@
<view class="inner40">
<view class="pl15 pr15">
<view class="relative mt40 overflowhidden">
<view class="font-22 relative z-index-1">
<i class="iconfont bg-fff icon-genzong mr10"></i>
<text>用户跟踪</text>
</view>
<view class="orderDtail-log mt40 relative" wx:if="{{logslist.length>0}}">
<block wx:for="{{logslist}}" wx:for-index="index" wx:key="index">
<view class="orderDtail-log-item pl40 relative">
<view class="orderDtail-log-content">
<view class="font-22 color-999">{{item.c_time}}</view>
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
<view class="relative mt10 wp80 pt5 pb5 pl180 bg-e3f5f3 color-36afa2 font-30 ulib-r10" wx:if="{{!!item.record_url}}">
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont {{play?'icon-zanting1':'icon-bofang'}}" wx:if="{{currentIndex==index}}"></i>
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont icon-bofang" wx:else></i>
<text class="absolute box-middle left-0 ml65 font-20">{{currentIndex==index?currentx:'00:00'}} / {{item.alltime}}</text>
<slider
bindtouchstart="handle_slider_move_start"
bindchanging="hanle_slider_changing"
bindchange="hanle_slider_change"
data-index="{{index}}"
min="0"
step="0.000001"
block-size="12"
max="{{item.second}}"
block-color="#5ec6bb"
activeColor="#36afa2"
backgroundColor="#d1eeeb"
value="{{currentIndex==index?currentime:0}}"
/>
</view>
<view wx:if="{{item.imgs.length>0}}">
<block wx:for="{{item.imgs}}" wx:for-item="img" wx:for-index="j" wx:key="j">
<image bindtap="previewImage" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-1-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
</block>
</view>
</view>
<i class="absolute box-middle mt15 bg-fff line-height-11 font-22 color-999 iconfont icon-jiantou-up z-index-1" wx:if="{{index+1 != logslist.length}}"></i>
<text class="absolute orderDtail-log-line2 z-index-0" wx:if="{{index != logslist.length-1}}"></text>
<!-- <text class="absolute orderDtail-log-line z-index-0"></text> -->
<text class="absolute orderDtail-log-dot z-index-1"></text>
</view>
</block>
</view>
</view>
</view>
</view>
+67
View File
@@ -0,0 +1,67 @@
.height-24{
height:24rpx;
}
.orderDtail-log-item{
padding-bottom: 40rpx;
line-height: 1.6;
}
.orderDtail-log-item:first-child{
margin-top: 0;
}
.orderDtail-log-line{
top: 8rpx;
left:16rpx;
width:2rpx;
height:2rpx;
}
.orderDtail-log-line::before{
content:'';
position:absolute;
left:0;
bottom:8rpx;
background-color: #1a1a1a;
width:2rpx;
height:1000rpx;
}
.orderDtail-log-line2{
top:8rpx;
bottom:-8rpx;
left:16rpx;
width:2rpx;
background-color: #1a1a1a;
}
.orderDtail-log-dot{
top: 8rpx;
left:6rpx;
width: 23rpx;
height: 23rpx;
border-radius: 100%;
background-color: #fff;
}
.orderDtail-log-dot::before{
width: 18rpx;
height: 18rpx;
background-color: #fff;
}
.orderDtail-log-dot::after{
width: 12rpx;
height: 12rpx;
background-color: #1a1a1a;
}
.orderDtail-log-dot::before,.orderDtail-log-dot::after{
content: '';
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
border-radius: 100%;
}
.orderDtail-log .orderDtail-log-content{
position:relative;
top:-20rpx;
}
.icon-jiantou-up{
left:6rpx;
}
+46 -6
View File
@@ -37,6 +37,7 @@ Page({
ecLine:{},
deallist:'',
hoursTip:'',
isShowProfile:true,//是否显示授权用户信息按钮
},
onLoad(options) {
@@ -49,10 +50,24 @@ Page({
this.getUserInfo()
this.getAppCity()
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
},
onShow: function () {
this.getHoursTip()
this.getAppTransferRemind()
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//候取时间
@@ -81,6 +96,24 @@ Page({
});
},
//调拨提醒
getAppTransferRemind(){
_.apiQuery.getAppTransferRemind().then(res => {
this.setData({
allotNum: res.data.total,
})
if(res.data.total>0){
this.setData({
isShowReport:true,
})
}else{
this.setData({
isShowReport:false,
})
}
});
},
//获取系统配置城市
getAppCity(){
_.apiQuery.getAppCity().then(res => {
@@ -100,8 +133,8 @@ Page({
})
this.getAppUserBizs()
this.getAppStatisticsCust()
this.getAppStatisticsOrders()
// this.getAppStatisticsCust()
// this.getAppStatisticsOrders()
});
},
@@ -124,8 +157,8 @@ Page({
cityIndex: e.detail.value
})
this.getAppUserBizs()
this.getAppStatisticsCust()
this.getAppStatisticsOrders()
// this.getAppStatisticsCust()
// this.getAppStatisticsOrders()
},
//客户选择季度
@@ -215,6 +248,12 @@ Page({
})
},
//显示短信弹框
optShowReport(e){
this.setData({
isShowReport:!this.data.isShowReport,
})
},
//推送链接
pushLink(e) {
@@ -233,8 +272,9 @@ Page({
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppUserBizs()
this.getAppStatisticsCust()
this.getAppStatisticsOrders()
// this.getAppStatisticsCust()
// this.getAppStatisticsOrders()
this.getAppTransferRemind()
},
})
+58 -15
View File
@@ -1,20 +1,46 @@
<view class="container">
<view class="inner30 img-top-cover" style="background-image:url({{imgUrl}}channel/theme.jpg);">
<view class="relative pt20 pb20 pl110 pr10">
<view class="absolute left-0 box-middle mr10 img-90x90 ulib-r750 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
</view>
<view>
<view class="font-22 color-fff">Hi~ {{hoursTip}}欢迎回到狸车宝!</view>
<view class="relative" style="height:200rpx;">
<view class="relative pt30 pb30 pl110 pr10">
<image class='absolute left-0 box-middle mr10 img-90x90 ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt20 mr150 z-index-4">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view>
<text class="text-middle text-bold font-48 color-fff">{{userInfo.uname}}</text>
<!-- <text class="inline-block ml10 pl10 pr10 bg-fff text-middle font-18 ulib-r750">{{userInfo.biz_name}}</text> -->
<view class="font-22 color-fff">Hi~ {{hoursTip}}欢迎回到狸车宝!</view>
<view>
<text class="text-middle text-bold font-48 color-fff">{{userInfo.uname}}</text>
</view>
</view>
</view>
<view class="absolute allot-tip pt8 pb8 pl15 pr10 bg-f9394d font-22 color-fff ulib-rt10" bindtap="pushLink" data-url="/pages/allot/list/index?city_id={{city_id}}">车辆调拨记录<i class="iconfont icon-gengduo"></i></view>
</view>
<!-- 车辆调拨 -->
<view class="mb40 bg-ffedeb ulib-rt10" style="height:140rpx;" bindtap="pushLink" data-url="/pages/allot/list/index?channel=1" wx:if="{{allotNum>0}}">
<view class="pt30 pl30 pr30">
<view class="relative pl110 pr110">
<image class='block absolute left-0 box-middle img-90x90 ulib-r750 z-index-1' mode="aspectFill" src='{{imgUrl}}index/diaobo-icon.png' lazy-load="{{true}}"></image>
<view class="color-f9394d">
<view class="font-32">车辆调拨</view>
<view class="mt10 font-20">您有新的车辆调拨,需要您进行确认操作</view>
</view>
<view class="absolute right-0 box-middle">
<text class="inline-block text-middle pt5 pb5 pl10 pr10 bg-f9394d font-22 color-fff ulib-r10">{{allotNum}}</text>
<text class="ml5 text-middle iconfont icon-gengduo font-32 color-f9394d"></text>
</view>
</view>
</view>
<view class="absolute allot-tip pt8 pb8 pl15 pr10 bg-f9394d font-22 color-fff ulib-rt10" bindtap="pushLink" data-url="/pages/allot/list/index">车辆调拨记录<i class="iconfont icon-gengduo"></i></view>
</view>
<!-- 管辖门店 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="mb40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<!-- <view class="font-36">水平业务相关</view>
<view class="relative mt20 mb30 pt25 pb25 pl110 bg-fe606c-ff9026 color-fff ulib-r10" bindtap="pushLink" data-url="/pages/order/filterList/index2?title=水平业务资料未提交">
<i class="absolute left-0 box-middle ml35 iconfont icon-tijiao font-60"></i>
<view class="text-left">
<view class="font-40">10</view>
<view class="font-22">水平业务资料未提交</view>
</view>
</view> -->
<view class="relative z-index-1">
<view class="font-36">管辖门店</view>
<picker class="absolute right-0 box-middle" bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
@@ -38,7 +64,7 @@
</view>
</view>
<!-- 数据分析·客户 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<!-- <view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative z-index-1">
<view class="font-36">数据分析·客户</view>
<picker class="absolute right-0 box-middle" bindchange="changeCust" value="{{custSeasonKey}}" range="{{custSeason}}">
@@ -53,9 +79,9 @@
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
</view>
</view> -->
<!-- 数据分析·订单 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<!-- <view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative z-index-1">
<view class="font-36">数据分析·订单</view>
<picker class="absolute right-0 box-middle" bindchange="changeOrder" value="{{orderSeasonKey}}" range="{{orderSeason}}">
@@ -70,11 +96,28 @@
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
</view>
</view>
</view>
</view> -->
</view>
</view>
<!-- <lcb-footer></lcb-footer> -->
<lcb-channelTabBarNav currentIndex='0'></lcb-channelTabBarNav>
<lcb-channelTabBarNav currentIndex='0'></lcb-channelTabBarNav>
<!-- 调拨提醒 -->
<lcb-msg isShow="{{isShowReport}}">
<view slot="content">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center">调拨提醒</view>
<view class="mt10 font-22 text-center color-999">您有新的车辆调拨,需要您进行确认操作。</view>
</view>
<view class="mt20 pl40 pr40 pb40">
<image class='wp100 ulib-r10' src='{{imgUrl}}allot/car.gif' mode='widthFix'></image>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button bindtap="pushLink" data-url="/pages/allot/list/index" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">前往操作</button>
</view>
</view>
</lcb-msg>
+2 -1
View File
@@ -1,2 +1,3 @@
.bg-2e3246-8058fe{background-image:linear-gradient(45deg, #2e3246, #1a1c26);}
.allot-tip{right:30rpx;bottom:-40rpx;}
.allot-tip{right:30rpx;bottom:0;}
.bg-fe606c-ff9026{background-image:linear-gradient(45deg, #fe606c, #ff9026); text-align: center;}
+441 -82
View File
@@ -4,31 +4,55 @@ Page({
data: {
name:'',//名字
mobile:'',//手机号
brand_id:'',//品牌
car_id:'',//车系id
v_id:'',//车型级别id
color_id:'',//颜色id
b_s_id:'',//备选车型id
// brand_id:'',//品牌
// car_id:'',//车系id
// v_id:'',//车辆版本id
// color_id:'',//颜色id
// b_s_id:'',//备选车型id
buy_time:'',//预计购车时间
brandIndex:-1,//车辆品牌索引
modelIndex:-1,//车型车系索引
spareIndex:-1,//备选车型索引
colorArray:[],//车颜色列表
levelArray:[],//车型级别列表
colorIndex:-1,//车颜色索引
levelIndex:-1,//车型级别索引
// brandIndex:-1,//车辆品牌索引
// modelIndex:-1,//车系车型索引
// spareIndex:-1,//备选车型索引
// colorArray:[],//车颜色列表
// levelArray:[],//车辆版本列表
// colorIndex:-1,//车颜色索引
// levelIndex:-1,//车辆版本索引
timeArray:[],//预计购车时间列表
timeIndex:-1,//预计购车时间索引
cf_clues:'',//线索来源
cluesArray:[
'自然进店',
'外展外拓',
'转介绍',
'垂直媒体',
'自媒体',
],//线索来源
cluesIndex:-1,//索来源索引
submitFlag:false,
status:0,//状态
statuslist:[
'未见客户',
'到店客户',
],
c_brands:[
'综合','东风纳米','哪吒','零跑'
],
c_brandArray:[
{id:0, name:'综合'},
{id:1, name:'东风纳米'},
{id:4, name:'哪吒'},
{id:5, name:'零跑'},
],
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
cityIndex:-1,
city_id:'',
countyIndex:-1,
county_id:'',
c_brandIndex:-1,
isShowExist:false, //客户是否已存在
wxgr:0,//是否添加个微
wxgrimg:'',//个微
wxgrimg_url:'',//个微
},
//生命周期函数--监听页面加载
onLoad: function (options) {
@@ -37,8 +61,21 @@ Page({
[key]: options[key]
})
}
this.getAppSeriesBrands()
//获取车型品牌
// this.getAppSeriesBrands()
//获取列表筛选条件-时间
this.getAppCustomersFilter()
//客户来源
this.getAppCustomersOffline_sources()
//客户标签
this.getAppCustomersTag()
if(this.data.status == 1){
this.setData({
buy_time:3,
})
}
},
//获取车型品牌
@@ -57,7 +94,7 @@ Page({
});
},
//获取车型车
//获取车系车型
getAppSeries(){
let params = {};
params['brand_id'] = this.data.brand_id;
@@ -75,7 +112,7 @@ Page({
});
},
//获取车型级别
//获取车辆版本
getAppSeriesAttrslevel(){
let params = {};
params['id'] = this.data.car_id;
@@ -95,7 +132,7 @@ Page({
});
},
//获取车颜色
//获取车颜色
getAppSeriesAttrscolor(){
let params = {};
params['id'] = this.data.car_id;
@@ -121,7 +158,7 @@ Page({
_.apiQuery.getAppCustomersFilter().then(res => {
let timeArray = []
res.data.buy_time.forEach(item => {
timeArray.push(item + '天')
timeArray.push(item.name)
})
this.setData({
timeArray:timeArray,
@@ -139,6 +176,22 @@ Page({
})
},
//选择状态
changeStatus(e) {
if(this.data.status != e.detail.value){
this.setData({
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
of2Arr:[],
status:e.detail.value,
buy_time:e.detail.value==1?'3':'',
})
this.getAppCustomersOffline_sources()
}
},
//选择品牌
changeBrand(e) {
if(this.data.brandIndex != e.detail.value && e.detail.value >= 0){
@@ -146,17 +199,17 @@ Page({
brand_id:this.data.brandList[e.detail.value].id,
brandIndex:e.detail.value,
car_id:'',//车系id
v_id:'',//车型级别id
color_id:'',//车颜色id
v_id:'',//车辆版本id
color_id:'',//车颜色id
incolor_id:'',//内饰颜色id
b_s_id:'',//备选车型id
modelIndex:-1,//车型车系索引
modelIndex:-1,//车系车型索引
spareIndex:-1,//备选车型索引
colorArray:[],//车颜色列表
levelArray:[],//车型级别列表
colorArray:[],//车颜色列表
levelArray:[],//车辆版本列表
interiorArray:[],//内饰颜色
colorIndex:-1,//车颜色索引
levelIndex:-1,//车型级别索引
colorIndex:-1,//车颜色索引
levelIndex:-1,//车辆版本索引
interiorIndex:-1,//内饰颜色索引
})
this.getAppSeries()
@@ -169,37 +222,37 @@ Page({
this.setData({
car_id:this.data.modelList[e.detail.value].id,
modelIndex:e.detail.value,
v_id:'',//车型级别id
color_id:'',//车颜色id
v_id:'',//车辆版本id
color_id:'',//车颜色id
incolor_id:'',//内饰颜色id
b_s_id:'',//备选车型id
spareIndex:-1,//备选车型索引
colorArray:[],//车颜色列表
levelArray:[],//车型级别列表
colorArray:[],//车颜色列表
levelArray:[],//车辆版本列表
interiorArray:[],//内饰颜色
colorIndex:-1,//车颜色索引
levelIndex:-1,//车型级别索引
colorIndex:-1,//车颜色索引
levelIndex:-1,//车辆版本索引
interiorIndex:-1,//内饰颜色索引
})
this.getAppSeriesAttrslevel()
}
},
//车型级别
//车辆版本
changeLevel(e) {
if(this.data.levelIndex != e.detail.value && e.detail.value >= 0){
this.setData({
v_id:this.data.levelList[e.detail.value].id,
levelIndex:e.detail.value,
color_id:'',//车颜色id
colorArray:[],//车颜色列表
colorIndex:-1,//车颜色索引
color_id:'',//车颜色id
colorArray:[],//车颜色列表
colorIndex:-1,//车颜色索引
})
this.getAppSeriesAttrscolor()
}
},
//车颜色
//车颜色
changeColor(e) {
if(this.data.colorIndex != e.detail.value && e.detail.value >= 0){
this.setData({
@@ -219,18 +272,10 @@ Page({
}
},
//线索来源
changeClues(e) {
this.setData({
cf_clues:this.data.cluesArray[e.detail.value],
cluesIndex:e.detail.value,
})
},
//预计购车时间
changeTime(e) {
this.setData({
buy_time:this.data.timeList[e.detail.value],
buy_time:this.data.timeList[e.detail.value].id,
timeIndex:e.detail.value,
})
},
@@ -248,40 +293,96 @@ Page({
title: '请输入正确的手机号码',
icon: 'none'
})
}else if(that.data.car_id == '' ){
}
else if (that.data.c_brandArray.length>0&&that.data.c_brandIndex == -1 ) {
wx.showToast({
title: '请选择车型车系',
title: '请选择客户品牌归属',
icon: 'none'
})
}else if(that.data.v_id == '' ){
}
else if (that.data.sources.length>0&&that.data.of_id == '' ) {
wx.showToast({
title: '请选择车型级别',
title: '请选择客户来源',
icon: 'none'
})
}else if(that.data.color_id == '' ){
}
else if (that.data.sources.length>0&&that.data.sources[that.data.of1Index].list.length>0&&that.data.of2_id == '' ) {
wx.showToast({
title: '请选择车型颜色',
title: '请选择'+that.data.sources[that.data.of1Index].name+'类型',
icon: 'none'
})
} else{
}
else if (that.data.city_id == '' ) {
wx.showToast({
title: '请选择所在城市',
icon: 'none'
})
}
else if (that.data.county_id == '' ) {
wx.showToast({
title: '请选择所在地区',
icon: 'none'
})
}
else if (that.data.buy_time == '' ) {
wx.showToast({
title: '请选择预计购车时间',
icon: 'none'
})
}
else if(this.data.wxgr==1&&this.data.wxgrimg==''){
wx.showToast({
title: '请上传个微截图',
icon: 'none'
})
}
// else if(that.data.car_id == '' ){
// wx.showToast({
// title: '请选择车系车型',
// icon: 'none'
// })
// }else if(that.data.v_id == '' ){
// wx.showToast({
// title: '请选择车辆版本',
// icon: 'none'
// })
// }else if(that.data.color_id == '' ){
// wx.showToast({
// title: '请选择车身颜色',
// icon: 'none'
// })
// }
else{
that.setData({
submitFlag: true,
})
let params = {};
params['status'] = that.data.status;
params['name'] = that.data.name;
params['mobile'] = that.data.mobile;
params['car_id'] = that.data.car_id;
params['v_id'] = that.data.v_id;
params['color_id'] = that.data.color_id;
if(this.data.b_s_id != ''){
params['b_s_id'] = this.data.b_s_id;
// params['car_id'] = that.data.car_id;
// params['v_id'] = that.data.v_id;
// params['color_id'] = that.data.color_id;
params['tag'] = that.data.taglList;
// if(this.data.b_s_id != ''){
// params['b_s_id'] = this.data.b_s_id;
// }
if(this.data.c_brandIndex != -1){
params['c_brand'] = this.data.c_brandArray[this.data.c_brandIndex].id;
}
if(this.data.cf_clues != ''){
params['cf_clues'] = this.data.cf_clues;
if(this.data.of_id != ''){
params['of_id'] = this.data.of_id;
}
if(this.data.buy_time != ''){
params['buy_time'] = this.data.buy_time;
if(this.data.of2_id != ''){
params['of2_id'] = this.data.of2_id;
}
params['wxgr'] = this.data.wxgr;
if(this.data.wxgr==1){
params['wxgrimg'] = this.data.wxgrimg;
}
params['city_id'] = this.data.city_id;
params['county_id'] = this.data.county_id;
params['buy_time'] = this.data.buy_time;
_.apiQuery.postAppCustomers(params).then(res => {
//刷新列表页
@@ -304,21 +405,32 @@ Page({
success(res) {
if (res.confirm) {
that.setData({
name:'',
mobile:'',
car_id:'',
v_id:'',
color_id:'',
b_s_id:'',
cf_clues:'',
buy_time:'',
modelIndex:-1,
spareIndex:-1,
colorIndex:-1,
levelIndex:-1,
timeIndex:-1,
name:'',//名字
mobile:'',//手机号
// brand_id:'',//品牌
// car_id:'',//车系id
// v_id:'',//车辆版本id
// color_id:'',//颜色id
// b_s_id:'',//备选车型id
buy_time:'',//预计购车时间
// brandIndex:-1,//车辆品牌索引
// modelIndex:-1,//车系车型索引
// spareIndex:-1,//备选车型索引
// colorArray:[],//车身颜色列表
// levelArray:[],//车辆版本列表
// colorIndex:-1,//车身颜色索引
// levelIndex:-1,//车辆版本索引
timeIndex:-1,//预计购车时间索引
submitFlag:false,
of_id:'',
of2_id:'',
of2Arr:[],
of1Index:-1,
of2Index:-1,
})
that.getAppCustomersTag()
} else if (res.cancel) {
wx.navigateBack({
delta: 1
@@ -331,8 +443,255 @@ Page({
this.setData({
submitFlag: false,
})
if(res.data.id){
wx.hideToast();
this.setData({
isShowExist: true,
exist: res,
})
}
});
}
},
//客户来源
getAppCustomersOffline_sources(){
let params = {};
params['status'] = this.data.status;
_.apiQuery.getAppCustomersOffline_sources(params).then(res => {
let of1Arr = []
res.data.sources.forEach(item => {
of1Arr.push(item.name)
})
this.setData({
of1Arr,
sources:res.data.sources
})
});
},
//客户来源
changeOf1(e) {
if(this.data.of1Index!=e.detail.value){
let of2Arr = []
this.data.sources[e.detail.value].list.forEach(item => {
of2Arr.push(item.name)
})
this.setData({
of2Arr,
of2Index:-1,
of_id:this.data.sources[e.detail.value].id,
of1Index:e.detail.value,
})
}
},
changeOf2(e) {
if(this.data.of2Index!=e.detail.value){
this.setData({
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
of2Index:e.detail.value,
})
}
},
//客户标签
getAppCustomersTag(){
_.apiQuery.getAppCustomersTag().then(res => {
this.setData({
city_id:res.data.city_id,
county_id:res.data.county_id,
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
})
this.data.c_brandArray.forEach((item,index) => {
if(res.data.c_brand == item.id){
this.setData({
c_brandIndex:index
})
}
})
//获取城市
this.getAppCityArea_city()
//获取地区
this.getAppCityArea_county()
});
},
//单选
radioPicker(e){
let taglList = this.data.taglList
taglList[e.currentTarget.dataset.i].list.forEach(item => {
item.checked=false
})
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
this.setData({
taglList,
})
},
//多选
checkPicker(e){
this.setData({
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
})
},
//获取城市
getAppCityArea_city(){
let params = {};
params['type'] = 'city';
_.apiQuery.getAppCityArea(params).then(res => {
let cityArr = []
let cityIndex = -1
res.data.list.forEach((item,index) => {
cityArr.push(item.name)
if(this.data.city_id == item.id){
cityIndex = index
}
})
this.setData({
cityIndex,
cityArr,
city:res.data.list
})
});
},
//获取行政区
getAppCityArea_county(){
let params = {};
params['pid'] = this.data.city_id;
params['type'] = 'county';
_.apiQuery.getAppCityArea(params).then(res => {
let countyArr = []
let countyIndex = -1
res.data.list.forEach((item,index) => {
countyArr.push(item.name)
if(this.data.county_id == item.id){
countyIndex = index
}
})
this.setData({
countyIndex,
countyArr,
county:res.data.list
})
});
},
//选择城市
changeCbrand(e) {
if(this.data.c_brandIndex!=e.detail.value){
this.setData({
c_brandIndex:e.detail.value,
})
}
},
//选择城市
changeCity(e) {
if(this.data.cityIndex!=e.detail.value){
this.setData({
cityIndex:e.detail.value,
city_id:this.data.city[e.detail.value].id,
})
this.getAppCityArea_county()
}
},
//选择地区
changeCounty(e) {
if(this.data.countyIndex!=e.detail.value){
this.setData({
countyIndex:e.detail.value,
county_id:this.data.county[e.detail.value].id,
})
}
},
//查看存在客户信息
viewDetails(e){
wx.redirectTo({
url: '/pages/customer/detail/index?id=' + this.data.exist.data.id
})
},
//关闭客户已存在提示
colseExist(){
this.setData({
isShowExist: false,
})
},
//是否添加个微
switchWxgr:function(e){
this.setData({
wxgr:e.detail.value ? 1 :0
})
},
//选择图片
chooseImg(e) {
let that = this
//上传个微截图
if(e.currentTarget.dataset.type=='gw_img'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
if (resp.data.code == 200) {
wx.hideLoading();
that.setData({
wxgrimg:resp.data.data.url,
wxgrimg_url:resp.data.data.full_url,
})
}else{
wx.hideLoading();
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
},
//查看图片
previewImage(e){
if(e.currentTarget.dataset.type=='gw_img'){
wx.previewImage({
current:this.data.wxgrimg_url,
urls:[this.data.wxgrimg_url],
})
}
},
})
+128 -24
View File
@@ -1,6 +1,15 @@
<view class="container">
<view class="inner30">
<view class="pl40 pr40 pt10 pb10 relative ulib-r10 box-shadow-000-10-10 overflowhidden">
<view class="pl40 pr40 pt10 pb50 relative ulib-r10 box-shadow-000-10-10 overflowhidden">
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">客户状态</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeStatus" value="{{status}}" range="{{statuslist}}">
<text>{{statuslist[status]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户姓名</view>
<view>
@@ -14,18 +23,19 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
<view class="absolute left-0 box-middle font-28 color-333">品牌归属</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
<text class="color-ccc" wx:if="{{brandIndex == -1}}">请选择</text>
<text wx:else>{{brandArray[brandIndex]}}</text>
<picker bindchange="changeCbrand" value="{{c_brandIndex}}" range="{{c_brands}}">
<text class="color-ccc" wx:if="{{c_brandIndex == -1}}">请选择</text>
<text wx:else>{{c_brands[c_brandIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<!--
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
<text wx:else>{{modelArray[modelIndex]}}</text>
@@ -34,8 +44,8 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车辆版本</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{levelArray}}">
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
<text wx:else>{{levelArray[levelIndex]}}</text>
@@ -44,15 +54,15 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{levelIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车颜色</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车颜色</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeColor" value="{{colorIndex}}" range="{{colorArray}}">
<text class="color-ccc" wx:if="{{colorIndex == -1}}">请选择</text>
<text wx:else>{{colorArray[colorIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view> -->
<!-- <view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">备选车型</view>
<view class="pt30 pb30 text-right font-28 color-666">
@@ -63,20 +73,49 @@
</picker>
</view>
</view> -->
<block wx:if="{{sources.length>0}}">
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户来源</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
<text wx:else>{{of1Arr[of1Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
<text wx:else>{{of2Arr[of2Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</block>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">线索来源</view>
<!-- <view>
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入线索来源" bindinput='inputTx' data-key="cf_clues" name='cf_clues' value='{{cf_clues}}' />
</view> -->
<view class="absolute left-0 box-middle">所在城市</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeClues" value="{{cluesIndex}}" range="{{cluesArray}}">
<text class="color-ccc" wx:if="{{cluesIndex == -1}}">请选择</text>
<text wx:else>{{cluesArray[cluesIndex]}}</text>
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
<text wx:else>{{cityArr[cityIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
<view class="absolute left-0 box-middle">所在地区</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
<text wx:else>{{countyArr[countyIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl190" wx:if="{{status==0}}">
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeTime" value="{{timeIndex}}" range="{{timeArray}}">
@@ -86,13 +125,78 @@
</picker>
</view>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl180 font-28">
<view class="absolute left-0 box-middle">是否添加个微</view>
<view class="relative pt30 pb30 text-right">
<switch checked="{{wxgr==1}}" bindchange="switchWxgr" type="switch" color='#36afa2' style="zoom:0.8" />
</view>
</view>
<view class="mt30 text-center" wx:if="{{wxgr==1}}">
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
<block wx:if="{{wxgrimg_url}}">
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
</view>
</block>
<block wx:else>
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-42"></i>
<view class="mt10 font-22">上传个微截图</view>
</view>
</view>
</block>
</view>
</view>
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt30">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="radioPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="checkPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
</view>
<view class="mt60 pl60 pr60">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="postAppCustomers">确认建卡</button>
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="postAppCustomers">
确认建卡
</button>
</view>
</view>
</view>
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<lcb-backChannel></lcb-backChannel>
<!-- 客户已存在 -->
<lcb-msg isShow="{{isShowExist}}" isHasClose="{{true}}">
<view slot="content">
<view class="pt60 pl60 pr60 pb50">
<view class="font-36 text-center">{{exist.msg}}</view>
</view>
<view class="pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="viewDetails" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" wx:if="{{exist.data.owner==1}}">
前往查看
</button>
<button bindtap="colseExist" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" wx:else>
知道了
</button>
</view>
</view>
</lcb-msg>
+193 -4
View File
@@ -14,6 +14,17 @@ Page({
employeeArray:[],//店员选择列表
employeeList:[],//店员信息列表
employeeIndex:-1,//选择店员索引
isShowTimePicker:false,
weekList:['日','一','二','三','四','五','六'],
dateList:[],
nextIndex:-1,//计划回访时间
distTabId:1,
distBizIndex:-1,
distBiz_id:'',
bizArray: [],
bizobj: [],
},
onLoad(options) {
for (let key in options) {
@@ -23,6 +34,8 @@ Page({
}
this.getAppCustomersList()
this.getAppEmployees()
this.getTimePicker()
},
onShow(){
@@ -101,10 +114,17 @@ Page({
res.data.list.forEach(item => {
employeeArray.push(item.uname)
})
let bizArray = []
res.data.bizs.forEach(item => {
bizArray.push(item.name)
})
this.setData({
employeeArray:employeeArray,
employeeList:res.data.list,
employeeIndex:-1,
distributetabs:res.data.tabs,
bizArray:bizArray,
bizobj: res.data.bizs,
})
}
wx.stopPullDownRefresh()
@@ -127,6 +147,12 @@ Page({
optEmployees(){
this.setData({
isShowEmployees:!this.data.isShowEmployees,
employeeIndex:-1,
employee_id:'',
nextIndex:-1,
distTabId:1,
distBiz_id:'',
distBizIndex:-1,
})
},
@@ -140,28 +166,48 @@ Page({
//分配客户
putAppCustomersAdmins(){
let that = this
if (that.data.employeeIndex == -1 ) {
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
wx.showToast({
title: '请选择店员',
icon: 'none'
})
}else{
}
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
wx.showToast({
title: '请选择计划回访时间',
icon: 'none'
})
}
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
wx.showToast({
title: '请选择门店',
icon: 'none'
})
}
else{
that.setData({
submitFlag: true,
})
let params = {};
params['ids'] = that.data.ids;
params['admin_id'] = that.data.admin_id;
if(that.data.distTabId==1){
params['admin_id'] = that.data.admin_id;
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
}
if(that.data.distTabId==2){
params['biz_id'] = that.data.distBiz_id;
}
_.apiQuery.putAppCustomersAdmins(params).then(res => {
wx.showToast({
title: '分配成功',
icon: 'success',
duration: 2000
duration: 2000,
})
that.setData({
isShowEmployees:false,
submitFlag:false,
nextIndex:-1,
})
that.onPullDownRefresh()
@@ -173,6 +219,149 @@ Page({
}
},
//候取当前月日历
getTimePicker(){
let date = new Date();
let cYear = date.getFullYear(); //年份
let cMonth = date.getMonth()+1; //当前月份
let cDay = date.getDate();//当前日期
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
let days = new Date(cYear,cMonth,-1)
let cn = days.getDate()+1 //当月天数
let rn = ''//上个月天数
if (cMonth === 1) {
rn = 31
} else {
rn = new Date(cYear,cMonth-1,-1).getDate()+1
}
let dateList = []
for(let i=0;i<fweek;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 1?cYear-1:cYear,
month:cMonth == 1?12:cMonth-1,
day:rn-i,
})
}
for(let i=1;i<=cn;i++){
dateList.push({
isopt:false,
checked:false,
year:cYear,
month:cMonth,
day:i
})
}
if((cn-cDay)>29){//相差15天以上不用特意补下个月
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
let sbu = 6 - lweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}else{
let zbu = 30 - (cn-cDay) //至少要补多少天
let bweek = ''//至少要补的最后一天星期几
if(cMonth==12){
bweek = new Date(cYear+1,1,zbu).getDay()
}else{
bweek = new Date(cYear,cMonth,zbu).getDay()
}
let sbu = zbu + 6 - bweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}
this.setData({
cYear,
cMonth,
cDay,
dateList,
})
},
//显示隐藏时间选择器
optShowTimePicker(){
this.setData({
isShowTimePicker:!this.data.isShowTimePicker,
})
let kd = 15 //可操作天数
// if(this.data.level[this.data.levelIndex]=='H'){
// kd = 3
// }else if(this.data.level[this.data.levelIndex]=='A'){
// kd = 7
// }else if(this.data.level[this.data.levelIndex]=='B'){
// kd = 15
// }
let cindex = ''
let dateList = this.data.dateList
dateList.forEach((item,index) => {
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
cindex = index
}
})
dateList.forEach((item,index) => {
item.isopt = false
if(cindex<=index&&index<cindex+kd+1){
item.isopt = true
}
})
this.setData({
dateList,
})
},
//选择计划回访时间
optday(e){
if(this.data.nextIndex != e.currentTarget.dataset.index){
this.setData({
nextIndex:e.currentTarget.dataset.index,
})
}
},
//切换分配本地,其他门店
changeDistTab(e){
this.setData({
distTabId:e.currentTarget.dataset.id,
employeeIndex:-1,
employee_id:'',
nextIndex:-1,
distBiz_id:'',
distBizIndex:-1,
})
},
//分配选择门店
changeDistBiz(e) {
let distBiz_id = ''
if(e.detail.value >= 0){
distBiz_id = this.data.bizobj[e.detail.value].id
}
this.setData({
distBiz_id,
distBizIndex:e.detail.value,
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
+81 -10
View File
@@ -6,10 +6,21 @@
<block wx:for='{{list}}' wx:key='index' wx:key="index">
<label class="block inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
<view class="relative pr180">
<view class="font-32">{{item.name}}</view>
<view class="mt10 font-22 color-666">{{item.mobile}}</view>
<view class="font-32">
<text class="text-middle text-bold">{{item.name}}</text>
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
</view>
<checkbox class="absolute right-0 box-middle font-30" value="{{item.id}}" checked="{{item.checked}}"/>
</view>
<checkbox class="absolute right-0 box-middle mr30 font-30" value="{{item.id}}" checked="{{item.checked}}"/>
<view class="text-nowrap" wx:if="{{item.reassign}}">
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750">{{item.reassign}}</text>
</view>
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
<view class="mt25 fn-clear font-28" wx:if="{{value}}">
<view class="fn-fl color-333">{{key}}</view>
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
</view>
</block>
</label>
</block>
</checkbox-group>
@@ -30,16 +41,76 @@
<lcb-msg isShow="{{isShowEmployees}}">
<view slot="content">
<view class="inner40">
<view class="pb30 text-center font-36">销售选择</view>
<picker class="relative bg-f6 pt20 pb20 pl30 pr30 font-32 ulib-r10" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{employeeArray}}">
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
<text wx:else>{{employeeArray[employeeIndex]}}</text>
<i class="absolute right-0 box-middle iconfont mr30 color-999 icon-xiala"></i>
</picker>
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
<block wx:for="{{distributetabs}}" wx:key="index">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
</block>
</view>
<block wx:if="{{distTabId == 1}}">
<view class="mt20 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">销售顾问</view>
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{employeeArray}}">
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
<text wx:else>{{employeeArray[employeeIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<view class="mt20 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">计划回访时间</view>
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</view>
</block>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
<view class="fn-fl">门店名称</view>
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
<view class="text-nowrap">
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
<text wx:else>{{bizArray[distBizIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</picker>
</view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
</lcb-msg>
<page-container
show="{{isShowTimePicker}}"
round="{{true}}"
overlay="true"
duration="300"
z-index="10000"
position="bottom"
close-on-slide-down="{{false}}"
bindenter="onEnter"
custom-style="false"
overlay-style="false"
>
<view class="">
<view class="relative pt30 pb30 text-center font-30">
<view class="color-666">计划回访时间</view>
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
</view>
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
<block wx:for="{{weekList}}" wx:key="index">
<view class="fn-flex-item">{{item}}</view>
</block>
</view>
<view class="pb40 relative">
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
<block wx:for="{{dateList}}" wx:key="index">
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
</block>
</view>
</view>
</view>
</page-container>
File diff suppressed because it is too large Load Diff
+457 -168
View File
@@ -1,14 +1,21 @@
<view class="container">
<view class="inner40 pb0">
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
<view class="absolute top-0 left-0 width-25 mt40 pt5 pb5 bg-36afa2 line-height-13 font-22 color-fff">{{detailinfo.tip}}</view>
<view class="absolute top-0 left-0 ml40 bg-36afa2 pl10 pr10 font-22 color-fff" wx:if="{{detailinfo.tip}}">
{{detailinfo.tip}}
</view>
<view class="relative pr180">
<view class="font-32">
<text>{{detailinfo.name}}</text>
<text class="font-26 color-666">({{detailinfo.mobile}})</text>
<view class="font-28">
<text>
{{detailinfo.name}}<text class="ml10 font-22 color-666">编号 {{detailinfo.id}}</text>
</text>
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{detailinfo.is_weChat}}"></text>
<text class="iconfont icon-xingxing ml10 {{detailinfo.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
</view>
<view class="text-nowrap">
<view class="mt10 text-nowrap font-28">
<text>{{detailinfo.mobile}}</text>
</view>
<!-- <view class="text-nowrap">
<text class="mr15 font-22 color-666">编号:{{detailinfo.id}}</text>
<block wx:for="{{detailinfo.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
@@ -16,14 +23,17 @@
<block wx:if="{{detailinfo.tags.length>4}}">
...
</block>
</view>
<view class="absolute right-0 box-middle">
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{detailinfo.id}}">
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
</view>
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{detailinfo.id}}">
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
</view> -->
<view class="absolute right-0 box-middle text-right mt5">
<view class="text-center">
<!--view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{detailinfo.id}}">
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
</view-->
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{detailinfo.id}}">
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
</view>
</view>
<view class="inline-block mt5 pt5 pb5 pl20 pr20 btn-36afa2 font-26 color-fff ulib-r750" bindtap="copyWord">复制</view>
</view>
</view>
<block wx:for="{{detailinfo.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
@@ -35,74 +45,14 @@
</view>
</view>
<view class="pl30 pr30">
<view class="fn-flex font-32 color-666 text-center">
<view class="fn-flex pl50 pr50 font-32 color-666 text-center">
<block wx:for='{{tab}}' wx:key='list'>
<view class="fn-flex-item pl20 pr20 tabmenu2 {{tabid == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab">
<view class="relative">{{item.title}}</view>
</view>
</block>
</view>
<view class="mt30 pl10 pr10 pb200" wx:if="{{tabid == tab[0].id}}">
<!-- <view class="font-22">
<i class="iconfont icon-fenqi mr10"></i>
<text>分期信息</text>
</view> -->
<view class="text-right">
<button bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}" class="inline-block btn-36afa2 font-22 color-fff ulib-r10" hover-class="btn-36afa2-hover"><i class="iconfont icon-dengji mr10"></i>编辑</button>
</view>
<view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户姓名</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{name}}
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">手机号码</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{mobile}}
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{brandArray[brandIndex]}}
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{modelArray[modelIndex]}}
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{levelArray[levelIndex]}}
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车型颜色</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{colorArray[colorIndex]}}
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">线索来源</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{cf_clues}}
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
<view class="pt30 pb30 text-right font-28 color-666" style="min-height:38rpx">
{{buy_time}}天
</view>
</view>
</view>
</view>
<view class="mt30 pb150" wx:elif="{{tabid == tab[1].id}}">
<view class="mt30 pb150" wx:if="{{tabid == 1}}">
<view class="fn-flex text-center">
<block wx:for="{{statistics}}" wx:key='index'>
<view class="fn-flex-item ml15 mr15 pt20 pb20 bg-f3f6fc ulib-r10" style="background-color:{{item.color}}">
@@ -121,19 +71,41 @@
<block wx:for="{{logslist}}" wx:for-index="index" wx:key="index">
<view class="orderDtail-log-item pl40 relative">
<view class="orderDtail-log-content">
<view class="font-22 color-999">{{item.c_time}}</view>
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
<view bindtap="audioPlay" data-index="{{index}}" class="relative mt10 wp60 pt10 pb10 pl20 pr30 {{currentIndex == index?'bg-36afa2 color-fff':'bg-e3f5f3 color-36afa2'}} ulib-r750 ulib-rlt0" wx:if="{{!!item.record_url}}">
<i class="iconfont mr10 icon-yinpin"></i>{{currentIndex == index?currentime:item.second}}”
<view class="absolute right-0 box-middle mr20 font-20" wx:if="{{currentIndex == index}}">
{{play?'播放中':'已暂停'}}
</view>
<!-- 时间 -->
<view class="font-22">
<text class="color-999">{{item.c_time}}</text>
<!-- <text class="color-999"> · </text>
<text class="color-36afa2">试驾/下定</text> -->
</view>
<!-- 内容 -->
<view class="font-28 text-break" style="min-height:50rpx;">{{item.content}}</view>
<!-- 录音 -->
<view class="relative mt10 wp80 pt5 pb5 pl180 bg-e3f5f3 color-36afa2 font-30 ulib-r10" wx:if="{{!!item.record_url}}">
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont {{play?'icon-zanting1':'icon-bofang'}}" wx:if="{{currentIndex==index}}"></i>
<i bindtap="audioPlay" data-index="{{index}}" class="absolute box-middle left-0 ml20 iconfont icon-bofang" wx:else></i>
<text class="absolute box-middle left-0 ml65 font-20">
{{currentIndex==index?currentx:'00:00'}} / {{item.alltime}}
</text>
<slider bindtouchstart="handle_slider_move_start" bindchanging="hanle_slider_changing" bindchange="hanle_slider_change" data-index="{{index}}" min="0" step="0.000001" block-size="12" max="{{item.second}}" block-color="#5ec6bb" activeColor="#36afa2" backgroundColor="#d1eeeb" value="{{currentIndex==index?currentime:0}}" />
</view>
<!-- 图片 -->
<view wx:if="{{item.imgs.length>0}}">
<block wx:for="{{item.imgs}}" wx:for-item="img" wx:for-index="j" wx:key="j">
<image bindtap="previewImage" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-1-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
<image bindtap="previewImage" data-type="logs" data-current="{{img}}" data-index="{{index}}" class='img-125x75 mr10 bds-2-eb ulib-r5' src='{{img}}' mode='aspectFill'></image>
</block>
</view>
<!-- 评论 -->
<view class="mt10 mb15 bg-f6 ulib-r20 ulib-rlt0 pt5 pb10 pl15 pr15 font-22" wx:if="{{item.comments.length>0}}">
<view class="mt5 relative" wx:for="{{item.comments}}" wx:for-item="comment" wx:for-index="j" wx:key="j">
<text class="iconfont icon-pinglun color-36afa2"></text>
<text class="ml10 color-36afa2">{{comment.uname}}</text>
<text class="color-666">{{comment.content}}</text>
</view>
</view>
<view class="ml15 font-22 color-36afa2 text-right" bindtap="optShowComment" data-id="{{item.id}}">
<text class="iconfont icon-pinglun"></text>
<text class="ml10">评论</text>
</view>
</view>
<i class="absolute box-middle mt15 bg-fff line-height-11 font-22 color-999 iconfont icon-jiantou-up z-index-1" wx:if="{{index+1 != logslist.length}}"></i>
<text class="absolute orderDtail-log-line2 z-index-0" wx:if="{{index != logslist.length-1}}"></text>
@@ -145,111 +117,428 @@
</view>
</view>
</view>
<view class="mt30 pl5 pr5 pb150" wx:elif="{{tabid == tab[2].id}}">
<view>
<block wx:for="{{detailinfo.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
<text class="inline-block mr10 pt5 pb5 pl20 pr20 bg-f3f6fc font-22 ulib-r5">{{tag}}</text>
</block>
<view class="mt30 pl50 pr30 pb200" wx:elif="{{tabid == 2}}">
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt20" wx:if="{{list.have}}">
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
<view class="pl150">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
<block wx:for='{{daoDianList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt20" wx:if="{{list.have}}">
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
<view class="pl150">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
<block wx:for='{{gouMaiList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt20" wx:if="{{list.have}}">
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
<view class="pl150">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
</view>
<view class="mt30 pl50 pr30 pb200" wx:elif="{{tabid == 3}}">
<view class="relative mt20" wx:if="{{detailinfo.defeat.reason}}">
<view class="absolute left-0 box-middle font-28">战败理由</view>
<view class="pl150 font-28 color-666">
{{detailinfo.defeat.reason}}
</view>
</view>
<!-- <block wx:for='{{defeatList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt20" wx:if="{{list.have}}">
<view class="absolute left-0 box-middle font-28">{{list.name}}</view>
<view class="pl150">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt5 mb5 mr10 pt10 pb10 pl20 pr20 font-22 ulib-r10 bg-f3f6fc" wx:if="{{option.checked}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block> -->
</view>
</view>
<view class="fixed left-0 bottom-0 right-0 bg-fff-op80 pl40 pr40 pt20 pb40 z-index-1">
<view class="fn-flex" wx:if="{{optDefeat}}">
<button class="fn-flex-item bds-2-36afa2 bg-fff mr20 pt10 pb10 text-center font-32 color-36afa2 ulib-r750" bindtap="putAppCustomersDefeats" data-type="0">战败</button>
<button class="fn-flex-item btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" bindtap="putAppCustomersDefeats" data-type="1">再战</button>
</view>
<view class="fn-flex" wx:else>
<button class="fn-flex-item bds-2-36afa2 bg-fff mr20 pt10 pb10 text-center font-32 color-36afa2 ulib-r750" bindtap="optShowNote"><i class="iconfont icon-xiaoji mr10"></i>小记</button>
<button class="fn-flex-item btn-36afa2 ml20 pt10 pb10 text-center font-32 color-fff ulib-r750" bindtap="showSelectStatus">变更状态</button>
<view class="fixed left-0 bottom-0 right-0 bg-fff-op90 pl40 pr40 pt20 pb40 z-index-1">
<!-- <view>
<button bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}" class="inline-block btn-36afa2 font-22 color-fff ulib-r10" hover-class="btn-36afa2-hover"></button>
</view> -->
<view class="fn-flex text-center">
<view class="fn-flex-item flexsize3 pt10 color-36afa2" bindtap="pushLink" data-url="/pages/customer/editCard/index?id={{id}}">
<i class="iconfont icon-bianjiwenjian font-36"></i>
<view class="font-22">修改信息</view>
</view>
<block wx:if="{{optDefeat}}">
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="putAppCustomersDefeats" data-type="0">
战败
</view>
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="putAppCustomersDefeats" data-type="1">
再战
</view>
</block>
<block wx:elif="{{detailinfo.status==2}}">
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
客户跟进
</view>
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="optShowOrder">
订单(复购)
</view>
</block>
<block wx:elif="{{detailinfo.status==3}}">
<view class="fn-flex-item flexsize4 pt20 pb20 bds-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
客户跟进
</view>
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750" bindtap="optShowNote">
再战
</view>
</block>
<block wx:else>
<view class="fn-flex-item flexsize4 pt20 pb20 bts-2-36afa2 bls-2-36afa2 bbs-2-36afa2 bg-fff font-32 color-36afa2 ulib-rl750" bindtap="optShowNote">
客户跟进
</view>
<view class="fn-flex-item flexsize4 pt20 pb20 btn-36afa2 font-32 color-fff ulib-rr750 {{detailinfo.generate_order||userInfo.group_id==2||userInfo.group_id==3||userInfo.group_id==4?'':'opacity-50'}}" bindtap="{{detailinfo.generate_order||userInfo.group_id==2||userInfo.group_id==3||userInfo.group_id==4?'pushLink':''}}" data-url="/pages/order/register/index?cus_id={{detailinfo.id}}&name={{detailinfo.name}}&mobile={{detailinfo.mobile}}&complete_mobile={{detailinfo.complete_mobile}}">
生成订单
</view>
</block>
</view>
</view>
</view>
<lcb-backChannel></lcb-backChannel>
<page-container show="{{isShowTimePicker}}" round="{{true}}" overlay="true" duration="300" z-index="10000" position="bottom" close-on-slide-down="{{false}}" bindenter="onEnter" custom-style="false" overlay-style="false">
<view class="">
<view class="relative pt30 pb30 text-center font-30">
<view class="color-666">计划回访时间</view>
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
</view>
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
<block wx:for="{{weekList}}" wx:key="index">
<view class="fn-flex-item">{{item}}</view>
</block>
</view>
<view class="pb40 relative">
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
<block wx:for="{{dateList}}" wx:key="index">
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">
{{item.day}}
</view>
</block>
</view>
</view>
</view>
</page-container>
<lcb-msg isShow="{{isShowMessage}}">
<view slot="content">
<view class="inner40">
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" maxlength='100' placeholder="请输入短信内容" bindinput='inputTx' data-key="content" name='content' value='{{content}}' />
<view slot="content">
<view class="inner40">
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" placeholder-class="color-ccc" maxlength='100' placeholder="请输入短信内容" bindinput='inputTx' data-key="content" name='content' value='{{content}}' />
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="hideMessage" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
<button bindtap="hideMessage" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowNote}}">
<view slot="content">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center">新增小记</view>
<textarea class="mt30 wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请输入小记内容" bindinput='inputTx' data-key="note" name='note' style="height:150rpx;" value='{{note}}' />
</view>
<view class="mt30 pl25 pr25 pb40">
<view class="fn-flex">
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
<view class="fn-flex-item ml15 mr15 relative">
<i class="absolute top-0 right-0 bg-ccc iconfont icon-shanchu inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}" ></i>
<image class='img-250x150 ulib-r10' src='{{photos.img_url}}' mode='aspectFill'></image>
</view>
</block>
<block wx:if="{{photos.length==0}}">
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
</block>
<block wx:elif="{{photos.length==1}}">
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
</block>
<view slot="content" class="pt20">
<view class="mt30 pl30 pr30 font-28 text-center fn-flex" wx:if="{{detailinfo.status ==3}}">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 0?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="0">
未见客户
</view>
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 1?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="1">
到店客户
</view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowNote" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="postAppCustomerlogs" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
<view class="mt30 pl30 pr30 font-28 text-center fn-flex" wx:elif="{{detailinfo.status!=2}}">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 0?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="0">
未见客户
</view>
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 1?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="1">
到店客户
</view>
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{statuskey == 3?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="radioPicker" data-key="3">
战败客户
</view>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowSelectStatus}}">
<view slot="content">
<view class="mt50 font-36 text-center">变更状态</view>
<scroll-view class="pb50" scroll-y="true" style="max-height:600rpx;width:620rpx">
<view class="mt20 pl20 pr15 font-28 fn-clear">
<block wx:for="{{stateList}}" wx:key='index'>
<view wx:if="{{item.key<=detailinfo.status}}" class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10 opacity-50">
<text>{{item.name}}</text>
<i class="absolute right-0 box-middle mr30 iconfont icon-danxuan_xuanzhong color-36afa2"></i>
</view>
<view wx:else class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="radioPicker" data-key="{{item.key}}">
<text>{{item.name}}</text>
<i class="absolute right-0 box-middle mr30 iconfont {{statuskey == item.key?'icon-danxuan_xuanzhong color-36afa2':'icon-danxuan color-999'}}"></i>
</view>
</block>
</view>
<view class="pt20 pl40 pr40" wx:if="{{statuskey==3}}">
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" style="height:120rpx;" placeholder-class="color-ccc" maxlength='100' placeholder="请填写战败理由" bindinput='inputTx' data-key="defeat_reason" name='defeat_reason' value='{{defeat_reason}}' />
</view>
<view class="mt40 bts-1-eb ml40 mr40"></view>
<view class="mt20 pl20 pr15 font-28 fn-clear">
<view class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="checkPicker" data-pointer="daodian">
<text>到店 +1次</text>
<i class="absolute right-0 box-middle mr30 iconfont {{a_num == 1?'icon-fuxuansel color-36afa2':'icon-fuxuankuang color-999'}}"></i>
<scroll-view scroll-y="true" style="max-height:1000rpx;">
<block wx:if="{{statuskey==0||statuskey==1}}">
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">跟进渠道</view>
<picker class="fn-fr wp60 text-right" bindchange="changeFollow" value="{{followIndex}}" range="{{follow}}">
<text class="color-ccc" wx:if="{{followIndex == -1}}">请选择</text>
<text wx:else>{{follow[followIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<view class="fn-fl wp45 relative mt20 ml20 inner30 bg-f6 ulib-r10" bindtap="checkPicker" data-pointer="shijia">
<text>试驾 +1次</text>
<i class="absolute right-0 box-middle mr30 iconfont {{t_num == 1?'icon-fuxuansel color-36afa2':'icon-fuxuankuang color-999'}}"></i>
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">客户等级</view>
<view class="fn-fr wp60 text-right" wx:if="{{detailinfo.status==0&&statuskey==1}}">H</view>
<picker class="fn-fr wp60 text-right" bindchange="changeLevel" value="{{levelIndex}}" range="{{level}}" wx:else>
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
<text wx:else>{{level[levelIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<block wx:for='{{daoDianTag}}' wx:for-item='list' wx:for-index='i' wx:key='i' wx:if="{{statuskey==0}}">
<view class="relative mt20 pl40 pr40">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="daoDianRadioPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="daoDianCheckPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
<block wx:for='{{gouMaiTag}}' wx:for-item='list' wx:for-index='i' wx:key='i' wx:if="{{statuskey==1}}">
<view class="relative mt20 pl40 pr40">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="gouMaiRadioPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="gouMaiCheckPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
<view class="mt20 bds-2-eb ml40 mr40 inner20 font-28 {{levelIndex>-1?'color-666':'color-ccc'}} fn-clear ulib-r10">
<view class="fn-fl">计划回访时间</view>
<view bindtap="{{levelIndex>-1?'optShowTimePicker':''}}" class="fn-fr wp60 text-right">
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</view>
</block>
<view class="mt20 ml40 mr40 font-28 text-center relative mr10 pt20 pb20 ulib-r10 overflowhidden {{baseinfo.wxgr==1?'opacity-80':''}} {{wxgr == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="{{baseinfo.wxgr==1?'':'checkPicker'}}" data-pointer="gewei" wx:if="{{statuskey==0}}">
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{wxgr == 1}}"></i>
<text>已添加个微</text>
</view>
<view class="mt20 pl40 pr40 font-28 text-center fn-flex" wx:if="{{statuskey==1}}">
<view class="fn-flex-item flexsize6 relative mr10 pt20 pb20 ulib-r10 overflowhidden {{baseinfo.wxgr==1?'opacity-80':''}} {{wxgr == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="{{baseinfo.wxgr==1?'':'checkPicker'}}" data-pointer="gewei">
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{wxgr == 1}}"></i>
<text>已添加个微</text>
</view>
<view class="fn-flex-item flexsize5 relative ml10 mr10 pt20 pb20 ulib-r10 overflowhidden {{a_num == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="checkPicker" data-pointer="daodian">
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{a_num == 1}}"></i>
<text>再次到店</text>
</view>
<view class="fn-flex-item flexsize5 relative ml10 pt20 pb20 ulib-r10 overflowhidden {{t_num == 1?'bg-36afa2 color-fff':'bg-f6'}}" style="height:78rpx;box-sizing:border-box;" bindtap="checkPicker" data-pointer="shijia">
<i class="absolute right-0 bottom-0 iconfont font-32 icon-xuanzhongjiaobiao" style="color:#56ffed;" wx:if="{{t_num == 1}}"></i>
<text>客户试驾</text>
</view>
</view>
<view class="mt20 text-center" wx:if="{{(statuskey==0||statuskey==1)&&wxgr==1}}">
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
<block wx:if="{{wxgrimg_url}}">
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
</view>
</block>
<block wx:else>
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-42"></i>
<view class="mt10 font-22">上传个微截图</view>
</view>
</view>
</block>
</view>
</view>
<block wx:if="{{statuskey!=3}}">
<view class="mt15 pl40 pr40">
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:200rpx;" placeholder-class="color-ccc" placeholder="请输入小记内容" bname='note' model:value='{{note}}' />
</view>
<view class="mt20 pl25 pr25">
<view class="fn-flex">
<block wx:for='{{photos}}' wx:for-item='photos' wx:for-index="index" wx:key='photo'>
<view class="fn-flex-item ml15 mr15 relative">
<i class="absolute top-0 right-0 bg-ccc iconfont icon-shanchu inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="delPic" data-index="{{index}}"></i>
<image class='img-250x150 ulib-r10' src='{{photos.img_url}}' mode='aspectFill'></image>
</view>
</block>
<block wx:if="{{photos.length==0}}">
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
</block>
<block wx:elif="{{photos.length==1}}">
<view class="fn-flex-item ml15 mr15 relative" bindtap="chooseImg" data-type="note_img">
<image class='img-250x150 ulib-r10' src='{{imgUrl}}common/add-pic.jpg' mode='aspectFill'></image>
</view>
</block>
</view>
</view>
</block>
<view class="pl40 pr40" wx:if="{{statuskey==3}}">
<view class="mt20 bds-2-eb inner20 font-28 color-666 ulib-r10">
<picker class="fn-clear" bindchange="changeDefeat" value="{{defeatIndex}}" range="{{defeatTitleList}}">
<view class="wp90 fn-fl text-nowrap color-ccc" wx:if="{{defeatIndex == -1}}">请选择</view>
<view class="wp90 fn-fl text-nowrap" wx:else>{{defeatTitleList[defeatIndex]}}</view>
<i class="fn-fr iconfont mt5 ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<block wx:if="{{defeatIndex > -1}}">
<view class="fn-clear" wx:if="{{defeatTag[defeatIndex].type=='radio'}}">
<block wx:for='{{defeatTag[defeatIndex].list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatRadioPicker" data-i="{{defeatIndex}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{defeatTag[defeatIndex].type=='checkbox'}}">
<block wx:for='{{defeatTag[defeatIndex].list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatCheckPicker" data-i="{{defeatIndex}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</block>
<!-- <block wx:for='{{defeatTag}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt20">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatRadioPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="defeatCheckPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block> -->
<view class="mt20">
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:200rpx;" placeholder-class="color-ccc" maxlength='100' placeholder="请填写战败理由" name='defeat_reason' model:value='{{defeat_reason}}' />
</view>
</view>
</scroll-view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="cancelSelectStatus" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">取消</button>
<button bindtap="putAppCustomers" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
<view class="fn-flex mt20 pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowNote" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button disabled="{{submitFlag}}" bindtap="putAppCustomers" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowOrder}}">
<view slot="content">
<view class="mt50 font-36 text-center">查看订单</view>
<scroll-view class="pb50" scroll-y="true" style="max-height:600rpx;width:620rpx">
<view class="inner40">
<block wx:for='{{order}}' wx:key='index'>
<view class="inner30 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/order/detail/index{{item.id>=v2OrderId?'2':''}}?id={{item.id}}">
<view class="font-32 text-bold">{{item.name}}</view>
<view class="mt10 font-28 color-666">{{item.mobile}}</view>
<view class="mt10 font-28 color-666">{{item.car_name}}</view>
<i class="absolute right-0 mr30 box-middle iconfont icon-gengduo text-middle font-44 color-ccc"></i>
</view>
</block>
</view>
</scroll-view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowOrder" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">
返回
</button>
<button class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover" bindtap="pushLink" data-url="/pages/order/register/index?cus_id={{detailinfo.id}}&name={{detailinfo.name}}&mobile={{detailinfo.mobile}}&complete_mobile={{detailinfo.complete_mobile}}">
生成订单
</button>
</view>
<!-- <view class="pl60 pr60 pb50 text-center font-32 color-666" wx:else>
<button bindtap="optShowOrder" class="bds-2-36afa2 btn-no-bg wp45 font-28 color-36afa2 ulib-r750" hover-class="btn-36afa2-hover">
返回
</button>
</view> -->
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowComment}}">
<view slot="content">
<view class="inner40">
<view class="font-36 text-center">小记评论</view>
<view class="mt20">
<textarea class="wp100 inner20 bds-2-eb font-28 ulib-r10" style="height:170rpx;" placeholder-class="color-ccc" maxlength='100' placeholder="请输入评论内容" model:value='{{comment}}' />
</view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowComment" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button disabled="{{submitFlag}}" bindtap="postAppCustomersComments" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</lcb-msg>
<!-- 拨打电话 -->
<lcb-msg isShow="{{isShowCall}}">
<view slot="content">
<view class="pt50 pb40">
<view class="font-36 text-center">号码绑定成功</view>
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} </view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</lcb-msg>
+391 -125
View File
@@ -4,29 +4,43 @@ Page({
data: {
name:'',//名字
mobile:'',//手机号
brand_id:'',//品牌
car_id:'',//车系id
v_id:'',//车型级别id
color_id:'',//颜色id
buy_time:'',//预计购车时间
brandIndex:-1,//车辆品牌索引
modelIndex:-1,//车型车系索引
colorArray:[],//车型颜色列表
levelArray:[],//车型级别列表
colorIndex:-1,//车型颜色索引
levelIndex:-1,//车型级别索引
timeArray:[],//预计购车时间列表
timeIndex:-1,//预计购车时间索引
cf_clues:'',//线索来源
cluesArray:[
'自然进店',
'外展外拓',
'转介绍',
'垂直媒体',
'自媒体',
],//线索来源
cluesIndex:-1,//索来源索引
// brand_id:'',//品牌
// car_id:'',//车系id
// v_id:'',//车辆版本id
// color_id:'',//颜色id
// brandIndex:-1,//车辆品牌索引
// modelIndex:-1,//车系车型索引
// colorArray:[],//车身颜色列表
// levelArray:[],//车辆版本列表
// colorIndex:-1,//车身颜色索引
// levelIndex:-1,//车辆版本索引
c_brands:[
'综合','东风纳米','哪吒','零跑'
],
c_brandArray:[
{id:0, name:'综合'},
{id:1, name:'东风纳米'},
{id:4, name:'哪吒'},
{id:5, name:'零跑'},
],
submitFlag:false,
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
c_brandIndex:-1,
cityIndex:-1,
city_id:'',
countyIndex:-1,
county_id:'',
wxgr:0,//是否添加个微
wxgrimg:'',//个微
wxgrimg_url:'',//个微
},
//生命周期函数--监听页面加载
onLoad: function (options) {
@@ -36,6 +50,7 @@ Page({
})
}
this.getAppCustomerData()
this.getAppCustomersTag()
},
//获取客户详细信息
@@ -47,23 +62,27 @@ Page({
baseinfo:res.data.baseinfo,
name:res.data.baseinfo.name.value?res.data.baseinfo.name.value:'',
mobile:res.data.baseinfo.mobile.value?res.data.baseinfo.mobile.value:'',
cf_clues:res.data.baseinfo.cf_clues.value?res.data.baseinfo.cf_clues.value:'',
of_id:res.data.baseinfo.of_id.of_id?res.data.baseinfo.of_id.of_id:'',
of2_id:res.data.baseinfo.of_id.of2_id?res.data.baseinfo.of_id.of2_id:'',
wxgr:res.data.baseinfo.wxgr,
wxgrimg:res.data.baseinfo.wxgrimg,
wxgrimg_url:res.data.baseinfo.wxgrimg_url,
})
if(res.data.baseinfo.cf_clues.value){
this.data.cluesArray.forEach((item,index) => {
if(item == res.data.baseinfo.cf_clues.value){
this.setData({
cluesIndex:index,
})
}
})
}
this.data.c_brandArray.forEach((item,index) => {
if(res.data.baseinfo.c_brand == item.id){
this.setData({
c_brandIndex:index
})
}
})
//编辑基础信息使用
this.getAppSeriesBrands()
this.getAppSeriesedit()
this.getAppCustomersFilter()
//获取车型品牌
//this.getAppSeriesBrands()
//匹配车系车型
//this.getAppSeriesedit()
this.getAppCustomersOffline_sources()
})
},
@@ -91,14 +110,13 @@ Page({
})
}
})
}
}
});
},
//匹配车型车
//匹配车系车型
getAppSeriesedit(){
let params = {};
params['brand_id'] = this.data.baseinfo.brand_id.value;
@@ -124,7 +142,7 @@ Page({
}
})
//匹配颜色 车型级别
//匹配颜色 车辆版本
this.getAppSeriesAttrsleveledit()
}
@@ -133,7 +151,7 @@ Page({
});
},
//编辑品牌时车型车
//编辑品牌时车系车型
getAppSeries(){
let params = {};
params['brand_id'] = this.data.brand_id;
@@ -151,7 +169,7 @@ Page({
});
},
//获取车型级别 ---编辑匹配信息
//获取车辆版本 ---编辑匹配信息
getAppSeriesAttrsleveledit(){
let params = {};
@@ -186,7 +204,7 @@ Page({
});
},
//获取车颜色 ---编辑匹配信息
//获取车颜色 ---编辑匹配信息
getAppSeriesAttrscoloredit(){
let params = {};
params['id'] = this.data.modelList[this.data.modelIndex].id;
@@ -220,7 +238,7 @@ Page({
},
//获取车型级别
//获取车辆版本
getAppSeriesAttrslevel(){
let params = {};
params['id'] = this.data.car_id;
@@ -240,7 +258,7 @@ Page({
});
},
//获取车颜色
//获取车颜色
getAppSeriesAttrscolor(){
let params = {};
params['id'] = this.data.car_id;
@@ -261,33 +279,6 @@ Page({
});
},
//获取列表筛选条件-时间
getAppCustomersFilter(){
_.apiQuery.getAppCustomersFilter().then(res => {
let timeArray = []
res.data.buy_time.forEach(item => {
timeArray.push(item + '天')
})
this.setData({
timeArray:timeArray,
timeList:res.data.buy_time,
})
if(this.data.baseinfo.buy_time.value != 0){
res.data.buy_time.forEach((item,index) => {
if(item == this.data.baseinfo.buy_time.value){
this.setData({
buy_time:this.data.baseinfo.buy_time.value,
timeIndex:index,
})
}
})
}
});
},
//输入
inputTx(e) {
this.setData({
@@ -296,6 +287,15 @@ Page({
})
},
//选择城市
changeCbrand(e) {
if(this.data.c_brandIndex!=e.detail.value){
this.setData({
c_brandIndex:e.detail.value,
})
}
},
//选择品牌
changeBrand(e) {
if(this.data.brandIndex != e.detail.value && e.detail.value >= 0){
@@ -303,15 +303,15 @@ Page({
brand_id:this.data.brandList[e.detail.value].id,
brandIndex:e.detail.value,
car_id:'',//车系id
v_id:'',//车型级别id
color_id:'',//车颜色id
v_id:'',//车辆版本id
color_id:'',//车颜色id
incolor_id:'',//内饰颜色id
modelIndex:-1,//车型车系索引
colorArray:[],//车颜色列表
levelArray:[],//车型级别列表
modelIndex:-1,//车系车型索引
colorArray:[],//车颜色列表
levelArray:[],//车辆版本列表
interiorArray:[],//内饰颜色
colorIndex:-1,//车颜色索引
levelIndex:-1,//车型级别索引
colorIndex:-1,//车颜色索引
levelIndex:-1,//车辆版本索引
interiorIndex:-1,//内饰颜色索引
priceinfo:'',
})
@@ -325,14 +325,14 @@ Page({
this.setData({
car_id:this.data.modelList[e.detail.value].id,
modelIndex:e.detail.value,
v_id:'',//车型级别id
color_id:'',//车颜色id
v_id:'',//车辆版本id
color_id:'',//车颜色id
incolor_id:'',//内饰颜色id
colorArray:[],//车颜色列表
levelArray:[],//车型级别列表
colorArray:[],//车颜色列表
levelArray:[],//车辆版本列表
interiorArray:[],//内饰颜色
colorIndex:-1,//车颜色索引
levelIndex:-1,//车型级别索引
colorIndex:-1,//车颜色索引
levelIndex:-1,//车辆版本索引
interiorIndex:-1,//内饰颜色索引
priceinfo:'',
})
@@ -340,21 +340,21 @@ Page({
}
},
//车型级别
//车辆版本
changeLevel(e) {
if(this.data.levelIndex != e.detail.value && e.detail.value >= 0){
this.setData({
v_id:this.data.levelList[e.detail.value].id,
levelIndex:e.detail.value,
color_id:'',//车颜色id
colorArray:[],//车颜色列表
colorIndex:-1,//车颜色索引
color_id:'',//车颜色id
colorArray:[],//车颜色列表
colorIndex:-1,//车颜色索引
})
this.getAppSeriesAttrscolor()
}
},
//车颜色
//车颜色
changeColor(e) {
if(this.data.colorIndex != e.detail.value && e.detail.value >= 0){
this.setData({
@@ -364,22 +364,6 @@ Page({
}
},
//线索来源
changeClues(e) {
this.setData({
cf_clues:this.data.cluesArray[e.detail.value],
cluesIndex:e.detail.value,
})
},
//预计购车时间
changeTime(e) {
this.setData({
buy_time:this.data.timeList[e.detail.value],
timeIndex:e.detail.value,
})
},
//编辑客户
putAppCustomerData() {
@@ -389,58 +373,107 @@ Page({
title: '请输入客户姓名',
icon: 'none'
})
} else if (that.data.mobile == '' ){
} else if (that.data.mobile != that.data.baseinfo.mobile.value&&!/^1[3456789]\d{9}$/.test(that.data.mobile)){
wx.showToast({
title: '请输入正确的手机号码',
icon: 'none'
})
}else if(that.data.car_id == '' ){
}
else if (that.data.c_brandArray.length>0&&that.data.c_brandIndex == -1 ) {
wx.showToast({
title: '请选择车型车系',
title: '请选择客户品牌归属',
icon: 'none'
})
}else if(that.data.v_id == '' ){
}
else if (that.data.sources.length>0&&that.data.of_id == '' ) {
wx.showToast({
title: '请选择车型级别',
title: '请选择客户来源',
icon: 'none'
})
}else if(that.data.color_id == '' ){
}
else if (that.data.sources.length>0&&that.data.sources[that.data.of1Index].list.length>0&&that.data.of2_id == '' ) {
wx.showToast({
title: '请选择车型颜色',
title: '请选择'+that.data.sources[that.data.of1Index].name+'类型',
icon: 'none'
})
} else if(that.data.name==that.data.baseinfo.name.value&&that.data.mobile==that.data.baseinfo.mobile.value&&that.data.cf_clues==that.data.baseinfo.cf_clues.value&&that.data.car_id==that.data.baseinfo.car_id.value&&that.data.v_id==that.data.baseinfo.v_id.value&&that.data.color_id==that.data.baseinfo.color_id.value&&that.data.buy_time==that.data.baseinfo.buy_time.value){
}
else if (that.data.city_id == '' ) {
wx.showToast({
title: '好像没改什么',
title: '请选择所在城市',
icon: 'none'
})
}else{
}
else if (that.data.county_id == '' ) {
wx.showToast({
title: '请选择所在地区',
icon: 'none'
})
}
else if(this.data.wxgr==1&&this.data.wxgrimg==''){
wx.showToast({
title: '请上传个微截图',
icon: 'none'
})
}
// else if(that.data.car_id == '' ){
// wx.showToast({
// title: '请选择车系车型',
// icon: 'none'
// })
// }else if(that.data.v_id == '' ){
// wx.showToast({
// title: '请选择车辆版本',
// icon: 'none'
// })
// }else if(that.data.color_id == '' ){
// wx.showToast({
// title: '请选择车身颜色',
// icon: 'none'
// })
// }
// else if(that.data.name==that.data.baseinfo.name.value&&that.data.mobile==that.data.baseinfo.mobile.value&&that.data.of_id==that.data.baseinfo.of_id.of_id&&that.data.of2_id==that.data.baseinfo.of_id.of2_id&&that.data.car_id==that.data.baseinfo.car_id.value&&that.data.v_id==that.data.baseinfo.v_id.value&&that.data.color_id==that.data.baseinfo.color_id.value){
// wx.showToast({
// title: '好像没改什么',
// icon: 'none'
// })
// }
else{
that.setData({
submitFlag: true,
})
let params = {};
params['cus_id'] = that.data.id;
params['tag'] = that.data.taglList;
if(that.data.name != that.data.baseinfo.name.value){
params['name'] = that.data.name;
}
if(that.data.mobile != that.data.baseinfo.mobile.value){
params['mobile'] = that.data.mobile;
}
if(that.data.cf_clues != that.data.baseinfo.cf_clues.value){
params['cf_clues'] = that.data.cf_clues;
if(this.data.c_brandIndex != -1){
params['c_brand'] = this.data.c_brandArray[this.data.c_brandIndex].id;
}
if(that.data.car_id != that.data.baseinfo.car_id.value){
params['car_id'] = that.data.car_id;
if(that.data.of_id != that.data.baseinfo.of_id.of_id){
params['of_id'] = that.data.of_id;
}
if(that.data.v_id != that.data.baseinfo.v_id.value){
params['v_id'] = that.data.v_id;
if(that.data.of2_id != that.data.baseinfo.of_id.of2_id){
params['of2_id'] = that.data.of2_id;
}
if(that.data.color_id != that.data.baseinfo.color_id.value){
params['color_id'] = that.data.color_id;
}
if(that.data.buy_time != that.data.baseinfo.buy_time.value){
params['buy_time'] = that.data.buy_time;
params['city_id'] = that.data.city_id;
params['county_id'] = that.data.county_id;
// if(that.data.car_id != that.data.baseinfo.car_id.value){
// params['car_id'] = that.data.car_id;
// }
// if(that.data.v_id != that.data.baseinfo.v_id.value){
// params['v_id'] = that.data.v_id;
// }
// if(that.data.color_id != that.data.baseinfo.color_id.value){
// params['color_id'] = that.data.color_id;
// }
params['wxgr'] = this.data.wxgr;
if(this.data.wxgr==1){
params['wxgrimg'] = this.data.wxgrimg;
}
_.apiQuery.putAppCustomerData(params).then(res => {
@@ -473,6 +506,7 @@ Page({
success(res) {
if (res.confirm) {
that.getAppCustomerData()
that.getAppCustomersTag()
} else if (res.cancel) {
wx.navigateBack({
delta: 1
@@ -490,4 +524,236 @@ Page({
}
},
//客户来源
getAppCustomersOffline_sources(){
_.apiQuery.getAppCustomersOffline_sources().then(res => {
let of1Arr = []
res.data.sources.forEach(item => {
of1Arr.push(item.name)
})
this.setData({
of1Arr,
sources:res.data.sources
})
if(this.data.of_id != ''){
res.data.sources.forEach((item,index) => {
if(item.id == this.data.of_id){
this.setData({
of1Index:index,
})
}
})
if(this.data.of2Index != ''){
let of2Arr = []
res.data.sources[this.data.of1Index].list.forEach((item,index) => {
of2Arr.push(item.name)
if(item.id == this.data.of2_id){
this.setData({
of2Index:index,
})
}
})
this.setData({
of2Arr,
})
}
}
});
},
//客户来源
changeOf1(e) {
if(this.data.of1Index!=e.detail.value){
let of2Arr = []
this.data.sources[e.detail.value].list.forEach(item => {
of2Arr.push(item.name)
})
this.setData({
of2Arr,
of2Index:-1,
of_id:this.data.sources[e.detail.value].id,
of1Index:e.detail.value,
})
}
},
changeOf2(e) {
if(this.data.of2Index!=e.detail.value){
this.setData({
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
of2Index:e.detail.value,
})
}
},
//客户标签
getAppCustomersTag(){
let params = {};
params['id'] = this.data.id;
_.apiQuery.getAppCustomersTag(params).then(res => {
this.setData({
city_id:res.data.city_id,
county_id:res.data.county_id,
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
})
//获取城市
this.getAppCityArea_city()
//获取地区
this.getAppCityArea_county()
});
},
//单选
radioPicker(e){
let taglList = this.data.taglList
taglList[e.currentTarget.dataset.i].list.forEach(item => {
item.checked=false
})
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
this.setData({
taglList,
})
},
//多选
checkPicker(e){
this.setData({
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
})
},
//获取城市
getAppCityArea_city(){
let params = {};
params['type'] = 'city';
_.apiQuery.getAppCityArea(params).then(res => {
let cityArr = []
let cityIndex = -1
res.data.list.forEach((item,index) => {
cityArr.push(item.name)
if(this.data.city_id == item.id){
cityIndex = index
}
})
this.setData({
cityIndex,
cityArr,
city:res.data.list
})
});
},
//获取行政区
getAppCityArea_county(){
let params = {};
params['pid'] = this.data.city_id;
params['type'] = 'county';
_.apiQuery.getAppCityArea(params).then(res => {
let countyArr = []
let countyIndex = -1
res.data.list.forEach((item,index) => {
countyArr.push(item.name)
if(this.data.county_id == item.id){
countyIndex = index
}
})
this.setData({
countyIndex,
countyArr,
county:res.data.list
})
});
},
//选择城市
changeCity(e) {
if(this.data.cityIndex!=e.detail.value){
this.setData({
cityIndex:e.detail.value,
city_id:this.data.city[e.detail.value].id,
})
this.getAppCityArea_county()
}
},
//选择地区
changeCounty(e) {
if(this.data.countyIndex!=e.detail.value){
this.setData({
countyIndex:e.detail.value,
county_id:this.data.county[e.detail.value].id,
})
}
},
//是否添加个微
switchWxgr:function(e){
this.setData({
wxgr:e.detail.value ? 1 :0
})
},
//选择图片
chooseImg(e) {
let that = this
//上传个微截图
if(e.currentTarget.dataset.type=='gw_img'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
if (resp.data.code == 200) {
wx.hideLoading();
that.setData({
wxgrimg:resp.data.data.url,
wxgrimg_url:resp.data.data.full_url,
})
}else{
wx.hideLoading();
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
},
//查看图片
previewImage(e){
if(e.currentTarget.dataset.type=='gw_img'){
wx.previewImage({
current:this.data.wxgrimg_url,
urls:[this.data.wxgrimg_url],
})
}
},
})
+100 -22
View File
@@ -14,6 +14,16 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">品牌归属</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeCbrand" value="{{c_brandIndex}}" range="{{c_brands}}">
<text class="color-ccc" wx:if="{{c_brandIndex == -1}}">请选择</text>
<text wx:else>{{c_brands[c_brandIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
@@ -24,8 +34,8 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
<text wx:else>{{modelArray[modelIndex]}}</text>
@@ -34,8 +44,8 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车型级别</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车辆版本</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{levelArray}}">
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
<text wx:else>{{levelArray[levelIndex]}}</text>
@@ -44,44 +54,112 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{modelIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车颜色</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车颜色</view>
<view class="pt30 pb30 text-right font-28 color-666 text-nowrap">
<picker bindchange="changeColor" value="{{colorIndex}}" range="{{colorArray}}">
<text class="color-ccc" wx:if="{{colorIndex == -1}}">请选择</text>
<text wx:else>{{colorArray[colorIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view> -->
<block wx:if="{{sources.length>0}}">
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户来源</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
<text wx:else>{{of1Arr[of1Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
<text wx:else>{{of2Arr[of2Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</block>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">线索来源</view>
<!-- <view>
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入线索来源" bindinput='inputTx' data-key="cf_clues" name='cf_clues' value='{{cf_clues}}' />
</view> -->
<view class="absolute left-0 box-middle">所在城市</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeClues" value="{{cluesIndex}}" range="{{cluesArray}}">
<text class="color-ccc" wx:if="{{cluesIndex == -1}}">请选择</text>
<text wx:else>{{cluesArray[cluesIndex]}}</text>
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
<text wx:else>{{cityArr[cityIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">预计购车时间</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
<view class="absolute left-0 box-middle">所在地区</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeTime" value="{{timeIndex}}" range="{{timeArray}}">
<text class="color-ccc" wx:if="{{timeIndex == -1}}">请选择</text>
<text wx:else>{{timeArray[timeIndex]}}</text>
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
<text wx:else>{{countyArr[countyIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl180 font-28">
<view class="absolute left-0 box-middle">是否添加个微</view>
<view class="relative pt30 pb30 text-right">
<switch class="{{baseinfo.wxgr==1?'opacity-50':''}}" checked="{{wxgr==1}}" bindchange="switchWxgr" type="switch" color='#36afa2' disabled='{{baseinfo.wxgr==1}}' style="zoom:0.8" />
</view>
</view>
<view class="mt30 text-center" wx:if="{{wxgr==1}}">
<view class="inline-block img-250x150 relative ulib-r10 overflowhidden">
<block wx:if="{{wxgrimg_url}}">
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-type="gw_img"></i>
<image class='block wp100 img-250x150 ulib-r10' src='{{wxgrimg_url}}' mode='aspectFit' bindtap="previewImage" data-type="gw_img"></image>
</view>
</block>
<block wx:else>
<view class="inline-block bg-f8 img-250x150 relative ulib-r10 overflowhidden" bindtap="chooseImg" data-type="gw_img">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-42"></i>
<view class="mt10 font-22">上传个微截图</view>
</view>
</view>
</block>
</view>
</view>
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt30">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="radioPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-36afa2 color-fff':'bg-f6 color-666'}}" bindtap="checkPicker" data-i="{{i}}" data-j="{{j}}">
{{option.name}}
</view>
</block>
</view>
</view>
</block>
</view>
<view class="mt60 pl60 pr60">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCustomerData">确认编辑</button>
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCustomerData">
确认
</button>
</view>
</view>
</view>
<lcb-footer></lcb-footer>
+456 -4
View File
@@ -18,10 +18,36 @@ Page({
if_driver:'',//是否试驾
level:'',//客户顶级
s_id:'',//车型id
v_id:'',//车型级别id
v_id:'',//车辆版本id
cfrom:'',//客户来源
o_type:'',//排序类型
visit:'',//只显示待回访客户(1是)
a_id:'',//活动ID
level:'',//客户级别
status:'',//客户状态
status_tp:'',
tab:[],//回访待跟进tab
visit_tab_id:'',//回访待跟进tabid
isShowTimePicker:false,
weekList:['日','一','二','三','四','五','六'],
dateList:[],
nextIndex:-1,//计划回访时间
distTabId:1,
distBizIndex:-1,
distBiz_id:'',
bizArray: [],
bizobj: [],
isShowfilter:false,//是否显示筛查
levelIndex:-1,//意向等级索引
staffArray: [],
staffobj: [],
staffIndex:-1,
userInfo:'',
isShowCall:false,//是否显示拨打电话确认弹框
phoneNumber:'',//拨打的电话号码
},
onLoad(options) {
for (let key in options) {
@@ -29,7 +55,20 @@ Page({
[key]: options[key]
})
}
this.getAppCustomersList()
this.setData({
userInfo:app.getStorageByKey("userInfo"),
})
//顶部tab
this.getAppCustomersVisit_tabs()
//销售顾问
this.getAppUserAdmins()
this.getTimePicker()
this.getAppCustomersFilter()
wx.setNavigationBarTitle({
title: this.data.title||'客户'
@@ -40,6 +79,42 @@ Page({
},
//回访待跟进tab
getAppCustomersVisit_tabs() {
let params = {};
if(this.data.status != ''){
params['status'] = this.data.status;
}
_.apiQuery.getAppCustomersVisit_tabs(params).then(res => {
if(res.data.list.length>0){
this.setData({
tab:res.data.list,
visit_tab_id:res.data.list[0].id,
})
}
this.getAppCustomersList()
wx.stopPullDownRefresh()
});
},
//获取列表筛选条件
getAppCustomersFilter(){
_.apiQuery.getAppCustomersFilter().then(res => {
this.setData({
filter:res.data,
})
});
},
//选择人员
changeStaff(e) {
this.setData({
staffIndex: e.detail.value
})
},
//获取客户列表
getAppCustomersList() {
this.setData({
@@ -85,6 +160,26 @@ Page({
if(this.data.o_type != ''){
params['o_type'] = this.data.o_type;
}
if(this.data.a_id != ''){
params['a_id'] = this.data.a_id;
}
if(this.data.level != ''){
params['level'] = this.data.level;
}
if(this.data.status != ''){
params['status'] = this.data.status;
}
if(this.data.status_tp != ''){
params['status_tp'] = this.data.status_tp;
}
if(this.data.visit_tab_id != ''){
params['visit_tab_id'] = this.data.visit_tab_id;
}
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppCustomersList(params).then(res => {
this.setData({
total: res.data.total,
@@ -124,12 +219,79 @@ Page({
params['id'] = e.currentTarget.dataset.id;
params['type'] = 0;
_.apiQuery.getAppXz(params).then(res=>{
wx.makePhoneCall({
phoneNumber: res.data.mobile,
this.setData({
isShowCall:true,
phoneNumber:res.data.mobile,
})
})
},
//提交搜索
searchSubmit(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag: this.data.flag + 1
})
this.getAppCustomersList()
},
//客户等级
changeLevel(e){
let level = ''
if(e.detail.value >= 0){
level = this.data.filter.level[e.detail.value]
}
this.setData({
level:level,
levelIndex: e.detail.value,
})
},
//显示隐藏高级搜索
optfilter(){
this.setData({
isShowfilter: !this.data.isShowfilter
})
this.resetFilter()
},
//显示高级搜索
showfilter(){
this.setData({
isShowfilter:true,
})
},
//确定高级搜索
submitFilter() {
this.setData({
isShowfilter:false,
})
this.searchSubmit()
},
//重置高级搜索
resetFilter() {
let staffobj = this.data.staffobj
staffobj.forEach(item => {
item.checked = false
})
this.setData({
staffobj,
level:'',
levelIndex:-1,
staffIndex:-1,
})
},
//显示短信弹框
showMessage(e){
this.setData({
@@ -190,6 +352,296 @@ Page({
}
},
//获取销售顾问
getAppUserAdmins(){
let params = {};
params['page'] = 1;
params['size'] = 1000;
_.apiQuery.getAppUserAdmins(params).then(res => {
let staffArray = []
res.data.list.forEach(item => {
staffArray.push(item.uname)
})
let bizArray = []
res.data.bizs.forEach(item => {
bizArray.push(item.name)
})
this.setData({
staffArray:staffArray,
staffobj: res.data.list,
distributetabs:res.data.tabs,
bizArray:bizArray,
bizobj: res.data.bizs,
})
});
},
//销售弹窗显示隐藏
optEmployees(e){
if(e.currentTarget.dataset.cid){
this.setData({
isShowEmployees:true,
employeeIndex:-1,
employee_id:'',
cid:[e.currentTarget.dataset.cid],
optLevel:e.currentTarget.dataset.level,
})
}else{
this.setData({
isShowEmployees:!this.data.isShowEmployees,
employeeIndex:-1,
employee_id:'',
cid:[],
optLevel:'',
nextIndex:-1,
distTabId:1,
distBiz_id:'',
distBizIndex:-1,
})
}
},
//选择店员
changeEmployee(e) {
let employee_id = ''
if(e.detail.value >= 0){
employee_id = this.data.staffobj[e.detail.value].id
}
this.setData({
employee_id,
employeeIndex:e.detail.value,
})
},
//分配客户
putAppCustomersAdmins(){
let that = this
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
wx.showToast({
title: '请选择店员',
icon: 'none'
})
}
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
wx.showToast({
title: '请选择计划回访时间',
icon: 'none'
})
}
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
wx.showToast({
title: '请选择门店',
icon: 'none'
})
}
else{
that.setData({
submitFlag: true,
})
let params = {};
params['ids'] = that.data.cid;
if(that.data.distTabId==1){
params['admin_id'] = that.data.employee_id;
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
}
if(that.data.distTabId==2){
params['biz_id'] = that.data.distBiz_id;
}
_.apiQuery.putAppCustomersAdmins(params).then(res => {
wx.showToast({
title: '分配成功',
icon: 'success',
duration: 2000
})
that.setData({
isShowEmployees:false,
submitFlag:false,
nextIndex:-1,
})
that.onPullDownRefresh()
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
},
//候取当前月日历
getTimePicker(){
let date = new Date();
let cYear = date.getFullYear(); //年份
let cMonth = date.getMonth()+1; //当前月份
let cDay = date.getDate();//当前日期
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
let days = new Date(cYear,cMonth,-1)
let cn = days.getDate()+1 //当月天数
let rn = ''//上个月天数
if (cMonth === 1) {
rn = 31
} else {
rn = new Date(cYear,cMonth-1,-1).getDate()+1
}
let dateList = []
for(let i=0;i<fweek;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 1?cYear-1:cYear,
month:cMonth == 1?12:cMonth-1,
day:rn-i,
})
}
for(let i=1;i<=cn;i++){
dateList.push({
isopt:false,
checked:false,
year:cYear,
month:cMonth,
day:i
})
}
if((cn-cDay)>29){//相差15天以上不用特意补下个月
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
let sbu = 6 - lweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}else{
let zbu = 30 - (cn-cDay) //至少要补多少天
let bweek = ''//至少要补的最后一天星期几
if(cMonth==12){
bweek = new Date(cYear+1,1,zbu).getDay()
}else{
bweek = new Date(cYear,cMonth,zbu).getDay()
}
let sbu = zbu + 6 - bweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}
this.setData({
cYear,
cMonth,
cDay,
dateList,
})
},
//显示隐藏时间选择器
optShowTimePicker(){
this.setData({
isShowTimePicker:!this.data.isShowTimePicker,
})
let kd = 15 //可操作天数
if(this.data.optLevel=='H'){
kd = 3
}else if(this.data.optLevel=='A'){
kd = 7
}else if(this.data.optLevel=='B'){
kd = 15
}else if(this.data.optLevel=='C'){
kd = 30
}
let cindex = ''
let dateList = this.data.dateList
dateList.forEach((item,index) => {
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
cindex = index
}
})
dateList.forEach((item,index) => {
item.isopt = false
if(cindex<=index&&index<cindex+kd+1){
item.isopt = true
}
})
this.setData({
dateList,
})
},
//选择计划回访时间
optday(e){
if(this.data.nextIndex != e.currentTarget.dataset.index){
this.setData({
nextIndex:e.currentTarget.dataset.index,
})
}
},
//切换tab
changeTab(e){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
visit_tab_id: e.currentTarget.dataset.id,
})
this.getAppCustomersList()
},
//切换分配本地,其他门店
changeDistTab(e){
this.setData({
distTabId:e.currentTarget.dataset.id,
employeeIndex:-1,
employee_id:'',
nextIndex:-1,
distBiz_id:'',
distBizIndex:-1,
})
},
//分配选择门店
changeDistBiz(e) {
let distBiz_id = ''
if(e.detail.value >= 0){
distBiz_id = this.data.bizobj[e.detail.value].id
}
this.setData({
distBiz_id,
distBizIndex:e.detail.value,
})
},
//隐藏电话弹框
hideCall(){
this.setData({
isShowCall:false,
})
},
//拨打电话
makePhoneCall(){
wx.makePhoneCall({
phoneNumber: this.data.phoneNumber,
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
+204 -11
View File
@@ -1,18 +1,52 @@
<view class="container">
<view wx:if="{{tab.length>0}}">
<view style="padding-top:110rpx"></view>
<view class="fixed top-0 left-0 right-0 bg-fff pl30 pr30 z-index-1">
<view class="fn-flex mt5 pl20 pr20 font-32 color-666 text-center" wx:if="{{tab.length<5}}">
<block wx:for='{{tab}}' wx:key='list'>
<view class="fn-flex-item pl20 pr20 tabmenu2 {{visit_tab_id == item.id?'active color-36afa2':''}}" data-id="{{item.id}}" bindtap="changeTab">
<view class="relative">{{item.name}}</view>
</view>
</block>
</view>
<scroll-view class="mt5 font-32 color-666 text-center space-nowrap" scroll-x="true" wx:else>
<block wx:for='{{tab}}' wx:key='list'>
<view class="pl20 pr20 tabmenu2 {{visit_tab_id == item.id?'active color-36afa2':''}}" data-id="{{item.id}}" bindtap="changeTab" >
<view class="relative">{{item.name}}</view>
</view>
</block>
</scroll-view>
</view>
</view>
<view class="pl40 pb15 fn-clear">
<view class="fn-fl">
<text class="text-middle">共<text class="color-f9394d"> {{total}} </text>位客户</text>
</view>
<view class="fn-fr pr40 relative">
<text bindtap="showfilter" class="inner5 iconfont icon-gaojisousuo ml10"></text>
</view>
</view>
<view class="mt10 pl30 pr30">
<block wx:for='{{list}}' wx:key='index'>
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
<view class="absolute top-0 left-0 ml40 bg-36afa2 pl10 pr10 font-22 color-fff" wx:if="{{item.defeat}}">{{item.defeat}}</view>
<view wx:if="{{item.complete_mobile}}" class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff">
<text class="pl10 pr10" wx:if="{{item.tip}}">{{item.tip}}</text>
<text class="pl10 pr10 {{item.defeat?'bls-1-eb':''}}" wx:if="{{item.defeat}}">{{item.defeat}}</text>
<text class="pl10 pr10 {{item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
</view>
<view class="relative pr180">
<view class="font-32">
<text>{{item.name}}</text>
<text class="font-26 color-666">({{item.mobile}})</text>
<text class="iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
<text class="text-middle">{{item.name}}</text>
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{item.is_weChat}}"></text>
<text class="text-middle iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
</view>
<view class="text-nowrap">
<text class="mr15 font-22 color-666">编号{{item.id}}</text>
<text class="mr15 font-22 color-666">编号 {{item.id}}</text>
<block wx:for="{{item.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
</block>
@@ -21,9 +55,9 @@
</block>
</view>
<view class="absolute right-0 box-middle">
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
</view>
<!--view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
</view-->
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
</view>
@@ -33,10 +67,40 @@
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{key}}</view>
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
<block wx:if="{{key=='销售顾问'}}">
<view class="fn-fr wp60 text-nowrap text-right">
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
<text class="text-middle color-f9394d" wx:else>待分配</text>
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
</view>
</block>
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
</view>
</block>
</view>
<view wx:elif="{{item.nickname}}" class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff">
<text class="pl10 pr10" wx:if="{{item.tip}}">{{item.tip}}</text>
<text class="pl10 pr10 {{item.defeat?'bls-1-eb':''}}" wx:if="{{item.defeat}}">{{item.defeat}}</text>
<text class="pl10 pr10 {{item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
</view>
<view class="text-nowrap">
<image class='img-50x50 bds-1-eb ulib-r750 text-middle' lazy-load="{{true}}" mode="scaleToFill" src="{{item.avatar}}"></image>
<text class="pl10 text-middle font-26">{{item.nickname}}</text>
</view>
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{key}}</view>
<block wx:if="{{key=='销售顾问'}}">
<view class="fn-fr wp60 text-nowrap text-right">
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
<text class="text-middle color-f9394d" wx:else>待分配</text>
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
</view>
</block>
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
</view>
</block>
</view>
</block>
<lcb-listmore isLoading='{{loading}}' isEnd='{{end}}' isNoData='{{noData}}'></lcb-listmore>
@@ -46,6 +110,40 @@
<lcb-footer></lcb-footer>
<lcb-backChannel></lcb-backChannel>
<view class="search-sort {{!isShowfilter?'fn-hide':''}} {{!isShowfilter?'sortout':'sortin'}} bg-fff fixed top-0 bottom-0 z-index-2 ulib-rl20 overflowhidden">
<scroll-view class="wp100" scroll-y="true" style="height:90%">
<view class="pt10 pb10 pl30 pr30">
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">意向等级</view>
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{filter.level}}">
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
<text wx:else>{{filter.level[levelIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{staffArray.length>0&&userInfo.group_id>1}}">
<view class="absolute left-0 box-middle">销售顾问</view>
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeStaff" value="{{staffIndex}}" range="{{staffArray}}">
<text class="color-ccc" wx:if="{{staffIndex == -1}}">请选择</text>
<text wx:else>{{staffArray[staffIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view>
<view class="pt50 pb100"></view>
</scroll-view>
<view class="absolute left-0 bottom-0 right-0 fn-flex pt20 pb200 pl60 pr60 bg-fff-op90 text-center">
<view class="fn-flex-item mr20 pt15 pb15 bds-2-36afa2 font-32 color-36afa2 ulib-r750" bindtap="resetFilter">重置</view>
<view class="fn-flex-item ml20 pt15 pb15 bg-36afa2 font-32 color-fff ulib-r750" bindtap="submitFilter">确定</view>
</view>
</view>
<view class="search-bg fixed left-0 right-0 top-0 bottom-0" bindtap="optfilter" hidden="{{!isShowfilter}}" style="background-color:rgba(0,0,0,.5);"></view>
<lcb-msg isShow="{{isShowMessage}}">
<view slot="content">
<view class="inner40">
@@ -56,4 +154,99 @@
<button disabled="{{submitFlag}}" bindtap="postAppSmsCustomer" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowEmployees}}">
<view slot="content">
<view class="inner30">
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
<block wx:for="{{distributetabs}}" wx:key="index">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
</block>
</view>
<block wx:if="{{distTabId == 1}}">
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">销售顾问</view>
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{staffArray}}">
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
<text wx:else>{{staffArray[employeeIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">计划回访时间</view>
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</view>
</block>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
<view class="fn-fl">门店名称</view>
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
<view class="text-nowrap">
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
<text wx:else>{{bizArray[distBizIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</picker>
</view>
</view>
<view class="fn-flex ml10 mr10 pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
<page-container
show="{{isShowTimePicker}}"
round="{{true}}"
overlay="true"
duration="300"
z-index="10000"
position="bottom"
close-on-slide-down="{{false}}"
bindenter="onEnter"
custom-style="false"
overlay-style="false"
>
<view class="">
<view class="relative pt30 pb30 text-center font-30">
<view class="color-666">计划回访时间</view>
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
</view>
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
<block wx:for="{{weekList}}" wx:key="index">
<view class="fn-flex-item">{{item}}</view>
</block>
</view>
<view class="pb40 relative">
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
<block wx:for="{{dateList}}" wx:key="index">
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
</block>
</view>
</view>
</view>
</page-container>
<!-- 拨打电话 -->
<lcb-msg isShow="{{isShowCall}}">
<view slot="content">
<view class="pt50 pb40">
<view class="font-36 text-center">号码绑定成功</view>
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} </view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</lcb-msg>
+584 -95
View File
@@ -18,25 +18,27 @@ Page({
e_time:'',//结束时间
if_driver:'',//是否试驾
level:'',//客户顶级
brand_id:'',//品牌
s_id:'',//车型id
v_id:'',//车型级别id
// brand_id:'',//品牌
// s_id:'',//车型id
// v_id:'',//车辆版本id
cfrom:'',//客户来源
o_type:'',//排序类型
isShowfilter:false,//是否显示筛查
timeSlotIndex:-1,//常用时间索引
s_visit_time:'',//跟进时间段开始
e_visit_time:'',//跟进时间段结束
timeSlot:[//常用时间数组
{
title:'今天',
},
{
title:'天',
title:'天',
},
{
title:'近七天',
title:'未来三天',
},
{
title:'近三十天',
title:'未来七天',
},
],
testDriveIndex:-1,//是否试驾索引
@@ -55,25 +57,45 @@ Page({
sortListIndex:0,//排序索引
levelIndex:-1,//意向等级索引
brandIndex:-1,//车辆品牌索引
modelIndex:-1,//车型车系索引
modelIndex:-1,//车系车型索引
cfromIndex:-1,//客户来源索引
isShowMessage:false,//是否显示短信弹窗
content:'',//短信内容
isRefresh:false,//判断返回是否需要刷新
isShowMobile: false,
cf_clues:'',//线索来源
cluesArray:[
'自然进店',
'外展外拓',
'转介绍',
'垂直媒体',
'自媒体',
],//线索来源
cluesIndex:-1,//索来源索引
staffArray: [],
staffobj: [],
staffIndex:-1,
userInfo:app.getStorageByKey("userInfo")
userInfo:'',
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
cid:[],//分配客户ID
employee_id:'',//分配销售ID
employeeIndex:-1,//分配销售索引
isShowTimePicker:false,
weekList:['日','一','二','三','四','五','六'],
dateList:[],
nextIndex:-1,//计划回访时间
distTabId:1,
distBizIndex:-1,
distBiz_id:'',
bizArray: [],
bizobj: [],
tag_ids:'',
cityIndex:-1,
city_id:'',
countyIndex:-1,
county_id:'',
isShowCall:false,//是否显示拨打电话确认弹框
phoneNumber:'',//拨打的电话号码
},
onLoad(options) {
for (let key in options) {
@@ -81,13 +103,33 @@ Page({
[key]: options[key]
})
}
this.setData({
userInfo:app.getStorageByKey("userInfo"),
})
//客户-tab
this.getAppCustomersTabs()
//获取列表筛选条件
this.getAppCustomersFilter()
this.getAppSeriesBrands()
//获取车型品牌
//this.getAppSeriesBrands()
//销售顾问
this.getAppUserAdmins()
//客户来源
this.getAppCustomersOffline_sources()
this.getTimePicker()
this.getAppCustomersTag()
//获取城市列表
this.getAppCityArea_city()
},
onShow(){
//获取常用时间段
this.getDateLater()
},
@@ -115,9 +157,16 @@ Page({
res.data.list.forEach(item => {
staffArray.push(item.uname)
})
let bizArray = []
res.data.bizs.forEach(item => {
bizArray.push(item.name)
})
this.setData({
staffArray:staffArray,
staffobj: res.data.list,
distributetabs:res.data.tabs,
bizArray:bizArray,
bizobj: res.data.bizs,
})
});
},
@@ -162,7 +211,7 @@ Page({
});
},
//获取车型车
//获取车系车型
getAppSeries(){
let params = {};
params['brand_id'] = this.data.brand_id;
@@ -193,9 +242,21 @@ Page({
load: false,
loading: true,
})
let admin_ids = ''
this.data.staffobj.forEach(item => {
if(item.checked){
if(admin_ids==''){
admin_ids=item.id
}else{
admin_ids=admin_ids+','+item.id
}
}
})
let params = {};
params['page'] = this.data.pageNo;
params['size'] = 10;
params['size'] = 3;
params['status'] = this.data.key;
if(this.data.cus_id != ''){
params['cus_id'] = this.data.cus_id;
@@ -206,10 +267,8 @@ Page({
if(this.data.mobile != ''){
params['mobile'] = this.data.mobile;
}
if(this.data.s_time != ''){
if(this.data.s_time != ''&&this.data.e_time != ''){
params['s_time'] = this.data.s_time;
}
if(this.data.e_time != ''){
params['e_time'] = this.data.e_time;
}
if(this.data.if_driver != ''){
@@ -218,26 +277,45 @@ Page({
if(this.data.level != ''){
params['level'] = this.data.level;
}
if(this.data.brand_id != ''){
params['brand_id'] = this.data.brand_id;
}
if(this.data.s_id != ''){
params['s_id'] = this.data.s_id;
}
if(this.data.v_id != ''){
params['v_id'] = this.data.v_id;
}
// if(this.data.brand_id != ''){
// params['brand_id'] = this.data.brand_id;
// }
// if(this.data.s_id != ''){
// params['s_id'] = this.data.s_id;
// }
// if(this.data.v_id != ''){
// params['v_id'] = this.data.v_id;
// }
if(this.data.cfrom != ''){
params['cfrom'] = this.data.cfrom;
}
if(this.data.o_type != ''){
params['o_type'] = this.data.o_type;
}
if(this.data.cf_clues != ''){
params['cf_clues'] = this.data.cf_clues;
if(this.data.of_id != ''){
params['of_id'] = this.data.of_id;
}
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
if(this.data.of2_id != ''){
params['of2_id'] = this.data.of2_id;
}
if(admin_ids!=''){
params['admin_ids'] = admin_ids;
}
if(this.data.tag_ids!=''){
params['tag_ids'] = this.data.tag_ids;
}
// if(this.data.staffIndex>-1){
// params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
// }
if(this.data.city_id!=''){
params['city_id'] = this.data.city_id;
}
if(this.data.county_id!=''){
params['county_id'] = this.data.county_id;
}
if(this.data.s_visit_time != ''&&this.data.e_visit_time != ''){
params['s_visit_time'] = this.data.s_visit_time;
params['e_visit_time'] = this.data.e_visit_time;
}
_.apiQuery.getAppCustomersList(params).then(res => {
this.setData({
@@ -277,28 +355,38 @@ Page({
})
},
//取常用时间段
//取常用时间段
getDateLater(){
popularData.getDateLater(0,0).then(res => {
this.setData({
today:res,
})
})
popularData.getDateLater(1,0).then(res => {
popularData.getDateLater(-1,0).then(res => {
this.setData({
tomorrow:res,
})
})
popularData.getDateLater(0,6).then(res => {
popularData.getDateLater(-3,2).then(res => {
this.setData({
last7:res,
next3:res,
})
})
popularData.getDateLater(0,29).then(res => {
popularData.getDateLater(-7,6).then(res => {
this.setData({
last30:res,
next7:res,
})
})
// popularData.getDateLater(0,6).then(res => {
// this.setData({
// last7:res,
// })
// })
// popularData.getDateLater(0,29).then(res => {
// this.setData({
// last30:res,
// })
// })
},
//拨打客户电话xz
@@ -307,8 +395,9 @@ Page({
params['id'] = e.currentTarget.dataset.id;
params['type'] = 0;
_.apiQuery.getAppXz(params).then(res=>{
wx.makePhoneCall({
phoneNumber: res.data.mobile,
this.setData({
isShowCall:true,
phoneNumber:res.data.mobile,
})
})
},
@@ -349,7 +438,6 @@ Page({
this.setData({
s_time: e.detail.value,
})
this.matchDate()
},
//建卡时间
@@ -357,34 +445,6 @@ Page({
this.setData({
e_time: e.detail.value,
})
this.matchDate()
},
//匹配选择时间是否等于常用时间
matchDate(){
this.setData({
timeSlotIndex:-1,
})
if(this.data.s_time == this.data.today[0] && this.data.e_time == this.data.today[1] ){
this.setData({
timeSlotIndex:0,
})
}
if(this.data.s_time == this.data.tomorrow[0] && this.data.e_time == this.data.tomorrow[1] ){
this.setData({
timeSlotIndex:1,
})
}
if(this.data.s_time == this.data.last7[0] && this.data.e_time == this.data.last7[1] ){
this.setData({
timeSlotIndex:2,
})
}
if(this.data.s_time == this.data.last30[0] && this.data.e_time == this.data.last30[1] ){
this.setData({
timeSlotIndex:3,
})
}
},
//单选
@@ -396,26 +456,26 @@ Page({
switch (e.currentTarget.dataset.index) {
case 0:
this.setData({
s_time:this.data.today[0],
e_time:this.data.today[1],
s_visit_time:this.data.today[0],
e_visit_time:this.data.today[1],
})
break;
case 1:
this.setData({
s_time:this.data.tomorrow[0],
e_time:this.data.tomorrow[1],
s_visit_time:this.data.tomorrow[0],
e_visit_time:this.data.tomorrow[1],
})
break;
case 2:
this.setData({
s_time:this.data.last7[0],
e_time:this.data.last7[1],
s_visit_time:this.data.next3[0],
e_visit_time:this.data.next3[1],
})
break;
case 3:
this.setData({
s_time:this.data.last30[0],
e_time:this.data.last30[1],
s_visit_time:this.data.next7[0],
e_visit_time:this.data.next7[1],
})
break;
}
@@ -454,7 +514,7 @@ Page({
brand_id:this.data.brandList[e.detail.value].id,
brandIndex:e.detail.value,
s_id:'',//车系id
modelIndex:-1,//车型车系索引
modelIndex:-1,//车系车型索引
})
this.getAppSeries()
}
@@ -484,15 +544,7 @@ Page({
})
},
//线索来源
changeClues(e) {
this.setData({
cf_clues:this.data.cluesArray[e.detail.value],
cluesIndex:e.detail.value,
})
},
//显示高级搜索
//显示隐藏高级搜索
optfilter(){
this.setData({
isShowfilter: !this.data.isShowfilter
@@ -500,6 +552,13 @@ Page({
this.resetFilter()
},
//显示高级搜索
showfilter(){
this.setData({
isShowfilter:true,
})
},
//确定高级搜索
submitFilter() {
this.setData({
@@ -510,7 +569,13 @@ Page({
//重置高级搜索
resetFilter() {
let staffobj = this.data.staffobj
staffobj.forEach(item => {
item.checked = false
})
this.setData({
staffobj,
cus_id:'',//编号
name:'',//名字
mobile:'',//手机号
@@ -518,19 +583,29 @@ Page({
e_time:'',
if_driver:'',
level:'',
brand_id:'',
s_id:'',
// brand_id:'',
// s_id:'',
cfrom:'',
cf_clues:'',//线索来源
of_id:'',
of2_id:'',
of1Index:-1,
of2Index:-1,
timeSlotIndex:-1,
s_visit_time:'',//跟进时间段开始
e_visit_time:'',//跟进时间段结束
testDriveIndex:-1,
levelIndex:-1,
brandIndex:-1,
modelIndex:-1,
cfromIndex:-1,
cluesIndex:-1,//索来源索引
staffIndex:-1,
tag_ids:'',
cityIndex:-1,
city_id:'',
countyIndex:-1,
county_id:'',
})
this.getAppCustomersTag()
},
//显示短信弹框
@@ -593,6 +668,420 @@ Page({
}
},
//客户来源
getAppCustomersOffline_sources(){
_.apiQuery.getAppCustomersOffline_sources().then(res => {
let of1Arr = []
res.data.sources.forEach(item => {
of1Arr.push(item.name)
})
this.setData({
of1Arr,
sources:res.data.sources
})
});
},
//客户来源
changeOf1(e) {
if(this.data.of1Index!=e.detail.value){
let of2Arr = []
this.data.sources[e.detail.value].list.forEach(item => {
of2Arr.push(item.name)
})
this.setData({
of2Arr,
of2Index:-1,
of_id:this.data.sources[e.detail.value].id,
of1Index:e.detail.value,
})
}
},
changeOf2(e) {
if(this.data.of2Index!=e.detail.value){
this.setData({
of2_id:this.data.sources[this.data.of1Index].list[e.detail.value].id,
of2Index:e.detail.value,
})
}
},
//销售弹窗显示隐藏
optEmployees(e){
if(e.currentTarget.dataset.cid){
this.setData({
isShowEmployees:true,
employeeIndex:-1,
employee_id:'',
cid:[e.currentTarget.dataset.cid],
optLevel:e.currentTarget.dataset.level,
})
}else{
this.setData({
isShowEmployees:!this.data.isShowEmployees,
employeeIndex:-1,
employee_id:'',
cid:[],
optLevel:'',
nextIndex:-1,
distTabId:1,
distBiz_id:'',
distBizIndex:-1,
})
}
},
//选择店员
changeEmployee(e) {
let employee_id = ''
if(e.detail.value >= 0){
employee_id = this.data.staffobj[e.detail.value].id
}
this.setData({
employee_id,
employeeIndex:e.detail.value,
})
},
//分配客户
putAppCustomersAdmins(){
let that = this
if (that.data.distTabId==1&&that.data.employeeIndex == -1 ) {
wx.showToast({
title: '请选择店员',
icon: 'none'
})
}
else if (that.data.distTabId==1&&that.data.nextIndex == -1 ) {
wx.showToast({
title: '请选择计划回访时间',
icon: 'none'
})
}
else if (that.data.distTabId==2&&that.data.distBizIndex == -1 ) {
wx.showToast({
title: '请选择门店',
icon: 'none'
})
}
else{
that.setData({
submitFlag: true,
})
let params = {};
params['ids'] = that.data.cid;
if(that.data.distTabId==1){
params['admin_id'] = that.data.employee_id;
params['visit_time'] = that.data.dateList[that.data.nextIndex].year +'-'+ that.data.dateList[that.data.nextIndex].month +'-'+ that.data.dateList[that.data.nextIndex].day;
}
if(that.data.distTabId==2){
params['biz_id'] = that.data.distBiz_id;
}
_.apiQuery.putAppCustomersAdmins(params).then(res => {
wx.showToast({
title: '分配成功',
icon: 'success',
duration: 2000
})
that.setData({
isShowEmployees:false,
submitFlag:false,
nextIndex:-1,
})
that.onPullDownRefresh()
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
},
//候取当前月日历
getTimePicker(){
let date = new Date();
let cYear = date.getFullYear(); //年份
let cMonth = date.getMonth()+1; //当前月份
let cDay = date.getDate();//当前日期
let fweek = new Date(cYear,cMonth-1,1).getDay();//本月第一天星期几
let days = new Date(cYear,cMonth,-1)
let cn = days.getDate()+1 //当月天数
let rn = ''//上个月天数
if (cMonth === 1) {
rn = 31
} else {
rn = new Date(cYear,cMonth-1,-1).getDate()+1
}
let dateList = []
for(let i=0;i<fweek;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 1?cYear-1:cYear,
month:cMonth == 1?12:cMonth-1,
day:rn-i,
})
}
for(let i=1;i<=cn;i++){
dateList.push({
isopt:false,
checked:false,
year:cYear,
month:cMonth,
day:i
})
}
if((cn-cDay)>29){//相差15天以上不用特意补下个月
let lweek = new Date(cYear,cMonth-1,cn).getDay();//本月最后天星期几
let sbu = 6 - lweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}else{
let zbu = 30 - (cn-cDay) //至少要补多少天
let bweek = ''//至少要补的最后一天星期几
if(cMonth==12){
bweek = new Date(cYear+1,1,zbu).getDay()
}else{
bweek = new Date(cYear,cMonth,zbu).getDay()
}
let sbu = zbu + 6 - bweek //最后一周补齐
for(let i=1;i<=sbu;i++){
dateList.push({
isopt:false,
checked:false,
year:cMonth == 12?cYear+1:cYear,
month:cMonth == 12?1:cMonth+1,
day:i
})
}
}
this.setData({
cYear,
cMonth,
cDay,
dateList,
})
},
//显示隐藏时间选择器
optShowTimePicker(){
this.setData({
isShowTimePicker:!this.data.isShowTimePicker,
})
let kd = 15 //可操作天数
if(this.data.optLevel=='H'){
kd = 3
}else if(this.data.optLevel=='A'){
kd = 7
}else if(this.data.optLevel=='B'){
kd = 15
}else if(this.data.optLevel=='C'){
kd = 30
}
let cindex = ''
let dateList = this.data.dateList
dateList.forEach((item,index) => {
if(item.year == this.data.cYear&&item.month == this.data.cMonth&&item.day == this.data.cDay){
cindex = index
}
})
dateList.forEach((item,index) => {
item.isopt = false
if(cindex<=index&&index<cindex+kd+1){
item.isopt = true
}
})
this.setData({
dateList,
})
},
//选择计划回访时间
optday(e){
if(this.data.nextIndex != e.currentTarget.dataset.index){
this.setData({
nextIndex:e.currentTarget.dataset.index,
})
}
},
//切换分配本地,其他门店
changeDistTab(e){
this.setData({
distTabId:e.currentTarget.dataset.id,
employeeIndex:-1,
employee_id:'',
nextIndex:-1,
distBiz_id:'',
distBizIndex:-1,
})
},
//分配选择门店
changeDistBiz(e) {
let distBiz_id = ''
if(e.detail.value >= 0){
distBiz_id = this.data.bizobj[e.detail.value].id
}
this.setData({
distBiz_id,
distBizIndex:e.detail.value,
})
},
//多选
checkPicker(e){
this.setData({
['staffobj['+e.currentTarget.dataset.index+'].checked']:!this.data.staffobj[e.currentTarget.dataset.index].checked,
})
},
//客户标签
getAppCustomersTag(){
_.apiQuery.getAppCustomersTag().then(res => {
this.setData({
taglList:res.data.tags&&res.data.tags.length>0?res.data.tags:[],
})
});
},
//单选
tagRadioPicker(e){
let taglList = this.data.taglList
taglList[e.currentTarget.dataset.i].list.forEach(item => {
item.checked=false
})
taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked=true
this.setData({
taglList,
})
this.tagforEach()
},
//多选
tagCheckPicker(e){
this.setData({
['taglList['+e.currentTarget.dataset.i+'].list['+e.currentTarget.dataset.j+'].checked']:!this.data.taglList[e.currentTarget.dataset.i].list[e.currentTarget.dataset.j].checked,
})
this.tagforEach()
},
//tag遍历
tagforEach(){
let taglList = this.data.taglList
let tag_ids = ''
taglList.forEach(itemA => {
itemA.list.forEach(itemB => {
if(itemB.checked){
itemA.have=true
if(tag_ids==''){
tag_ids=itemB.id
}else{
tag_ids=tag_ids+','+itemB.id
}
}
})
})
this.setData({
tag_ids,
taglList,
})
},
//获取城市
getAppCityArea_city(){
let params = {};
params['type'] = 'city';
_.apiQuery.getAppCityArea(params).then(res => {
let cityArr = []
let cityIndex = -1
res.data.list.forEach((item,index) => {
cityArr.push(item.name)
// if(this.data.city_id == item.id){
// cityIndex = index
// }
})
this.setData({
cityIndex,
cityArr,
city:res.data.list
})
});
},
//获取行政区
getAppCityArea_county(){
let params = {};
params['pid'] = this.data.city_id;
params['type'] = 'county';
_.apiQuery.getAppCityArea(params).then(res => {
let countyArr = []
let countyIndex = -1
res.data.list.forEach((item,index) => {
countyArr.push(item.name)
if(this.data.county_id == item.id){
countyIndex = index
}
})
this.setData({
countyIndex,
countyArr,
county:res.data.list
})
});
},
//选择城市
changeCity(e) {
if(this.data.cityIndex!=e.detail.value){
this.setData({
cityIndex:e.detail.value,
city_id:this.data.city[e.detail.value].id,
})
this.getAppCityArea_county()
}
},
//选择地区
changeCounty(e) {
if(this.data.countyIndex!=e.detail.value){
this.setData({
countyIndex:e.detail.value,
county_id:this.data.county[e.detail.value].id,
})
}
},
//隐藏电话弹框
hideCall(){
this.setData({
isShowCall:false,
})
},
//拨打电话
makePhoneCall(){
wx.makePhoneCall({
phoneNumber: this.data.phoneNumber,
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
+240 -53
View File
@@ -29,25 +29,57 @@
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
<view class="fn-fr pr180 relative">
<text bindtap="optfilter" class="inner5 iconfont icon-gaojisousuo ml10"></text>
<view bindtap="pushLink" data-url="/pages/customer/addCard/index" class="absolute right-0 box-middle pt10 pb10 pl10 pr30 space-nowrap bg-333 font-22 color-fff ulib-rl750"><i class="iconfont mr5 icon-jia"></i>客户建卡</view>
<view class="fn-fr {{key<2?'pr180':'pr40'}} relative">
<text bindtap="showfilter" class="inner5 iconfont icon-gaojisousuo ml10"></text>
<view bindtap="pushLink" data-url="/pages/customer/addCard/index?status={{key}}" class="absolute right-0 box-middle pt10 pb10 pl10 pr30 space-nowrap bg-333 font-22 color-fff ulib-rl750" wx:if="{{key<2}}"><i class="iconfont mr5 icon-jia"></i>客户建卡</view>
</view>
</view>
<view class="mt10 pl30 pr30">
<view class="pl20 pr20 fn-flex fn-flex-wrap">
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{cus_id}}">{{cus_id}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{name}}">{{name}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{mobile}}">{{mobile}}</view>
<block wx:for="{{city}}" wx:key='index'>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.id==city_id}}">{{item.name}}</view>
</block>
<block wx:for="{{county}}" wx:key='index'>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.id==county_id}}">{{item.name}}</view>
</block>
<block wx:if="{{s_time&&e_time}}">
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22">{{s_time}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22">{{e_time}}</view>
</block>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{timeSlotIndex>-1}}">{{timeSlot[timeSlotIndex].title}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{levelIndex>-1}}">{{filter.level[levelIndex]}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{of1Index>-1}}">{{of1Arr[of1Index]}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{of2Index>-1}}">{{of2Arr[of2Index]}}</view>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{staffIndex>-1}}">{{staffArray[staffIndex]}}</view>
<block wx:for="{{staffobj}}" wx:key='index'>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{item.checked}}">{{item.uname}}</view>
</block>
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<block wx:if="{{list.have}}" wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block text-middle bg-f6 color-666 mb15 ml5 mr5 pt5 pb5 pl20 pr20 ulib-r10 font-22" wx:if="{{option.checked}}">{{option.name}}</view>
</block>
</block>
</view>
<view class="mt10 pl30 pr30">
<block wx:for='{{list}}' wx:key='index'>
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/customer/detail/index?id={{item.id}}">
<view class="absolute top-0 left-0 ml40 bg-36afa2 pl10 pr10 font-22 color-fff" wx:if="{{item.defeat}}">{{item.defeat}}</view>
<view class="absolute top-0 left-0 ml40 bg-36afa2 font-22 color-fff" wx:if="{{item.defeat||item.orders_pay}}">
<text class="pl10 pr10" wx:if="{{item.defeat}}">{{item.defeat}}</text>
<text class="pl10 pr10 {{item.defeat&&item.orders_pay?'bls-1-eb':''}}" wx:if="{{item.orders_pay}}">{{item.orders_pay}}</text>
</view>
<view class="relative pr180">
<view class="font-32">
<text>{{item.name}}</text>
<text class="font-26 color-666">({{item.mobile}})</text>
<text class="iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
<text class="text-middle">{{item.name}}</text>
<text class="text-middle font-26 color-666">({{item.mobile}})</text>
<text class="text-middle iconfont icon-weixin1 ml10 color-00c800" wx:if="{{item.is_weChat}}"></text>
<text class="text-middle iconfont icon-xingxing ml10 {{item.is_top==1?'color-f9394d':'color-ccc'}}" catchtap="optTop" data-index="{{index}}"></text>
</view>
<view class="text-nowrap">
<text class="mr15 font-22 color-666">编号{{item.id}}</text>
<text class="mr15 font-22 color-666">编号 {{item.id}}</text>
<block wx:for="{{item.tags}}" wx:for-index='i' wx:for-item='tag' wx:key='i'>
<text class="inline-block mr10 pl10 pr10 bg-666 font-18 color-fff ulib-r750" wx:if="{{i<4}}">{{tag}}</text>
</block>
@@ -56,9 +88,9 @@
</block>
</view>
<view class="absolute right-0 box-middle">
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
</view>
<!--view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
</view-->
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{item.id}}">
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
</view>
@@ -68,7 +100,14 @@
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='value' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{key}}</view>
<view class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
<block wx:if="{{key=='销售顾问'}}">
<view class="fn-fr wp60 text-nowrap text-right">
<text class="text-middle color-666" wx:if="{{value}}">{{value}}</text>
<text class="text-middle color-f9394d" wx:else>待分配</text>
<text class="inline-block ml10 bg-36afa2 pt5 pb5 pl15 pr15 text-middle font-22 color-fff ulib-r10" catchtap="optEmployees" data-cid="{{item.id}}" data-level="{{item.level}}" wx:if="{{item.allot == 1}}">{{value?'重新分配':'分配'}}</text>
</view>
</block>
<view wx:else class="fn-fr wp60 text-nowrap text-right color-666">{{value}}</view>
</view>
</block>
@@ -95,29 +134,49 @@
</lcb-msg>
<view class="search-sort {{!isShowfilter?'fn-hide':''}} {{!isShowfilter?'sortout':'sortin'}} bg-fff fixed top-0 bottom-0 z-index-2 ulib-rl20 overflowhidden">
<scroll-view class="wp100" scroll-y="true" style="height:100%">
<view class="inner30">
<scroll-view class="wp100" scroll-y="true" style="height:90%">
<view class="pt10 pb10 pl30 pr30">
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户编号</view>
<view>
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户编号" model:value="{{cus_id}}" />
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户编号" model:value="{{cus_id}}" />
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户姓名</view>
<view>
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入客户姓名" bindinput='inputTx' data-key="name" name='name' value='{{name}}' />
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="text" placeholder="请输入客户姓名" bindinput='inputTx' data-key="name" name='name' value='{{name}}' />
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">手机号码</view>
<view>
<input class="wp100 height-100 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
<input class="wp100 height-90 text-right font-28" placeholder-class="color-ccc" type="number" placeholder="请输入客户手机号" bindinput='inputTx' data-key="mobile" name='mobile' value='{{mobile}}' />
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">所在城市</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArr}}">
<text class="color-ccc" wx:if="{{cityIndex == -1}}">请选择</text>
<text wx:else>{{cityArr[cityIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{city_id}}">
<view class="absolute left-0 box-middle">所在地区</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeCounty" value="{{countyIndex}}" range="{{countyArr}}">
<text class="color-ccc" wx:if="{{countyIndex == -1}}">请选择</text>
<text wx:else>{{countyArr[countyIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">建卡开始时间</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker mode="date" value="{{s_time}}" bindchange="startDate">
<text class="color-ccc" wx:if="{{s_time == ''}}">请选择</text>
<text wx:else>{{s_time}}</text>
@@ -127,7 +186,7 @@
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">建卡结束时间</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker mode="date" value="{{e_time}}" bindchange="endDate">
<text class="color-ccc" wx:if="{{e_time == ''}}">请选择</text>
<text wx:else>{{e_time}}</text>
@@ -135,17 +194,17 @@
</picker>
</view>
</view>
<view class="relative bbs-1-eb pt30 pb30 last-b-none">
<view class="font-22">常用时间</view>
<view class="relative bbs-1-eb pt25 pb25 last-b-none">
<view class="font-22">跟进时间</view>
<view class="fn-clear">
<block wx:for="{{timeSlot}}" wx:key='index'>
<view class="inline-block radio-btn mt20 mr20 pt15 pb15 pl25 pr25 ulib-r10 font-28 {{timeSlotIndex == index?'bg-333 color-fff':'bg-f8'}}" bindtap="radioPicker" data-type="timeSlot" data-index="{{index}}">
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{timeSlotIndex == index?'bg-333 color-fff':'bg-f8'}}" bindtap="radioPicker" data-type="timeSlot" data-index="{{index}}">
{{item.title}}
</view>
</block>
</view>
</view>
<!-- <view class="relative bbs-1-eb pt30 pb30 last-b-none">
<!-- <view class="relative bbs-1-eb pt25 pb25 last-b-none">
<view class="font-22">是否试驾</view>
<view class="fn-clear">
<block wx:for="{{testDrive}}" wx:key='index'>
@@ -157,7 +216,7 @@
</view> -->
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">意向等级</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeLevel" value="{{levelIndex}}" range="{{filter.level}}">
<text class="color-ccc" wx:if="{{levelIndex == -1}}">请选择</text>
<text wx:else>{{filter.level[levelIndex]}}</text>
@@ -165,9 +224,9 @@
</picker>
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">车辆品牌</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeBrand" value="{{brandIndex}}" range="{{brandArray}}">
<text class="color-ccc" wx:if="{{brandIndex == -1}}">请选择</text>
<text wx:else>{{brandArray[brandIndex]}}</text>
@@ -176,38 +235,40 @@
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none" wx:if="{{brandIndex != -1}}">
<view class="absolute left-0 box-middle font-28 color-333">车型车系</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="absolute left-0 box-middle font-28 color-333">车系车型</view>
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeModel" value="{{modelIndex}}" range="{{modelArray}}">
<text class="color-ccc" wx:if="{{modelIndex == -1}}">请选择</text>
<text wx:else> {{modelArray[modelIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
<view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">客户来源</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeCfrom" value="{{cfromIndex}}" range="{{filter.cfrom}}">
<text class="color-ccc" wx:if="{{cfromIndex == -1}}">请选择</text>
<text wx:else>{{filter.cfrom[cfromIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view> -->
<block wx:if="{{sources.length>0}}">
<view class="relative bbs-1-eb last-b-none pl140 font-28">
<view class="absolute left-0 box-middle">客户来源</view>
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeOf1" value="{{of1Index}}" range="{{of1Arr}}">
<text class="color-ccc" wx:if="{{of1Index == -1}}">请选择</text>
<text wx:else>{{of1Arr[of1Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{cfrom=='自有资源'}}">
<view class="absolute left-0 box-middle">线索来源</view>
<view class="pt30 pb30 text-right font-28 color-666">
<picker bindchange="changeClues" value="{{cluesIndex}}" range="{{cluesArray}}">
<text class="color-ccc" wx:if="{{cluesIndex == -1}}">请选择</text>
<text wx:else>{{cluesArray[cluesIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{of2Arr.length>0}}">
<view class="absolute left-0 box-middle">{{sources[of1Index].name}}</view>
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeOf2" value="{{of2Index}}" range="{{of2Arr}}">
<text class="color-ccc" wx:if="{{of2Index == -1}}">请选择</text>
<text wx:else>{{of2Arr[of2Index]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view>
</view>
</block>
<!-- <view class="relative bbs-1-eb pl190 last-b-none">
<view class="absolute left-0 box-middle font-28 color-333">到店次数</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker mode="date" value="{{c_time}}" bindchange="bindStartDateChange">
<text class="color-ccc" wx:if="{{c_time == ''}}">请选择</text>
<text wx:else>{{c_time}}</text>
@@ -215,20 +276,51 @@
</picker>
</view>
</view> -->
<view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{staffArray.length>0&&userInfo.group_id>1}}">
<!-- <view class="relative bbs-1-eb last-b-none pl140 font-28" wx:if="{{staffArray.length>0&&userInfo.group_id>1}}">
<view class="absolute left-0 box-middle">销售顾问</view>
<view class="pt30 pb30 text-right font-28 color-666">
<view class="pt25 pb25 text-right font-28 color-666">
<picker bindchange="changeStaff" value="{{staffIndex}}" range="{{staffArray}}">
<text class="color-ccc" wx:if="{{staffIndex == -1}}">请选择</text>
<text wx:else>{{staffArray[staffIndex]}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</picker>
</view>
</view> -->
<view class="relative bbs-1-eb pt25 pb25 last-b-none">
<view class="font-22">销售顾问</view>
<view class="fn-clear">
<block wx:for="{{staffobj}}" wx:key='index'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{item.checked?'bg-333 color-fff':'bg-f8'}}" bindtap="checkPicker" data-index="{{index}}">
{{item.uname}}
</view>
</block>
</view>
</view>
<block wx:for='{{taglList}}' wx:for-item='list' wx:for-index='i' wx:key='i'>
<view class="relative mt40">
<view class="font-28">
<text class="text-middle">{{list.name}}</text>
<text class="text-middle font-24" wx:if="{{list.type=='radio'}}">(单选)</text>
<text class="text-middle font-24" wx:if="{{list.type=='checkbox'}}">(多选)</text>
</view>
<view class="fn-clear" wx:if="{{list.type=='radio'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-333 color-fff':'bg-f8 color-666'}}" bindtap="tagRadioPicker" data-i="{{i}}" data-j="{{j}}">{{option.name}}</view>
</block>
</view>
<view class="fn-clear" wx:if="{{list.type=='checkbox'}}">
<block wx:for='{{list.list}}' wx:for-item='option' wx:for-index='j' wx:key='j'>
<view class="inline-block space-nowrap mt20 mr20 pt15 pb15 pl30 pr30 font-22 ulib-r10 {{option.checked?'bg-333 color-fff':'bg-f8 color-666'}}" bindtap="tagCheckPicker" data-i="{{i}}" data-j="{{j}}">{{option.name}}</view>
</block>
</view>
</view>
</block>
</view>
<view class="pt50 pb100"></view>
</scroll-view>
<view class="absolute left-0 bottom-0 right-0 fn-flex mb180 pt20 pb20 pl60 pr60 bg-fff-op90 text-center">
<view class="absolute left-0 bottom-0 right-0 fn-flex pt20 pb200 pl60 pr60 bg-fff-op90 text-center">
<view class="fn-flex-item mr20 pt15 pb15 bds-2-36afa2 font-32 color-36afa2 ulib-r750" bindtap="resetFilter">重置</view>
<view class="fn-flex-item ml20 pt15 pb15 bg-36afa2 font-32 color-fff ulib-r750" bindtap="submitFilter">确定</view>
</view>
@@ -244,4 +336,99 @@
</view>
</view>
<lcb-changeMobile isShow="{{isShowMobile}}"></lcb-changeMobile>
<lcb-changeMobile isShow="{{isShowMobile}}"></lcb-changeMobile>
<lcb-msg isShow="{{isShowEmployees}}" isCustomTabBar="{{true}}">
<view slot="content">
<view class="inner30">
<view class="mt10 font-28 text-center fn-flex" wx:if="{{distributetabs.length > 0}}">
<block wx:for="{{distributetabs}}" wx:key="index">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{distTabId == item.id?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeDistTab" data-id="{{item.id}}">{{item.name}}</view>
</block>
</view>
<block wx:if="{{distTabId == 1}}">
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">销售顾问</view>
<picker class="fn-fr wp60 text-right" bindchange="changeEmployee" value="{{employeeIndex}}" range="{{staffArray}}">
<text class="color-ccc" wx:if="{{employeeIndex == -1}}">请选择</text>
<text wx:else>{{staffArray[employeeIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</picker>
</view>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">计划回访时间</view>
<view bindtap="optShowTimePicker" class="fn-fr wp60 text-right">
<text class="color-ccc" wx:if="{{nextIndex == -1}}">请选择</text>
<text wx:else>{{dateList[nextIndex].year}}-{{dateList[nextIndex].month}}-{{dateList[nextIndex].day}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</view>
</block>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10" wx:else>
<view class="fn-fl">门店名称</view>
<picker class="fn-fr wp70 text-right" bindchange="changeDistBiz" value="{{distBizIndex}}" range="{{bizArray}}">
<view class="text-nowrap">
<text class="color-ccc" wx:if="{{distBizIndex == -1}}">请选择</text>
<text wx:else>{{bizArray[distBizIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</picker>
</view>
</view>
<view class="fn-flex ml10 mr10 pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optEmployees" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="putAppCustomersAdmins" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
<page-container
show="{{isShowTimePicker}}"
round="{{true}}"
overlay="true"
duration="300"
z-index="10000"
position="bottom"
close-on-slide-down="{{false}}"
bindenter="onEnter"
custom-style="false"
overlay-style="false"
>
<view class="">
<view class="relative pt30 pb30 text-center font-30">
<view class="color-666">计划回访时间</view>
<i bindtap="optShowTimePicker" class="absolute right-0 box-middle mr30 iconfont icon-guanbi1"></i>
</view>
<view class="fn-flex pt30 pb30 bbs-1-eb text-center font-24">
<block wx:for="{{weekList}}" wx:key="index">
<view class="fn-flex-item">{{item}}</view>
</block>
</view>
<view class="pb180 relative">
<view class="absolute top-0 box-center mt130 font-180 color-f8">{{cMonth}}</view>
<view class="relative fn-flex fn-flex-wrap pt30 pb30 text-center font-24 z-index-2">
<block wx:for="{{dateList}}" wx:key="index">
<view bindtap="{{item.isopt?'optday':''}}" data-index="{{index}}" class="datecell ulib-r10 {{nextIndex == index?'active':''}} {{item.isopt?'color-1a':'color-ccc'}}">{{item.day}}</view>
</block>
</view>
</view>
</view>
</page-container>
<!-- 拨打电话 -->
<lcb-msg isShow="{{isShowCall}}" isCustomTabBar="{{true}}">
<view slot="content">
<view class="pt50 pb40">
<view class="font-36 text-center">号码绑定成功</view>
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} </view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</lcb-msg>
+754
View File
@@ -0,0 +1,754 @@
import _ from '../../../commons/js/commons';
import popularData from '../../../commons/js/lib/popularData';
import * as echarts from '../../../ecCanvas/components/ec-canvas/echarts';
const app = getApp()
let BarChartData;
let Pie1ChartData;
let Pie2ChartData;
let Pie3ChartData;
function BarChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = BarChartData
chart.setOption(option);
chart.on('click',function(e){
console.log(e)
});
return chart;
}
function Pie1Chart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = Pie1ChartData
chart.setOption(option);
chart.on('click',function(e){
console.log(e)
});
return chart;
}
function Pie2Chart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = Pie2ChartData
chart.setOption(option);
chart.on('click',function(e){
//_.eventBus.emit("pinpai",e.name)
});
return chart;
}
function Pie3Chart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = Pie3ChartData
chart.setOption(option);
chart.on('click',function(e){
//_.eventBus.emit("pinpai",e.name)
});
return chart;
}
Page({
data: {
imgUrl: _.config.imgUrl,//静态图片路径
showPie1Chart:false,//是否显示Pie1图表
ecPie1:{},
showPie2Chart:false,//是否显示Pie2图表
ecPie2:{},
showPie3Chart:false,//是否显示Pie3图表
ecPie3:{},
showBarChart:false,//是否显示Bar图表
ecBar:{},
Pie1title:'',
Pie2title:'',
Pie3title:'',
Bartitle:'',
},
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
this.getAppCity()
},
//获取系统配置城市
getAppCity(){
_.apiQuery.getAppCity().then(res => {
this.setData({
city_id:this.data.city_id?this.data.city_id:res.data.default,
})
let cityArray = []
res.data.list.forEach((item,index) => {
cityArray.push(item.name)
if(item.city_id==this.data.city_id){
this.setData({
cityIndex:index,
})
}
})
this.setData({
cityArray:cityArray,
cityList:res.data.list,
})
this.getAppStatisticsStats_customer()
});
},
//选择日期
changeDate(e){
if(e.currentTarget.dataset.type=="s_date"){
let begin = new Date(e.detail.value).getTime();
let end = new Date(this.data.e_date).getTime();
let day = 0
if(end>=begin){
day = (end - begin)/(24*60*60*1000);
this.setData({
s_date: e.detail.value,
})
}
else{
day = (begin - end)/(24*60*60*1000);
let s_date = this.data.e_date
let e_date = e.detail.value
this.setData({
s_date,
e_date,
})
}
if (day > 365) {
wx.showToast({
title: '请选择一年时间内',
icon: 'none'
})
}
else{
this.getAppStatisticsStats_customer()
}
}
if(e.currentTarget.dataset.type=="e_date"){
let begin = new Date(this.data.s_date).getTime();
let end = new Date(e.detail.value).getTime();
let day = 0
if(end>=begin){
day = (end - begin)/(24*60*60*1000);
this.setData({
e_date: e.detail.value,
})
}
else{
day = (begin - end)/(24*60*60*1000);
let e_date = this.data.s_date
let s_date = e.detail.value
this.setData({
s_date,
e_date,
})
}
if (day > 365) {
wx.showToast({
title: '请选择一年时间内',
icon: 'none'
})
}
else{
this.getAppStatisticsStats_customer()
}
}
},
//订单数据
getAppStatisticsStats_customer(){
this.setData({
showPie1Chart:false,
showPie2Chart:false,
showPie3Chart:false,
showBarChart:false,
})
let params = {};
params['type'] = this.data.type;
params['city_id'] = this.data.city_id;
params['s_time'] = this.data.s_date;
params['e_time'] = this.data.e_date;
_.apiQuery.getAppStatisticsStats_customer(params).then(res => {
wx.setNavigationBarTitle({
title: res.data.title
})
this.setData({
Pie1title:res.data.pie1?res.data.pie1.title:'',
Pie2title:res.data.pie2?res.data.pie2.title:'',
Pie3title:res.data.pie3?res.data.pie3.title:'',
Bartitle:res.data.bar?res.data.bar.title:'',
})
//Pie1ChartData = getPie1Option()
if(res.data.pie1){
if(res.data.pie1.series_data_1.length==0){
this.setData({
pie1noData:true,
})
}else{
Pie1ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
selectedMode: 'single',
radius: [0, '30%'],
label: {
position: 'inner',
fontSize: 10
},
labelBar: {
show: false
},
data: []
},
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: ['45%', '65%'],
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
},
]
};
Pie1ChartData.series[0].data = res.data.pie1.series_data_1
Pie1ChartData.series[1].data = res.data.pie1.series_data_2
this.setData({
pie1noData:false,
showPie1Chart:true,
['ecPie1.onInit']:Pie1Chart,
pie1Bottom:res.data.pie1.bottom,
})
}
}
//Pie2ChartData = getPie2Option()
if(res.data.pie2){
if(res.data.pie2.series_data_1.length==0){
this.setData({
pie2noData:true,
})
}else{
Pie2ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: '70%',
// avoidLabelOverlap: false,
// itemStyle: {
// borderRadius: 10,
// borderColor: '#fff',
// borderWidth: 2
// },
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie2ChartData.series[0].data = res.data.pie2.series_data_1
this.setData({
pie2noData:false,
showPie2Chart:true,
['ecPie2.onInit']:Pie2Chart,
pie2Bottom:res.data.pie2.bottom,
})
}
}
//Pie3ChartData = getPie3Option()
if(res.data.pie3){
if(res.data.pie3.series_data_1.length==0){
this.setData({
pie3noData:true,
})
}else{
Pie3ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: '70%',
// avoidLabelOverlap: false,
// itemStyle: {
// borderRadius: 10,
// borderColor: '#fff',
// borderWidth: 2
// },
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie3ChartData.series[0].data = res.data.pie3.series_data_1
this.setData({
pie3noData:false,
showPie3Chart:true,
['ecPie3.onInit']:Pie3Chart,
pie3Bottom:res.data.pie3.bottom,
})
}
}
//BarChartData = getBarOption()
if(res.data.bar){
BarChartData = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
type: 'value',
data: []
},
yAxis: {
type: 'category',
data: []
},
grid: {
top: '1%',
left: '5%',
right: '5%',
bottom: '35',
containLabel: true
},
series: [
{
data: [],
type: 'bar',
top: 0,
bottom:'0',
}
]
};
let xAxis_data = res.data.bar.xAxis_data
let yAxis_data = []
xAxis_data.forEach(item => {
if(item.length > 6){
yAxis_data.push(item.substring(0,6)+'...')
}else{
yAxis_data.push(item)
}
})
BarChartData.yAxis.data = yAxis_data
BarChartData.series[0].data = res.data.bar.series_data
this.setData({
Barheight:100 + 60*(res.data.bar.xAxis_data.length),
Bartitle:res.data.bar.title,
showBarChart:true,
['ecBar.onInit']:BarChart,
barBottom:res.data.bar.bottom,
})
}
wx.stopPullDownRefresh()
});
},
//推送链接
pushLink(e) {
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//选择城市
changeCity(e) {
this.setData({
city_id:this.data.cityList[e.detail.value].city_id,
cityIndex: e.detail.value
})
this.getAppStatisticsStats_customer()
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppStatisticsStats_customer()
},
})
function getPie1Option() {
return {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
selectedMode: 'single',
radius: [0, '30%'],
label: {
position: 'inner',
fontSize: 10
},
labelBar: {
show: false
},
data: [
{ value: 1548, name: 'H' },
{ value: 775, name: 'A' },
{ value: 679, name: 'B', }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['45%', '65%'],
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 1048, name: '转介绍' },
{ value: 335, name: '网络推广' },
{ value: 310, name: '外展外拓' },
{ value: 251, name: '自媒体' },
]
},
]
};
}
function getPie2Option() {
return {
// tooltip: {
// trigger: 'item',
// formatter: '{b}: {c} ({d}%)'
// },
series: [
{
name: 'Access From',
type: 'pie',
bottom:'10%',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 48, name: '转介绍' },
{ value: 35, name: '网络推广' },
{ value: 30, name: '外展外拓' },
{ value: 21, name: '自媒体' },
]
}
]
};
}
function getPie3Option() {
return {
// tooltip: {
// trigger: 'item',
// formatter: '{b}: {c} ({d}%)'
// },
series: [
{
name: 'Access From',
type: 'pie',
bottom:'10%',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 48, name: '转介绍' },
{ value: 35, name: '网络推广' },
{ value: 30, name: '外展外拓' },
{ value: 21, name: '自媒体' },
]
}
]
};
}
function getBarOption() {
return{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
type: 'value',
data: []
},
yAxis: {
type: 'category',
data: ['张三', '李四', '王五', '赵六', '孙七', '周八', '吴九','郑十']
},
grid: {
top: '5%',
left: '2%',
right: '5%',
bottom: '3%',
containLabel: true
},
series: [
{
data: [20, 20, 10, 20, 20, 20, 25, 2],
type: 'bar',
top: 0,
bottom:'0',
}
]
};
}
+10
View File
@@ -0,0 +1,10 @@
{
"navigationBarTitleText": "订单数据",
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#ff7052",
"backgroundColor": "#ffffff",
"backgroundColorTop": "#ff7052",
"usingComponents": {
"ec-canvas": "../../../ecCanvas/components/ec-canvas/ec-canvas"
}
}
+88
View File
@@ -0,0 +1,88 @@
<view class="container img-top-cover" style="background-image:url({{imgUrl}}storedata/theme.png);">
<view class="text-center pt20 pb40 pl30 pr30 fn-clear">
<view class="fn-fl bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
<view>
<text>{{cityArray[cityIndex]}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
</picker>
</view>
<view class="fn-fr bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
<picker class="inline-block" mode="date" value="{{s_date}}" end="{{current_date}}" bindchange="changeDate" data-type="s_date">
<view>
<text>{{s_date}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
</picker>
<text class="pl10 pr10">至</text>
<picker class="inline-block" mode="date" value="{{e_date}}" end="{{current_date}}" bindchange="changeDate" data-type="e_date">
<view>
<text>{{e_date}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
</picker>
</view>
</view>
<view class="mb30 pl30 pr30" wx:if="{{Pie1title != ''}}">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{Pie1title}}</view>
</view>
<lcb-listmore isNoData='{{pie1noData}}' noDataMsg='暂无数据'></lcb-listmore>
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie1noData}}">
<view class="absolute wp100 height-600" wx:if="{{showPie1Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie1 }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888">{{pie1Bottom}}</view>
</view>
</view>
</view>
<view class="mb30 pl30 pr30" wx:if="{{Pie2title != ''}}">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{Pie2title}}</view>
</view>
<lcb-listmore isNoData='{{pie2noData}}' noDataMsg='暂无数据'></lcb-listmore>
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie2noData}}">
<view class="absolute wp100 height-600" wx:if="{{showPie2Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie2 }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie2Bottom}}</view>
</view>
</view>
</view>
<view class="mb30 pl30 pr30" wx:if="{{Pie3title != ''}}">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{Pie3title}}</view>
</view>
<lcb-listmore isNoData='{{pie3noData}}' noDataMsg='暂无数据'></lcb-listmore>
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie3noData}}">
<view class="absolute wp100 height-600" wx:if="{{showPie3Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie3 }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie3Bottom}}</view>
</view>
</view>
</view>
<view class="mb30 pl30 pr30" wx:if="{{Bartitle != ''}}">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{Bartitle}}</view>
</view>
<view class="mt50 mb20 relative z-index-0" style="height:{{Barheight}}rpx;">
<view class="absolute wp100" style="height:{{Barheight}}rpx;" wx:if="{{showBarChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{barBottom}}</view>
</view>
</view>
</view>
</view>
<lcb-footer></lcb-footer>
+1
View File
@@ -0,0 +1 @@
/* pages/storeData/index.wxss */
+312 -226
View File
@@ -1,21 +1,10 @@
import _ from '../../commons/js/commons'
import _ from '../../commons/js/commons';
import popularData from '../../commons/js/lib/popularData';
import * as echarts from '../../ecCanvas/components/ec-canvas/echarts';
const app = getApp()
let barChartData;
let lineChartData;
function barChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = barChartData
chart.setOption(option);
return chart;
}
let FunnelChartData;
function lineChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
@@ -27,52 +16,50 @@ function lineChart(canvas, width, height, dpr) {
chart.setOption(option);
return chart;
}
function FunnelChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = FunnelChartData
chart.setOption(option);
return chart;
}
Page({
data: {
imgUrl:_.config.imgUrl,
showBarChart:false,//是否显示Bar图表
ecBar:{},
imgUrl: _.config.imgUrl,//静态图片路径
showFunnelChart:false,//是否显示Funnel图表
ecFunnel:{},
showLineChart:false,//是否显示Line图表
ecLine:{},
storeArray: [],
storeobj: [],
storeIndex:0,
staffArray: [],
staffobj: [],
staffIndex:-1,
tabId:'1',
tab:[
{
id: 1,
title: '客户数据'
},
{
id: 2,
title: '订单数据'
},
],
custom:[],//客户数据
order:[],//订单数据
daysIndex:0,
daysArray:['近一周','近30日'],
isShowTip:false,
tipIndex:0,
},
onLoad(options) {
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
popularData.getDateLater(0,0).then(res => {
let s_date = res[0]
s_date= s_date.split('-')[0]+'-'+s_date.split('-')[1]+'-01'
this.setData({
dateTime:res[2],
s_date,
e_date:res[1],
current_date:res[1],
})
this.getAppCity()
})
this.getAppCity()
},
onShow: function () {
},
@@ -94,93 +81,150 @@ Page({
cityList:res.data.list,
})
this.getAppUserBizs()
this.getAppStatisticsStats()
this.getAppStatisticsStats_days()
});
},
//获取管理门店
getAppUserBizs(){
//选择日期
changeDate(e){
if(e.currentTarget.dataset.type=="s_date"){
let begin = new Date(e.detail.value).getTime();
let end = new Date(this.data.e_date).getTime();
let day = 0
if(end>=begin){
day = (end - begin)/(24*60*60*1000);
this.setData({
s_date: e.detail.value,
})
}
else{
day = (begin - end)/(24*60*60*1000);
let s_date = this.data.e_date
let e_date = e.detail.value
this.setData({
s_date,
e_date,
})
}
if (day > 365) {
wx.showToast({
title: '请选择一年时间内',
icon: 'none'
})
}
else{
this.getAppStatisticsStats()
}
}
if(e.currentTarget.dataset.type=="e_date"){
let begin = new Date(this.data.s_date).getTime();
let end = new Date(e.detail.value).getTime();
let day = 0
if(end>=begin){
day = (end - begin)/(24*60*60*1000);
this.setData({
e_date: e.detail.value,
})
}
else{
day = (begin - end)/(24*60*60*1000);
let e_date = this.data.s_date
let s_date = e.detail.value
this.setData({
s_date,
e_date,
})
}
if (day > 365) {
wx.showToast({
title: '请选择一年时间内',
icon: 'none'
})
}
else{
this.getAppStatisticsStats()
}
}
},
//数据看板-漏斗
getAppStatisticsStats(){
this.setData({
showFunnelChart:false,
})
let params = {};
params['city_id'] = this.data.city_id;
_.apiQuery.getAppUserBizs(params).then(res => {
if(res.data.list.length>0){
let storeArray = []
res.data.list.forEach(item => {
storeArray.push(item.name)
})
this.setData({
storeArray:storeArray,
storeobj:res.data.list,
storeIndex:0,
staffIndex:-1,
})
params['s_time'] = this.data.s_date;
params['e_time'] = this.data.e_date;
_.apiQuery.getAppStatisticsStats(params).then(res => {
this.getAppUserAdmins()
if(this.data.tabId==1){
this.getAppXzStat()
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
wx.setNavigationBarTitle({
title: res.data.title
})
this.setData({
tabs:res.data.tabs,
})
//FunnelChartData = getFunnelOption()
FunnelChartData = {
series: [
{
name: 'Expected',
type: 'funnel',
top: '1%',
bottom:'5%',
left: '2%',
width: '72%',
label: {
position: 'right',
formatter: '{b}'
},
labelLine: {
show: false
},
itemStyle: {
opacity: 0.7
},
data: []
},
{
name: 'Actual',
type: 'funnel',
top:'1%',
bottom:'5%',
left: '7%',
width: '62%',
maxSize: '62%',
label: {
position: 'inside',
formatter: '{c}',
color: '#000'
},
itemStyle: {
opacity: 0.4,
borderColor: '#fff',
borderWidth:1
},
data: [],
z: 100
}
]
};
if(res.data.funnel.actual_data[0].value==0&&res.data.funnel.actual_data[1].value==0&&res.data.funnel.actual_data[2].value==0){
FunnelChartData.series[1].itemStyle.opacity = 0
}
});
},
//获取管理门店
getAppUserAdmins(){
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['page'] = 1;
params['size'] = 1000;
_.apiQuery.getAppUserAdmins(params).then(res => {
let staffArray = []
res.data.list.forEach(item => {
staffArray.push(item.uname)
})
FunnelChartData.series[0].data = res.data.funnel.expected_data
FunnelChartData.series[1].data = res.data.funnel.actual_data
this.setData({
staffArray:staffArray,
staffobj: res.data.list,
})
});
},
//获取电话统计数据
getAppXzStat(){
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['day'] = this.data.dateTime;
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppXzStat(params).then(res => {
this.setData({
xzstat:res.data,
})
});
},
//数据分析-客户数据
getAppStatisticsScust(){
this.setData({
ecBar:{},
showBarChart:false,
})
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['day'] = this.data.dateTime;
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppStatisticsScust(params).then(res => {
barChartData = res.data.stat_data
//barChartData.tooltip.position=['10', '10']
this.setData({
custom:res.data.custom,
showBarChart:true,
['ecBar.onInit']:barChart,
funneltitle:res.data.funnel.title,
showFunnelChart:true,
['ecFunnel.onInit']:FunnelChart,
})
wx.stopPullDownRefresh()
@@ -188,24 +232,49 @@ Page({
});
},
//数据分析-订单数据
getAppStatisticsOcust(){
//客户/订单走势图
getAppStatisticsStats_days(){
this.setData({
ecLine:{},
showLineChart:false,
})
let params = {};
params['biz_id'] = this.data.storeobj[this.data.storeIndex].id;
params['day'] = this.data.dateTime;
if(this.data.staffIndex>-1){
params['admin_id'] = this.data.staffobj[this.data.staffIndex].id;
}
_.apiQuery.getAppStatisticsOcust(params).then(res => {
lineChartData = res.data.stat_data
//lineChartData.tooltip.position=['10', '10']
let params = {};
params['city_id'] = this.data.city_id;
params['days'] = this.data.daysIndex == 0?'7':'30';
_.apiQuery.getAppStatisticsStats_days(params).then(res => {
//lineChartData = getLineOption()
lineChartData = {
tooltip: {
trigger: 'axis'
},
legend: {
top: 'bottom',
data: []
},
grid: {
top: '3%',
left: '2%',
right: '5%',
bottom: '20%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: []
},
yAxis: {
type: 'value'
},
series: []
};
lineChartData.legend.data = res.data.legend_data
lineChartData.xAxis.data = res.data.xAxis
lineChartData.series = res.data.series
this.setData({
order:res.data.custom,
linetitle:res.data.title,
showLineChart:true,
['ecLine.onInit']:lineChart,
})
@@ -213,64 +282,29 @@ Page({
wx.stopPullDownRefresh()
});
},
//选择城市
changeCity(e) {
//选择天数
changeDays(e) {
this.setData({
city_id:this.data.cityList[e.detail.value].city_id,
cityIndex: e.detail.value
daysIndex: e.detail.value
})
this.getAppUserBizs()
this.getAppStatisticsStats_days()
},
//选择门店
changeStore(e) {
//显示隐藏提示
optShowTip(e) {
this.setData({
storeIndex: e.detail.value
isShowTip:!this.data.isShowTip,
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
if(e.currentTarget.dataset.index){
this.setData({
tipIndex:e.currentTarget.dataset.index
})
}
},
//日期选择
changeDate(e){
this.setData({
dateTime: e.detail.value,
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//选择人员
changeStaff(e) {
this.setData({
staffIndex: e.detail.value
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//切换tab
changeTab(e){
this.setData({
tabId:e.currentTarget.dataset.id,
})
if(this.data.tabId==1){
this.getAppStatisticsScust()
}else if(this.data.tabId==2){
this.getAppStatisticsOcust()
}
},
//推送链接
pushLink(e) {
@@ -279,52 +313,85 @@ Page({
}
},
//选择城市
changeCity(e) {
this.setData({
city_id:this.data.cityList[e.detail.value].city_id,
cityIndex: e.detail.value
})
this.getAppStatisticsStats()
this.getAppStatisticsStats_days()
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.getAppUserBizs()
this.getAppStatisticsStats()
this.getAppStatisticsStats_days()
},
})
function getBarOption() {
function getFunnelOption() {
return {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
top: '10%',
left: '2%',
right: '5%',
bottom: '5%',
containLabel: true
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.01]
},
yAxis: {
type: 'category',
data: ['1月', '2月', '3月',],
},
// legend: {
// top: 'bottom',
// data: ['客户量', '到店数', '成交数']
// },
series: [
{
type: 'bar',
itemStyle: {
color:'#2e3246',
borderRadius: [0, 20, 20, 0],
},
barWidth:'15',
data: [33, 23, 29,],
name: 'Expected',
type: 'funnel',
top: '1%',
bottom:'5%',
left: '2%',
width: '72%',
label: {
show: true,
position: 'right',
formatter: '{@[n]}',
valueAnimation: true
}
position: 'right',
formatter: '{b}'
},
labelLine: {
show: false
},
itemStyle: {
opacity: 0.7
},
data: [
{ value: 33.3, name: '成交数(10%)' },
{ value: 66.6, name: '到店数(25%)' },
{ value: 100, name: '客户数(100%)' }
]
},
{
name: 'Actual',
type: 'funnel',
top:'1%',
bottom:'5%',
left: '7%',
width: '62%',
maxSize: '62%',
label: {
position: 'inside',
formatter: '{c}',
color: '#000'
},
itemStyle: {
opacity: 0.4,
borderColor: '#fff',
borderWidth:1
},
// emphasis: {
// label: {
// position: 'inside',
// formatter: '{b}: {c}'
// }
// },
data: [
{ value: 20, name: '成交数' },
{ value: 50, name: '到店数' },
{ value:200, name: '客户量' }
],
z: 100
}
]
};
}
@@ -332,24 +399,43 @@ function getBarOption() {
function getLineOption() {
return{
tooltip: {
trigger: 'axis'
},
legend: {
top: 'bottom',
data: ['客户数', '订单数',]
},
grid: {
top: '15%',
top: '3%',
left: '2%',
right: '5%',
bottom: '5%',
bottom: '20%',
containLabel: true
},
xAxis: {
type: 'category',
data: ['1月', '2月', '3月',]
type: 'category',
boundaryGap: false,
data: ['1', '2', '3','4','5','6','7',]
},
yAxis: {
type: 'value'
type: 'value'
},
series: [{
data: [20, 932, 901,],
type: 'line',
smooth: true
}]
series: [
{
name: '客户数',
type: 'line',
//stack: '总量',//累加
data: [20, 30, 50, 60, 66, 70, 73, ],
smooth: true,
},
{
name: '订单数',
type: 'line',
//stack: '总量',//累加
data: [10, 10, 10,1, 1, 1, 1,],
smooth: true,
},
]
};
}
+2 -4
View File
@@ -1,10 +1,8 @@
{
"navigationBarTitleText": "数据分析",
"enablePullDownRefresh": true,
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1a1c26",
"navigationBarBackgroundColor": "#ff7052",
"backgroundColor": "#ffffff",
"backgroundColorTop": "#1a1c26",
"backgroundColorTop": "#ff7052",
"usingComponents": {
"ec-canvas": "../../ecCanvas/components/ec-canvas/ec-canvas"
}
+93 -124
View File
@@ -1,132 +1,101 @@
<view class="container">
<view class="inner30 img-top-cover" style="background-image:url({{imgUrl}}channel/theme.jpg);">
<!-- 管辖门店 -->
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">城市</view>
<picker class="fn-fr" bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
<view class="color-666">
<text>{{cityArray[cityIndex]}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
</view>
<view class="mt20 bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">门店</view>
<picker class="fn-fr" bindchange="changeStore" value="{{storeIndex}}" range="{{storeArray}}">
<view class="color-666">
<text>{{storeArray[storeIndex]}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
</view>
<view class="mt20 bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">月份选择</view>
<picker class="fn-fr" mode="date" fields="month" value="{{dateTime}}" bindchange="changeDate">
<view class="color-666">
<text>{{dateTime}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
</view>
<view class="mt20 bg-f6 pt25 pb25 pl30 pr30 font-32 fn-clear ulib-r10">
<view class="fn-fl">人员选择</view>
<picker class="fn-fr" bindchange="changeStaff" value="{{staffIndex}}" range="{{staffArray}}">
<view class="color-666">
<text wx:if="{{staffIndex == -1}}">全部</text>
<text wx:else>{{staffArray[staffIndex]}}</text>
<i class="iconfont ml10 icon-gengduo font-26 color-999"></i>
</view>
</picker>
</view>
<view class="container img-top-cover" style="background-image:url({{imgUrl}}storedata/theme.png);">
<view class="text-center pt20 pb40 pl30 pr30 fn-clear">
<view class="fn-fl bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
<picker bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
<view>
<text>{{cityArray[cityIndex]}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
</picker>
</view>
<!-- 客户数据 / 订单数据 -->
<view class="mt40 bg-fff box-shadow-000-10-10 ulib-r10 overflowhidden">
<view class="fn-flex font-36 text-center">
<block wx:for='{{tab}}' wx:key='index'>
<view class="fn-flex-item pt20 pb20 {{ tabId == item.id?'':'bg-ffedeb'}}" data-id="{{item.id}}" bindtap="changeTab">
<view class="relative">{{item.title}}</view>
</view>
</block>
</view>
<view class="pl30 pb30" wx:if="{{tabId==1}}">
<view class="fn-flex fn-flex-wrap text-left">
<block wx:for='{{custom}}' wx:key='index'>
<view class="wp33 mt30 pr25">
<view class="relative pt15 pb15 pl75 bg-f6 ulib-r10 overflowhidden line-height-13">
<view class="absolute top-0 left-0 bottom-0 pl60 bg-999">
<i class="absolute box-center-middle iconfont font-30 color-fff {{item.icon}}"></i>
</view>
<view class="font-28 text-bold">{{item.value}}</view>
<view class="font-22 color-666">{{item.title}}</view>
</view>
</view>
</block>
<view class="fn-fr bg-fff-op20 pt5 pb5 pl20 pr20 font-22 color-fff ulib-r750">
<picker class="inline-block" mode="date" value="{{s_date}}" end="{{current_date}}" bindchange="changeDate" data-type="s_date">
<view>
<text>{{s_date}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
<view class="mt30 mr30 inner30 bg-f6 ulib-r10">
<view class="font-32 text-bold">通话数据</view>
<view class="mt10 fn-flex text-center">
<view class="fn-flex-item">
<view class="font-22 color-666">通话总时长/min</view>
<view class="text-bold font-28 color-f9394d">{{xzstat.call_time}}</view>
</view>
<view class="fn-flex-item">
<view class="font-22 color-666">平均通话/min</view>
<view class="text-bold font-28 color-f9394d">{{xzstat.avg_time}}</view>
</view>
<view class="fn-flex-item">
<view class="font-22 color-666">未接通/次</view>
<view class="text-bold font-28 color-999">{{xzstat.unget_num}}</view>
</view>
</view>
</picker>
<text class="pl10 pr10">至</text>
<picker class="inline-block" mode="date" value="{{e_date}}" end="{{current_date}}" bindchange="changeDate" data-type="e_date">
<view>
<text>{{e_date}}</text>
<i class="iconfont ml5 icon-xuanze"></i>
</view>
</view>
<view class="pl30 pb30" wx:if="{{tabId==2}}">
<view class="fn-flex fn-flex-wrap text-left">
<block wx:for='{{order}}' wx:key='index'>
<view class="wp33 mt30 pr25">
<view class="relative pt15 pb15 pl75 bg-f6 ulib-r10 overflowhidden line-height-13">
<view class="absolute top-0 left-0 bottom-0 pl60 bg-999">
<i class="absolute box-center-middle iconfont font-30 color-fff {{item.icon}}"></i>
</view>
<view class="font-28 text-bold">{{item.value}}</view>
<view class="font-22 color-666">{{item.title}}</view>
</view>
</view>
</block>
</view>
</view>
</picker>
</view>
<!-- 数据分析·客户 -->
<view class="{{tabId==1?'':'height-0'}}">
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10" >
<view class="relative">
<view class="font-36">数据分析·客户</view>
</view>
<view class="relative height-400 z-index-0">
<view class="absolute wp100 height-400" wx:if="{{showBarChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
</view>
</view>
<!-- 数据分析·订单 -->
<view class="{{tabId==2?'':'height-0'}}">
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">数据分析·订单</view>
</view>
<view class="relative height-400 z-index-0">
<view class="absolute wp100 height-400" wx:if="{{showLineChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="mt10 mb40 pl30 pr30 fn-flex text-center color-fff">
<block wx:for='{{tabs}}' wx:key='index'>
<view class="fn-flex-item" bindtap="pushLink" data-url="{{item.url}}&city_id={{city_id}}&s_date={{s_date}}&e_date={{e_date}}&current_date={{current_date}}">
<view class="inline-block text-left">
<view class="text-center">
<text class="font-40">{{item.value_1}}</text>
</view>
<view class="pt10 font-22">
<text>{{item.title}}</text>
<i class="iconfont ml5 icon-gengduo"></i>
</view>
</view>
</view>
</block>
</view>
<view class="mb30 pl30 pr30">
<view class="relative inner30 pb60 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{funneltitle}}</view>
<!-- <picker class="absolute right-0 box-middle" bindchange="changeCity" value="{{cityIndex}}" range="{{cityArray}}">
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
<text>厦门</text>
<text>{{cityArray[cityIndex]}}</text>
<i class="iconfont ml10 icon-xiala color-999"></i>
</view>
</picker> -->
</view>
<view class="mt50 mb20 relative height-400 z-index-0">
<view class="absolute wp100 height-400" wx:if="{{showFunnelChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecFunnel }}"></ec-canvas>
</view>
</view>
<view class="absolute left-0 bottom-0 mb40 wp100 text-center font-22 color-999">注:时间跨度越大越具参考性</view>
</view>
</view>
<view class="mb30 pl30 pr30">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{linetitle}}</view>
<picker class="absolute right-0 box-middle" bindchange="changeDays" value="{{daysIndex}}" range="{{daysArray}}">
<view class="pt10 pb10 pl20 pr20 bg-f6 ulib-r10 font-22">
<text>{{daysArray[daysIndex]}}</text>
<i class="iconfont ml10 icon-xiala color-999"></i>
</view>
</picker>
</view>
<view class="mt50 mb20 relative height-500 z-index-0">
<view class="absolute wp100 height-500" wx:if="{{showLineChart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecLine }}"></ec-canvas>
</view>
</view>
</view>
</view>
</view>
<!-- <lcb-footer></lcb-footer> -->
<lcb-channelTabBarNav currentIndex='1'></lcb-channelTabBarNav>
<lcb-msg isShow="{{isShowTip}}">
<view slot="content">
<view class="inner40 pt50 pb50 line-height-18 font-26 color-666" style="width:520rpx;">
<view class="text-center">
<text wx:if="{{tipIndex==0}}">发生在时间周期内的\n [客户建档] / [进店客户]</text>
<text wx:elif="{{tipIndex==1}}">发生在时间周期内的\n [企微添加好友] / [企微好友完善手机号码]</text>
<text wx:elif="{{tipIndex==2}}">发生在时间周期内的\n [下定订单] / [退款订单]</text>
</view>
</view>
<view class="bts-1-eb text-center font-32 color-666">
<view class="pt25 pb25 color-36afa2" bindtap="optShowTip">知道了</view>
</view>
</view>
</lcb-msg>
+1 -6
View File
@@ -1,6 +1 @@
.bg-ffedeb{background-color:#ffedeb;}
.height-0{
position:relative;
height:0;
overflow:hidden;
}
/* pages/storeData/index.wxss */
+26
View File
@@ -4,6 +4,7 @@ Page({
info:'',
submitFlag:false,
isShowSuccess:false,
isShowProfile:true,//是否显示授权用户信息按钮
},
onLoad: function (options) {
@@ -13,10 +14,35 @@ Page({
})
}
this.getUserInfo()
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
//this.getDistributionCash()
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
this.setData({
userInfo: res
})
});
},
//提现信息
getDistributionCash() {
let params = {};
+4 -3
View File
@@ -2,9 +2,10 @@
<view class="inner30">
<view class="font-22">提现到</view>
<view class="mt20 relative">
<view class="absolute left-0 img-70x70 ulib-r10 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
</view>
<image class='absolute left-0 img-70x70 ulib-r10 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt20 mr150 z-index-4">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view class="pl90">
<view class="font-28">
<open-data type="userNickName"></open-data>的微信钱包(**** 769)
+2 -2
View File
@@ -44,8 +44,8 @@
<view class="relative">
<button class="btn-concat">去添加</button>
<view class="absolute left-0 top-0 right-0 bottom-0 opacity-0 text-center overflowhidden">
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" bind:completemessage="completemessage" styleType='3' plugid='877ffe64ccc36a5f308252eadc3066df' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" bind:completemessage="completemessage" styleType='3' plugid='877ffe64ccc36a5f308252eadc3066df' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" bind:completemessage="completemessage" styleType='1' plugid='9280d952ecab1136d907a34b6799df97' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" bind:completemessage="completemessage" styleType='1' plugid='9280d952ecab1136d907a34b6799df97' />
</view>
</view>
</view>
+1 -1
View File
@@ -6,7 +6,7 @@
</swiper-item>
</swiper>
<view class="absolute left-0 right-0 bottom-0 mb30 text-center" style='height:45rpx' wx:if="{{info.lists.length > 1}}">
<view class="absolute left-0 right-0 bottom-0 mb30 text-center" style='height:45rpx' wx:if="{{info.lists.length>1&&info.lists.length<16}}">
<block wx:for-items="{{info.lists}}" wx:for-index="j" wx:key='j'>
<view class="inline-block indicator-pin {{banneractive==j?'active':''}}"></view>
</block>
+3 -1
View File
@@ -118,7 +118,9 @@ Page({
})
//上传图片-保存店铺海报 - 作废
// wx.showLoading();
// wx.showLoading({
// title: '上传中',
// })
// wx.uploadFile({
// url:_.config.api.upImg,
// filePath:res.tempFilePaths[0],
+282 -19
View File
@@ -29,6 +29,7 @@ function pieChart(canvas, width, height, dpr) {
Page({
data: {
isShowMain:false,//显示页面内容
imgUrl:_.config.imgUrl,
userCal:'',
deallist:'',
@@ -39,7 +40,32 @@ Page({
ecPie:{},
isShowNotice:false,//是否显示通知
stopNotice:false,//是否不再显示通知
isShowReport:false,
isShowReport:false,//是否显示调拨盘点弹框
isShowProfile:true,//是否显示授权用户信息按钮
isShowGoods:false,//是否显示库存预警
banneractive: 0,
banneractive2: 0,
banneractive3: 0,
remindTab:[],//调拨盘点入口
remindMsg:[],//调拨盘点弹框
levelStIndex:0,
levelSt:[],//客户等级
isResetbiz:false,//是否重置过BIZID
isShowVersionInfo:false,//是否显示版本更新
versionInfo:{
number:'V3.0.51',
list:[
// '',
// '',
// '',
// '',
// '',
// '',
// '修改【订单详情】页面样式及交互;',
// '修改【保单上传】的相应内容,上传后需补充相应保单信息。',
],
},
},
onLoad(options) {
@@ -50,22 +76,63 @@ Page({
}
if(this.data.biz_id){
this.putAppUserResetbiz()
let that = this
setTimeout(function () {
that.putAppUserResetbiz()
}, 500)
}else{
this.setData({
isResetbiz:true,
});
this.getUserInfo()
}
this.getAppStatisticsHcust()
this.getAppStatisticsHorder()
this.getAppTransferRemind()
//this.getAppStatisticsHorder()
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
//判断是否显示版本更新内容
if(this.data.versionInfo.list.length>0&&app.getStorageByKey("appversion")!=this.data.versionInfo.number){
this.setData({
isShowVersionInfo:true,
})
}
},
onShow: function () {
this.getAppUserCal()
this.getHoursTip()
//确保bizID重置完成再执行
if(this.data.isResetbiz){
this.setData({
remindTab:[],
remindMsg:[],
isShowReport:false,//是否显示调拨盘点弹框
isShowGoods:false,
});
this.getAppUserCal()
this.getAppTransferRemind()
this.getAppInventoryRemind()
this.getAppGoodsRemind()
this.getAppStatisticsHcust()
}
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//候取时间
getHoursTip(){
let hoursTip = '';
@@ -87,26 +154,166 @@ Page({
let params = {};
params['biz_id'] = this.data.biz_id;
_.apiQuery.putAppUserResetbiz(params).then(res => {
this.setData({
isResetbiz:true,
});
this.getUserInfo()
this.getAppUserCal()
this.getAppTransferRemind()
this.getAppInventoryRemind()
this.getAppGoodsRemind()
this.getAppStatisticsHcust()
});
},
//更新用户店铺id
//调拨提醒
getAppTransferRemind(){
_.apiQuery.getAppTransferRemind().then(res => {
this.setData({
allotNum: res.data.total,
diaoboNum:res.data.total,
})
if(res.data.total>0){
let remindTab = this.data.remindTab
remindTab.push({
title:'车辆调拨',
content:'您有新的车辆调拨,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/allot/car.gif?v=220224',
url:'/pages/allot/list/index',
allotNum:res.data.total,
})
let remindMsg = this.data.remindMsg
remindMsg.push({
title:'调拨提醒',
content:'您有新的车辆调拨,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/allot/car.gif?v=220224',
btn:{
title:'前往操作',
url:'/pages/allot/list/index',
},
})
this.setData({
remindTab,
remindMsg,
isShowReport:true,
isShowNotice:false,
isShowGoods:false,
})
}
});
},
//盘点提醒
getAppInventoryRemind(){
_.apiQuery.getAppInventoryRemind().then(res => {
this.setData({
pandianNum:res.data.total,
})
if(res.data.total>0){
let remindTab = this.data.remindTab
remindTab.push({
title:'车辆盘点',
content:'您有新的车辆调拨,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/inventory/icon.png',
url:'/pages/inventory/list/index',
allotNum:res.data.total,
})
let remindMsg = this.data.remindMsg
remindMsg.push({
title:'盘点提醒',
content:'您有新的车辆盘点,需要您进行确认操作。',
img:'https://qs.haodian.cn/wechat_app/lichebao/inventory/animation.gif',
btn:{
title:'前往操作',
url:'/pages/inventory/list/index',
},
})
this.setData({
remindTab,
remindMsg,
isShowReport:true,
isShowNotice:false,
isShowGoods:false,
})
}
});
},
//库存提醒/预警
getAppGoodsRemind(){
_.apiQuery.getAppGoodsRemind().then(res => {
this.setData({
inventory:res.data.inventory,
warning:res.data.warning,
})
if(res.data.warning.list&&res.data.warning.list.length>0){
if(!app.getStorageByKey("showGoods")||app.getStorageByKey("showGoods").data!=new Date().getDate()){
//清除
wx.removeStorageSync('showGoods')
this.setData({
isShowGoods:true,
})
let showGoods = {}
if(this.data.biz_id){
showGoods.data = new Date().getDate()
showGoods.list =[{
biz_id:this.data.biz_id,
num:1,
}]
}else{
showGoods.data = new Date().getDate()
showGoods.list =[{
biz_id:'b1',
num:1,
}]
}
app.setStorage('showGoods',showGoods)
}else{
let showGoods = app.getStorageByKey("showGoods")
let index = -1
if(this.data.biz_id){
showGoods.list.forEach((item,i) => {
if(item.biz_id == this.data.biz_id){
index = i
item.num = item.num + 1
}
})
}else{
showGoods.list.forEach((item,i) => {
if(item.biz_id == 'b1'){
index = i
item.num = item.num + 1
}
})
}
if(index > -1){
if(showGoods.list[index].num<4){
this.setData({
isShowGoods:true,
})
app.setStorage('showGoods',showGoods)
}
}else{
this.setData({
isShowGoods:true,
})
if(this.data.biz_id){
showGoods.list.push({
biz_id:this.data.biz_id,
num:1,
})
}else{
showGoods.list.push({
biz_id:'b1',
num:1,
})
}
app.setStorage('showGoods',showGoods)
}
}
}
});
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
@@ -124,16 +331,14 @@ Page({
}
_.apiQuery.getAppUserCal(params).then(res => {
this.setData({
isShowMain:true,
userCal:res.data,
levelSt:res.data.levelSt,
})
if(res.data.deallist.length>0){
let deallist = res.data.deallist
if(res.data.deallist.length%3==1){
deallist.push({})
deallist.push({})
}
if(res.data.deallist.length%3==2){
if(res.data.deallist.length%2==1){
deallist.push({})
}
this.setData({
@@ -252,24 +457,82 @@ Page({
//公众号关注组件
officialaccount(e){
if(e.detail.status == 0&&!app.getStorageByKey("stopNotice")&&!this.data.isShowReport){
this.setData({
isShowNotice:true,
})
// this.setData({
// isShowNotice:true,
// })
}
},
//显示短信弹框
//显示隐藏调拨盘点弹窗
optShowReport(e){
this.setData({
isShowReport:!this.data.isShowReport,
})
},
//显示隐藏库存预警弹窗
optShowGoods(e){
this.setData({
isShowGoods:!this.data.isShowGoods,
})
},
//开发中
development(){
wx.showToast({
title: '暂无数据',
icon: 'none',
duration: 2000
})
},
//调拨盘点轮播点
bannerChange: function (e) {
this.setData({
banneractive:e.detail.current,
});
},
//banner轮播点
bannerChange2: function (e) {
this.setData({
banneractive2:e.detail.current,
});
},
//库存预警轮播点
bannerChange3: function (e) {
this.setData({
banneractive3:e.detail.current,
});
},
//关闭版本提示
closeVersionInfo(){
this.setData({
isShowVersionInfo:false,
})
app.setStorage('appversion',this.data.versionInfo.number)
},
//切换tab
changeTab(e){
this.setData({
levelStIndex:e.currentTarget.dataset.index,
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh: function () {
this.setData({
remindTab:[],
remindMsg:[],
isShowReport:false,//是否显示调拨盘点弹框
isShowGoods:false,
});
this.getAppUserCal()
this.getAppStatisticsHcust()
this.getAppStatisticsHorder()
//this.getAppStatisticsHorder()
this.getAppTransferRemind()
this.getAppInventoryRemind()
this.getAppGoodsRemind()
},
})
+196 -68
View File
@@ -1,9 +1,10 @@
<view class="container">
<view class="container" wx:if="{{isShowMain}}">
<view class="inner30 img-top-cover" style="background-image:url({{imgUrl}}index/theme.png);">
<view style="height:200rpx;">
<view class="relative pt30 pb30 pl110 pr10">
<view class="absolute left-0 box-middle mr10 img-90x90 ulib-r750 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
<image class='absolute left-0 box-middle mr10 img-90x90 ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt20 mr150 z-index-4" wx:if="{{isResetbiz}}">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view>
<view class="font-22 color-fff">Hi~ {{hoursTip}}欢迎回到狸车宝!</view>
@@ -14,60 +15,135 @@
</view>
</view>
</view>
<!--客户代办事项 订单代办事项 -->
<view class="bg-fff box-shadow-000-10-10 ulib-r10">
<view class="bg-ffedeb ulib-rt10" style="height:140rpx;" bindtap="pushLink" data-url="/pages/allot/list/index" wx:if="{{allotNum>0}}">
<view class="pt30 pl30 pr30">
<view class="relative pl110 pr110">
<image class='block absolute left-0 box-middle img-90x90 ulib-r750 z-index-1' mode="aspectFill" src='{{imgUrl}}index/diaobo-icon.png' lazy-load="{{true}}"></image>
<view class="color-f9394d">
<view class="font-32">车辆调拨</view>
<view class="mt10 font-20">您有新的车辆调拨,需要您进行确认操作</view>
<view class="mb30 pt40 pb40 bg-fff box-shadow-000-10-10 ulib-r10 text-center">
<view class="pl20 pr20 fn-flex font-22 color-666">
<view class="relative fn-flex-item" bindtap="pushLink" data-url="/pages/inventory/list/index">
<view class="absolute peg-tip box-center ml30 bg-f9394d bds-2-fff img-24x24 text-center font-18 color-fff ulib-r750 z-index-1" wx:if="{{pandianNum}}"><text class="absolute box-center-middle">{{pandianNum}}</text></view>
<image class='img-60x60' mode="aspectFill" src='{{imgUrl}}index/icon2-tab-1.png' lazy-load="{{true}}"></image>
<view>车辆盘点</view>
</view>
<view class="relative fn-flex-item" bindtap="pushLink" data-url="/pages/storeData/index" wx:if="{{userInfo.group_id>1}}">
<image class='img-60x60' mode="aspectFill" src='{{imgUrl}}index/icon-tab-2.png' lazy-load="{{true}}"></image>
<view>数据分析</view>
</view>
<view class="relative fn-flex-item" bindtap="pushLink" data-url="/pages/allot/list/index">
<view class="absolute peg-tip box-center ml30 bg-f9394d bds-2-fff img-24x24 text-center font-18 color-fff ulib-r750 z-index-1" wx:if="{{diaoboNum}}"><text class="absolute box-center-middle">{{diaoboNum}}</text></view>
<image class='img-60x60' mode="aspectFill" src='{{imgUrl}}index/icon2-tab-2.png' lazy-load="{{true}}"></image>
<view>车辆调拨</view>
</view>
<view class="relative fn-flex-item" bindtap="pushLink" data-url="/pages/inventory/warning/index">
<view class="absolute peg-tip box-center ml30 bg-f9394d bds-2-fff img-24x24 text-center font-18 color-fff ulib-r750 z-index-1" wx:if="{{inventory.value}}"><text class="absolute box-center-middle">{{inventory.value}}</text></view>
<image class='img-60x60' mode="aspectFill" src='{{imgUrl}}index/icon2-tab-3.png' lazy-load="{{true}}"></image>
<view style="color:{{inventory.color}};">{{inventory.title}}</view>
</view>
</view>
</view>
<!-- 数据看板 -->
<view class="bg-fff mb30 inner30 box-shadow-000-10-10 ulib-r10">
<view class="font-36">数据看板</view>
<view class="fn-flex fn-flex-wrap pt20 pb10 text-center">
<block wx:for="{{userCal.statistics}}" wx:key='index'>
<view class="wp33 relative pt20 pb20 {{index>2?'bts-1-eb':''}} {{index%3==2?'':'brs-1-eb'}}" bindtap="pushLink" data-url="{{item.today.url}}">
<view class="text-bold"><text class="font-36">{{item.today.value}}</text><text class="font-28 color-666">/{{item.month.value}}</text></view>
<view class="font-22"><text>{{item.today.title}}</text><text class="color-666">/{{item.month.title}}</text></view>
</view>
</block>
</view>
</view>
<!--客户代办事项-->
<view class="bg-fff mb30 box-shadow-000-10-10 ulib-r10">
<!-- <view class="bg-ffedeb ulib-rt10" style="height:140rpx;" wx:if="{{remindTab.length > 0}}">
<view class="relative pt30 pl30 pr30">
<swiper class='wp100' style="height:90rpx;" autoplay circular bindchange="bannerChange2">
<swiper-item class="wp100 relative pl110 pr110" wx:for="{{remindTab}}" wx:key="index" bindtap="pushLink" data-url="{{item.url}}">
<image class='block absolute left-0 box-middle img-90x90 ulib-r750 z-index-1' mode="aspectFill" src='{{item.img}}' lazy-load="{{true}}"></image>
<view class="color-f9394d">
<view class="font-32">{{item.title}}</view>
<view class="mt10 font-20">{{item.content}}</view>
</view>
<view class="absolute right-0 box-middle">
<text class="inline-block text-middle pt5 pb5 pl10 pr10 bg-f9394d font-22 color-fff ulib-r10">{{item.allotNum}}</text>
<text class="ml5 text-middle iconfont icon-gengduo font-32 color-f9394d"></text>
</view>
</swiper-item>
</swiper>
<view class="absolute left-0 right-0 text-center" style='bottom:-20rpx;height:20rpx' wx:if="{{remindTab.length>1&&remindTab.length<16}}">
<block wx:for-items="{{remindTab}}" wx:for-index="j" wx:key='j'>
<view class="inline-block indicator-pin2 {{banneractive2==j?'active':''}}"></view>
</block>
</view>
</view>
</view> -->
<view class="inner30">
<!-- <view class="relative pt20 pb20 pl30 pr200 ulib-r750 font-24 color-fff" style="background-image:linear-gradient(45deg, {{inventory.color1}}, {{inventory.color2}});" bindtap="pushLink" data-url="/pages/inventory/warning/index">
<view class="text-left">{{inventory.title}}</view>
<view class="absolute right-0 box-middle mr25 mb10">
<text class="text-middle">{{inventory.value}}</text>
<i class="iconfont icon-gengduo ml5 text-middle"></i>
</view>
</view> -->
<view class="font-36">客户跟进</view>
<view class="fn-flex pt20 pb20 color-fff">
<view class="fn-flex-item relative mr15 pt25 pb25 pl110 bg-1c89fd-8058fe ulib-r10" bindtap="pushLink" data-url="{{userCal.wl_count.url}}" >
<i class="absolute left-0 box-middle ml35 iconfont icon-qianke font-60"></i>
<view class="text-left">
<view class="font-40">{{userCal.wl_count.num}}</view>
<view class="font-22">{{userCal.wl_count.title}}</view>
</view>
<view class="absolute right-0 box-middle">
<text class="inline-block text-middle pt5 pb5 pl10 pr10 bg-f9394d font-22 color-fff ulib-r10">{{allotNum}}</text>
<text class="ml5 text-middle iconfont icon-gengduo font-32 color-f9394d"></text>
</view>
<view class="fn-flex-item relative ml15 pt25 pb25 pl110 bg-fe606c-ff9026 ulib-r10" bindtap="pushLink" data-url="{{userCal.gz_count.url}}">
<i class="absolute left-0 box-middle ml35 iconfont icon-guanzhu font-60"></i>
<view class="text-left">
<view class="font-40">{{userCal.gz_count.num}}</view>
<view class="font-22">{{userCal.gz_count.title}}</view>
</view>
</view>
</view>
<view class="relative mt10 m140 bg-2f3346-1a1c26 ulib-r10">
<view class="inner30" wx:if="{{levelSt.length>0}}">
<view class="relative bg-999 inner6 ulib-r750 text-center font-28 color-575b6a fn-flex">
<block wx:for="{{levelSt}}" wx:key='index'>
<view class="relative fn-flex-item pt5 pb5 z-index-1 ulib-r750" bindtap="changeTab" data-index="{{index}}">{{item.title}}</view>
</block>
<view class="glider glider-{{levelStIndex}}"></view>
</view>
<view class="fn-flex pt20 text-center color-fff">
<block wx:for="{{levelSt[levelStIndex].list}}" wx:key='index'>
<view class="fn-flex-item" bindtap="pushLink" data-url="{{item.url}}">
<view class="font-32 text-bold">{{item.num}}</view>
<view class="font-22">{{item.title}}</view>
</view>
</block>
</view>
</view>
<view class="color-fff ulib-r10" wx:if="{{userCal.customer_op_list.length>0}}">
<block wx:for="{{userCal.customer_op_list}}" wx:key='index'>
<view class="relative pt20 pb30 pl30 pr30 bts-1-474a65" bindtap="pushLink" data-url="{{item.page}}">
<view>
<i class="iconfont {{item.icon}} text-middle font-30"></i>
<text class="ml10 font-22 text-middle">{{item.title}}</text>
</view>
<view class="absolute right-0 box-middle mr25 mb10 font-40">
<text class="text-middle">{{item.total}}</text>
<i class="iconfont icon-gengduo ml5 text-middle font-26"></i>
</view>
</view>
</block>
</view>
</view>
</view>
<view class="inner30 pt40">
<view class="font-36">客户代办事项</view>
<view class="fn-flex pt20 pb20 color-fff">
<view class="fn-flex-item relative mr15 pt25 pb25 pl110 bg-1c89fd-8058fe ulib-r10" bindtap="pushLink" data-url="/pages/customer/filterList/index?iscall=0&title=未联系潜客" >
<i class="absolute left-0 box-middle ml35 iconfont icon-qianke font-60"></i>
<view>
<view class="font-40">{{userCal.wl_count}}</view>
<view class="font-22">未联系潜客(人)</view>
</view>
</view>
<view class="fn-flex-item relative ml15 pt25 pb25 pl110 bg-fe606c-ff9026 ulib-r10" bindtap="pushLink" data-url="/pages/customer/filterList/index?istop=1&title=特别关注客户">
<i class="absolute left-0 box-middle ml35 iconfont icon-guanzhu font-60"></i>
<view>
<view class="font-40">{{userCal.gz_count}}</view>
<view class="font-22">特别关注客户(人)</view>
</view>
</view>
</view>
<view class="relative mt10 mb40 bg-2f3346-1a1c26 color-fff ulib-r10" wx:if="{{userCal.customer_op_list.length>0}}" >
<block wx:for="{{userCal.customer_op_list}}" wx:key='index'>
<view class="relative pt20 pb30 pl30 pr30 bbs-1-474a65 last-b-none" bindtap="pushLink" data-url="{{item.page}}">
<view>
<i class="iconfont {{item.icon}} text-middle font-30"></i>
<text class="ml10 font-22 text-middle">{{item.title}}</text>
</view>
<view class="absolute right-0 box-middle mr25 mb10 font-40">
<text class="text-middle">{{item.total}}</text>
<i class="iconfont icon-gengduo ml5 text-middle font-26"></i>
</view>
</view>
</block>
</view>
<view class="mt20 font-36">订单代办事项</view>
<view class="fn-flex fn-flex-wrap pt30 pb10">
</view>
<!--订单跟进 -->
<view class="bg-fff mb30 box-shadow-000-10-10 ulib-r10">
<view class="inner30">
<view class="font-36">订单跟进</view>
<view class="fn-flex fn-flex-wrap pt20 pb10">
<block wx:for="{{deallist}}" wx:key='index'>
<view class="wp33 relative pl80 pt20 pb20 {{index>2?'bts-1-eb':''}} {{index%3==2?'':'brs-1-eb'}}" bindtap="pushLink" data-url="{{item.page}}">
<i class="absolute left-0 box-middle ml20 iconfont font-50 {{item.icon}}"></i>
<view class="wp50 relative pl120 pt20 pb20 {{index>1?'bts-1-eb':''}} {{index%2==1?'':'brs-1-eb'}}" bindtap="pushLink" data-url="{{item.page}}">
<i class="absolute left-0 box-middle ml60 iconfont font-50 {{item.icon}}"></i>
<view>
<view class="font-40">{{item.total}}</view>
<view class="font-22 color-666">{{item.title}}</view>
@@ -79,7 +155,7 @@
</view>
<!-- 客户数据 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<!-- <view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">客户数据</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计线索总量 {{cust_total}} 条</view>
@@ -105,9 +181,9 @@
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie }}"></ec-canvas>
</view>
</view>
</view>
</view> -->
<!-- 订单数据 -->
<view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<!-- <view class="mt40 inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">订单数据</view>
<view class="absolute right-0 box-middle pt10 pb10 pl20 pr20 bg-ffedeb color-ff4a3a ulib-r10 font-22">累计订单总量 {{order_total}} 条</view>
@@ -117,7 +193,7 @@
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecBar }}"></ec-canvas>
</view>
</view>
</view>
</view> -->
</view>
@@ -127,7 +203,7 @@
<lcb-shopTabBarNav currentIndex='0'></lcb-shopTabBarNav>
<!-- 客服提示 -->
<lcb-msg isShow="{{isShowNotice}}">
<lcb-msg isShow="{{!isShowVersionInfo&&isShowNotice}}" isCustomTabBar="{{true}}">
<view slot="content">
<view class="mt40 text-center relative overflowhidden" style="height:100px;">
<!-- <image class='img-w-280' show-menu-by-longpress='true' lazy-load="{{true}}" mode="widthFix" src="https://qs.haodian.cn/wechat_app/lichebao/index/jrKF-code2.jpg"></image> -->
@@ -147,19 +223,71 @@
</view>
</lcb-msg>
<!-- 调拨提醒 -->
<lcb-msg isShow="{{isShowReport}}">
<!-- 调拨提醒 盘点提醒 -->
<lcb-msg isShow="{{!isShowVersionInfo&&isShowReport}}" isCustomTabBar="{{true}}">
<view slot="content">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center">调拨提醒</view>
<view class="mt10 font-22 text-center color-999">您有新的车辆调拨,需要您进行确认操作。</view>
</view>
<view class="mt20 pl40 pr40 pb40">
<image class='wp100 ulib-r10' src='{{imgUrl}}allot/car.gif' mode='widthFix'></image>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button bindtap="pushLink" data-url="/pages/allot/list/index" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">前往操作</button>
<swiper class='wp100' style="height:550rpx;" autoplay circular bindchange="bannerChange">
<swiper-item class="relative" wx:for="{{remindMsg}}" wx:key="index">
<view class="pt40 pl40 pr40">
<view class="font-36 text-center">{{item.title}}</view>
<view class="mt10 font-22 text-center color-999">{{item.content}}</view>
</view>
<view class="mt20 pl40 pr40 pb40">
<image class='wp100 ulib-r10' src='{{item.img}}' mode='widthFix'></image>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowReport" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button bindtap="pushLink" data-url="{{item.btn.url}}" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">{{item.btn.title}}</button>
</view>
</swiper-item>
</swiper>
<view class="absolute left-0 right-0 bottom-0 pb20 text-center" style='height:30rpx' wx:if="{{remindMsg.length>1&&remindMsg.length<16}}">
<block wx:for-items="{{remindMsg}}" wx:for-index="j" wx:key='j'>
<view class="inline-block indicator-pin {{banneractive==j?'active':''}}"></view>
</block>
</view>
</view>
</lcb-msg>
<!-- 库存提醒 -->
<lcb-msg isShow="{{!isShowVersionInfo&&!isShowReport&&isShowGoods}}" isCustomTabBar="{{true}}">
<view slot="content" class="inner40" style="width:550rpx;">
<view class="text-center font-36">{{warning.title}}</view>
<view class="mt10 text-center font-22 color-f9394d">{{warning.note}}</view>
<view class="relative">
<swiper class='wp100' style="height:420rpx;" autoplay circular bindchange="bannerChange3">
<swiper-item class="relative" wx:for="{{warning.list}}" wx:key="index">
<view class="mt40 fn-clear">
<view class="fn-fl">
<view class="font-36">{{item.title}}</view>
<view class="mt10 font-22 color-666">{{item.vin}}</view>
</view>
<view class="fn-fr pt5 pb5 pl20 pr20 bg-f9394d font-22 color-fff ulib-r750">{{item.days}}</view>
</view>
<view class="mt10 pb10">
<image class='wp100' src='{{item.img}}' mode='widthFix'></image>
</view>
</swiper-item>
</swiper>
<view class="absolute left-0 right-0 bottom-0 pb20 text-center" style='height:30rpx' wx:if="{{warning.list.length>1&&warning.list.length<16}}">
<block wx:for-items="{{warning.list}}" wx:for-index="j" wx:key='j'>
<view class="inline-block indicator-pin {{banneractive3==j?'active':''}}"></view>
</block>
</view>
</view>
<view class="fn-flex pl60 pr60 pb20 text-center font-32 color-666">
<button bindtap="optShowGoods" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button bindtap="pushLink" data-url="/pages/inventory/warning/index" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">点击查看</button>
</view>
</view>
</lcb-msg>
<!-- 更新新版本提醒 -->
<lcb-msg isShow="{{isShowVersionInfo}}" isBottomOpt="{{true}}" closeWord="我知道了" bind:closeevent="closeVersionInfo" isCustomTabBar="{{true}}">
<view slot="content" class="inner40 text-center" style="width:550rpx;">
<view class="font-36">狸车宝 {{versionInfo.number}} 更新说明</view>
<view class="inline-block mt10 font-28 color-666">
<view class="mt15 text-left" wx:for-items="{{versionInfo.list}}" wx:key='index'>{{index+1}}、{{item}}</view>
</view>
</view>
</lcb-msg>
+15 -1
View File
@@ -1,4 +1,18 @@
.bg-1c89fd-8058fe{background-image:linear-gradient(45deg, #1c89fd, #8058fe);}
.bg-fe606c-ff9026{background-image:linear-gradient(45deg, #fe606c, #ff9026); text-align: center;}
.bg-ffedeb{background-color:#ffedeb;}
.color-ff4a3a{color:#ff4a3a;}
.color-ff4a3a{color:#ff4a3a;}
.indicator-pin{width:20rpx;height:6rpx;display:inline-block;background-color:#ddd;cursor:pointer;transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;margin:0 6rpx;vertical-align:top}
.indicator-pin.active{background-color:#36afa2;}
.indicator-pin2{width:20rpx;height:6rpx;display:inline-block;background-color:#fad6c9;cursor:pointer;transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;margin:0 6rpx;vertical-align:top}
.indicator-pin2.active{background-color:#f9394d;}
.peg-tip{top:-7rpx;}
.glider{position:absolute;width:24.5%;height:46rpx;background:#fff;z-index:0;transition:0.25s ease-out;border-radius:750rpx;}
.glider-0{transform:translatex(0%);}
.glider-1{transform:translatex(99%);}
.glider-2{transform:translatex(199%);}
.glider-3{transform:translatex(300%);}
+189
View File
@@ -0,0 +1,189 @@
import _ from '../../../commons/js/commons'
const app = getApp()
Page({
data: {
imgUrl:_.config.imgUrl,
isShowTransfer:false,//是否显示确认弹窗
car_img:[],//请上传运输单
id:'',//查看id
mileage:'',//里程数
note:'',//备注
},
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
this.getAppInventory()
},
onShow: function () {
},
//获取订单详情
getAppInventory(){
let params = {};
if(this.data.id != ''){
params['id'] = this.data.id;
}
_.apiQuery.getAppInventory(params).then(res=>{
this.setData({
info:res.data,
car_img:res.data.car_img,
mileage:res.data.mileage?res.data.mileage:'',
note:res.data.note?res.data.note:'',
})
wx.stopPullDownRefresh()
})
},
//选择图片
chooseImg(e) {
let that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res1) {
wx.showLoading({
title: '图片上传中',
})
wx.uploadFile({
url: _.config.api.upImg,
filePath: res1.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success(res) {
setTimeout(function () {
wx.hideLoading()
}, 500);
let imgdata = JSON.parse(res.data)
that.setData({
['car_img['+e.currentTarget.dataset.index+'].src']:imgdata.data.full_url,
['car_img['+e.currentTarget.dataset.index+'].value']:imgdata.data.url,
})
},
fail(res) {
wx.hideLoading()
wx.showToast({
title: res.data.msg,
icon: 'none',
duration: 2000
})
}
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
},
//显示报备异常弹框
optShowReport(e){
this.setData({
isShowReport:!this.data.isShowReport,
photos:[],
note:'',
optid:e.currentTarget.dataset.id?e.currentTarget.dataset.id:'',
})
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//确认盘点信息
postAppInventory() {
let that = this
if (that.data.mileage == ''){
wx.showToast({
title: '请填定里程数',
icon: 'none'
})
}else{
that.setData({
submitFlag: true,
})
let params = {};
params['id'] = that.data.id;
params['car_img'] = that.data.car_img;
params['mileage'] = that.data.mileage;
if(that.data.note){
params['note'] = that.data.note;
}
_.apiQuery.postAppInventory(params).then(res => {
let pages = getCurrentPages();
let prevPage = null; //上一个页面
if (pages.length >= 2) {
prevPage = pages[pages.length - 2]; //上一个页面
if(prevPage.route == 'pages/inventory/list/index'){
prevPage.onPullDownRefresh()
}
}
that.onPullDownRefresh()
that.setData({
submitFlag: false,
})
wx.showModal({
title: '操作成功',
content: '',
confirmText: "返回",
confirmColor: "#36afa2",
showCancel:false,
success(res) {
if (res.confirm) {
wx.navigateBack({
delta: 1
})
}
}
})
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
},
//查看图片
previewImage: function (e) {
if(e.currentTarget.dataset.type=='car_img'){
let car_img = []
this.data.car_img.forEach(item => {
car_img.push(item.src)
})
wx.previewImage({
current:e.currentTarget.dataset.current,
urls:car_img,
})
}
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.getAppInventory()
},
})
+6
View File
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "盘点详情",
"usingComponents": {
}
}
+60
View File
@@ -0,0 +1,60 @@
<view class="container">
<view class="inner30 {{info.status==1?'pb200':'pb100'}}">
<view class="relative bg-fff ulib-r10 box-shadow-000-10-10">
<view class="inner40">
<view class="font-40">{{info.biz_name}}</view>
<view class="mt10 pb10">
<image class='wp100' src='{{info.car_cor_img}}' mode='widthFix'></image>
</view>
<block wx:for="{{info.other_data}}" wx:key='i'>
<view class="mt25 fn-clear font-28 color-666">
<view class="fn-fl">{{item.title}}</view>
<view class="fn-fr wp60 text-right" wx:if="{{item.list}}">
<block wx:for="{{item.list}}" wx:for-item="it" wx:key='i'>
<text class="inline-block ml5 mr5 pl10 pr10 bg-999 font-22 color-fff ulib-r750">{{it}}</text>
</block>
</view>
<view class="fn-fr wp60 text-nowrap text-right" wx:elif="{{item.value}}">{{item.value}}</view>
</view>
</block>
</view>
<view class="pb40">
<view class="pl40 pr40 font-32">盘点信息</view>
<view class="mt20 pl30">
<block wx:for="{{car_img}}" wx:key='index'>
<view class="inline-block ml10 mr10 text-center ulib-r10 overflowhidden" wx:if="{{item.value}}">
<view class="bg-f8 img-190x175 relative ulib-r10">
<i class="absolute top-0 right-0 bg-000-op50 iconfont icon-shuaxin inner10 font-26 color-fff ulib-rtr10 ulib-rbl10 z-index-1" bindtap="chooseImg" data-index="{{index}}"></i>
<view class="absolute left-0 right-0 box-middle color-ccc">
<image class='img-190x175 ulib-r10' src='{{item.src}}' mode='aspectFill' bindtap="previewImage" data-type="car_img" data-current="{{item.src}}"></image>
</view>
</view>
<view class="mt10 font-24 color-666">{{item.title}}</view>
</view>
<view class="inline-block ml10 mr10 text-center ulib-r10 overflowhidden" bindtap="chooseImg" data-index="{{index}}" wx:else>
<view class="bg-f8 img-190x175 relative ulib-r10">
<view class="absolute left-0 right-0 box-middle color-ccc">
<i class="iconfont icon-paizhao font-48"></i>
<view class="mt5 font-22">上传{{item.title}}</view>
</view>
</view>
<view class="mt10 font-24 color-666">{{item.title}}</view>
</view>
</block>
</view>
<view class="relative mt30 pl40 pr100">
<input class="wp100 pl20 pr20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请填写里程数" type="digit" style="height:70rpx;" model:value='{{mileage}}'/>
<view class="absolute box-middle right-0 pr40 font-26 color-666">km</view>
</view>
<view class="relative mt30 pl40 pr40">
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" placeholder-class="color-ccc" placeholder="请填写备注" type="text" style="height:120rpx;" model:value='{{note}}' />
</view>
<view class="mt40 pl40 pr40">
<button disabled="{{submitFlag}}" bindtap="postAppInventory" class="btn-36afa2 wp100 pt10 pb10 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</view>
<view class="mt30 font-24 color-999"><i class="mr5 iconfont icon-tishi"></i>请盘点以上对应信息。</view>
</view>
</view>
+1
View File
@@ -0,0 +1 @@
/* pages/allot/detail/index.wxss */
+161
View File
@@ -0,0 +1,161 @@
import _ from '../../../commons/js/commons'
const app = getApp()
Page({
data: {
list: [],//客户列表
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag:1,
s_date:'',
e_date:'',
tabs_id:'',//分类 1进行中2已完成
tab:[],
channel:'',//是否来自渠道
},
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
if(this.data.title){
wx.setNavigationBarTitle({
title:this.data.title,
})
}
this.getAppInventoryTabs()
},
//tab
getAppInventoryTabs() {
_.apiQuery.getAppInventoryTabs().then(res => {
this.setData({
tab:res.data,
tabs_id:this.data.tabs_id==''?res.data[0].id:this.data.tabs_id,
})
this.getAppInventoryLists()
wx.stopPullDownRefresh()
});
},
//切换tab
changeTab(e){
this.setData({
tabs_id: this.data.tab[e.currentTarget.dataset.index].id,
})
this.searchSubmit()
},
//获取客户列表
getAppInventoryLists() {
this.setData({
load: false,
loading: true,
})
let params = {};
params['page'] = this.data.pageNo;
params['size'] = 10;
if(this.data.channel != ''){
params['channel'] = this.data.channel;
}
if(this.data.tabs_id != ''){
params['tabs_id'] = this.data.tabs_id;
}
if(this.data.s_date != ''){
params['s_date'] = this.data.s_date;
}
if(this.data.e_date != ''){
params['e_date'] = this.data.e_date;
}
_.apiQuery.getAppInventoryLists(params).then(res => {
this.setData({
flag: this.data.flag - 1
})
if (!this.data.flag) {
this.setData({
pageNo: this.data.pageNo + 1,
list: this.data.list.concat(res.data.list),
load: true,
loading: false,
})
if (res.data.total == 0) {
this.setData({
noData: true
})
} else if (this.data.list.length == res.data.total) {
this.setData({
end: true
})
}
}
wx.stopPullDownRefresh()
});
},
//提交搜索
searchSubmit(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag: this.data.flag + 1
})
this.getAppInventoryLists()
},
//建卡时间
startDate(e){
this.setData({
s_date: e.detail.value,
})
},
//建卡时间
endDate(e){
this.setData({
e_date: e.detail.value,
})
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
flag: this.data.flag + 1
})
this.getAppInventoryLists()
},
//页面上拉触底事件的处理函数
onReachBottom(){
if (this.data.noData || this.data.end||!this.data.load) return;
this.setData({
flag: this.data.flag + 1
})
this.getAppInventoryLists()
},
})
+6
View File
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "盘点列表",
"usingComponents": {
}
}
+65
View File
@@ -0,0 +1,65 @@
<view class="container">
<view>
<view style="padding-top:110rpx"></view>
<view class="fixed top-0 left-0 right-0 bg-fff z-index-1">
<view class="fn-flex mt5 pl100 pr100 font-32 color-666 text-center" wx:if="{{tab.length<5}}">
<block wx:for='{{tab}}' wx:key='list'>
<view class="fn-flex-item pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab">
<view class="relative">{{item.name}}</view>
</view>
</block>
</view>
<scroll-view class="mt5 font-32 color-666 text-center space-nowrap" scroll-x="true" wx:else>
<view class="pl20 inline-block"></view>
<block wx:for='{{tab}}' wx:key='list'>
<view class="pl20 pr20 tabmenu2 {{tabs_id == item.id?'active color-36afa2':''}}" data-index="{{index}}" bindtap="changeTab" >
<view class="relative">{{item.name}}</view>
</view>
</block>
<view class="pl40 inline-block"></view>
</scroll-view>
</view>
</view>
<view class="pl30 relative text-center font-22">
<view class="inline-block text-middle pt10 pb10 bg-f6 ulib-r750" style="width:240rpx;">
<picker mode="date" value="{{s_date}}" bindchange="startDate">
<text class="color-ccc" wx:if="{{s_date == ''}}">请选择</text>
<text wx:else>{{s_date}}</text>
</picker>
</view>
<view class="inline-block text-middle pt10 pb10 pl10 pr10">-</view>
<view class="wp33 inline-block text-middle pt10 pb10 bg-f6 ulib-r750" style="width:240rpx;">
<picker mode="date" value="{{e_date}}" bindchange="endDate">
<text class="color-ccc" wx:if="{{e_date == ''}}">请选择</text>
<text wx:else>{{e_date}}</text>
</picker>
</view>
<view bindtap="searchSubmit" class="inline-block text-middle ml10 pt10 pb10 bg-333 color-fff ulib-r750" style="width:140rpx;">搜索</view>
</view>
<view class="mt30 pl30 pr30 pb50">
<block wx:for='{{list}}' wx:key='index'>
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden" bindtap="pushLink" data-url="/pages/inventory/detail/index?id={{item.id}}">
<view class="relative {{tabs_id == 1?'pr150':''}}">
<view class="font-40" wx:if="{{item.biz_name}}">{{item.biz_name}}</view>
<view class="absolute box-middle right-0 pt5 pb5 pl15 pr15 bg-f9394d font-26 color-fff ulib-r10" wx:if="{{tabs_id == 1}}">立即盘点</view>
</view>
<view class="mt10 pb10">
<image class='wp100' src='{{item.car_cor_img}}' mode='widthFix'></image>
</view>
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='it' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{it.title}}</view>
<view class="fn-fr wp60 text-nowrap text-right color-666">{{it.value}}</view>
</view>
</block>
<view class="mt20 pt5 pb5 pl20 pr20 bg-f6 font-22 color-666 ulib-rlb750 ulib-rr750" wx:if="{{item.c_time}}">{{item.c_time}}</view>
</view>
</block>
<lcb-listmore isLoading='{{loading}}' isEnd='{{end}}' isNoData='{{noData}}'></lcb-listmore>
</view>
</view>
+3
View File
@@ -0,0 +1,3 @@
.tabmenu2{display:inline-block;line-height:72rpx;}
.tabmenu2.active view.relative{display:inline-block;}
.tabmenu2.active view.relative::before{display:inline-block;position:absolute;bottom:0;left:50%;transform:translate(-50%,0);width:64rpx;height:6rpx;content:"";background-color:#36afa2;}
+86
View File
@@ -0,0 +1,86 @@
import _ from '../../../commons/js/commons'
const app = getApp()
Page({
data: {
list: [],//库存列表
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
},
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
if(this.data.title){
wx.setNavigationBarTitle({
title:this.data.title,
})
}
this.getAppGoodsLists()
},
//获取库存列表
getAppGoodsLists() {
this.setData({
load: false,
loading: true,
})
let params = {};
params['page'] = this.data.pageNo;
params['size'] = 10;
_.apiQuery.getAppGoodsLists(params).then(res => {
this.setData({
flag: this.data.flag - 1
})
this.setData({
pageNo: this.data.pageNo + 1,
list: this.data.list.concat(res.data.list),
load: true,
loading: false,
})
if (res.data.total == 0) {
this.setData({
noData: true
})
} else if (this.data.list.length == res.data.total) {
this.setData({
end: true
})
}
wx.stopPullDownRefresh()
});
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
list: [],
pageNo: 1,
noData: false,
end: false,
load: true,
loading: false,
})
this.getAppGoodsLists()
},
//页面上拉触底事件的处理函数
onReachBottom(){
if (this.data.noData || this.data.end||!this.data.load) return;
this.getAppGoodsLists()
},
})
+6
View File
@@ -0,0 +1,6 @@
{
"navigationBarTitleText": "库存列表",
"usingComponents": {
}
}
+22
View File
@@ -0,0 +1,22 @@
<view class="container">
<view class="mt30 pl30 pr30 pb50">
<block wx:for='{{list}}' wx:key='index'>
<view class="inner40 relative ulib-r10 box-shadow-000-10-10 mb30 overflowhidden">
<view class="font-40" wx:if="{{item.title}}">{{item.title}}</view>
<view class="mt10 pb10">
<image class='wp100' src='{{item.car_cor_img}}' mode='widthFix'></image>
</view>
<block wx:for="{{item.other_data}}" wx:for-index='key' wx:for-item='it' wx:key='i'>
<view class="mt25 fn-clear font-28">
<view class="fn-fl color-333">{{it.title}}</view>
<view class="fn-fr wp60 text-nowrap text-right color-666" style="{{it.color?'color:'+it.color:''}}">{{it.value}}</view>
</view>
</block>
</view>
</block>
<lcb-listmore isLoading='{{loading}}' isEnd='{{list.length>5&&end}}' isNoData='{{noData}}'></lcb-listmore>
</view>
</view>
View File
+17 -2
View File
@@ -20,7 +20,11 @@ Page({
onShow: function () {
let ukey = app.getStorageByKey("ukey");
if (!!ukey&&!!app.getStorageByKey("userInfo")){
if(app.getStorageByKey("userInfo").group_id==4){
if(app.getStorageByKey("userInfo").biz_type==4){
wx.navigateTo({
url: '/pages/allot/index',
})
}else if(app.getStorageByKey("userInfo").group_id==4){
wx.navigateTo({
url: '/pages/channel/index',
})
@@ -110,7 +114,11 @@ Page({
})
setTimeout(function () {
_.apiQuery.getUserInfo().then(res => {
if(res.group_id==4){
if(res.biz_type==4){
wx.navigateTo({
url: '/pages/allot/index',
})
}else if(res.group_id==4){
wx.navigateTo({
url: '/pages/channel/index',
})
@@ -142,4 +150,11 @@ Page({
}
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
})
+10 -4
View File
@@ -1,7 +1,7 @@
<view class="container">
<view hidden="{{!pageshow}}">
<view class='pt100 text-center'>
<image class='img-140x140 ulib-r750' mode="aspectFill" src='{{imgUrl}}/login/logo.jpg'></image>
<image class='img-140x140 ulib-r750' mode="aspectFill" src='{{imgUrl}}/login/logo.jpg?v=220223'></image>
<view class='mt10 font-32 color-fff'>狸车宝</view>
</view>
<view class='pt30 pb30 pl90 pr90 relative z-index-4'>
@@ -18,15 +18,21 @@
</view>
<view class="absolute right-0 box-middle mr40 pt30 pb30 font-30 color-36afa2" bindtap='getAppSms'>{{text}}</view>
</view>
<view class='mt60 relative'>
<view class="mt30 font-22 color-ccc text-center">
<label class="inline-block text-middle statement fn-clear"><checkbox class="fn-fl" checked="true" /><text class="pt3 fn-fl">我已阅读并同意</text></label>
<text class="text-middle color-36afa2" bindtap="pushLink" data-url="/pages/statement/registration/index">《狸车用户注册协议》</text>
<!-- <text class="text-middle">和</text>
<text class="text-middle color-36afa2" bindtap="pushLink" data-url="/pages/statement/privacy/index">《狸车用户隐私政策》</text> -->
</view>
<view class='mt30 relative'>
<button class='btn-36afa2 font-36 color-fff ulib-r750' hover-class='btn-36afa2-hover' bindtap='getUserUkey'>登录</button>
</view>
</view>
<view class="absolute wp100 login-light img-fill-cover" style="background-image:url({{imgUrl}}/login/login-light.png?v=1);"></view>
<view class="absolute wp100 bottom-170 text-center font-28 color-999">
<view class="absolute left-0 top-0 right-0 bottom-0 opacity-0 overflowhidden">
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" styleType='3' plugid='877ffe64ccc36a5f308252eadc3066df' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" styleType='3' plugid='877ffe64ccc36a5f308252eadc3066df' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" styleType='1' plugid='9280d952ecab1136d907a34b6799df97' />
<QYWXcontact buttonText="{{4}}" class="pt40 pb40" styleType='1' plugid='9280d952ecab1136d907a34b6799df97' />
</view>
<i class="iconfont icon-kefu mr5"></i>联系小狸
</view>
+21 -1
View File
@@ -11,4 +11,24 @@ page{
.login-light{left:0;bottom:322rpx;height:138rpx;animation:light linear 2s infinite;}
@keyframes light{0%{opacity:1}100%{opacity:0}}
.bottom-170{bottom:170rpx;}
.bottom-170{bottom:170rpx;}
/*复选框外框样式*/
.statement checkbox .wx-checkbox-input {
width:22rpx;
height:22rpx;
border-color: #999;
background: #f9f9f9;
}
/* 选中后的 背景样式*/
.statement checkbox .wx-checkbox-input.wx-checkbox-input-checked {
border-color: #36afa2;
background: #36afa2;
}
/*复选框选中后内部样式*/
.statement checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
font-size:18rpx;
color:#fff;
transform:translate(-50%, -50%) scale(1);
-webkit-transform:translate(-50%, -50%) scale(1);
}
+72 -12
View File
@@ -6,6 +6,8 @@ Page({
isShowAddStaff:false,
name:'',
mobile:'',
isShowProfile:true,//是否显示授权用户信息按钮
isShowSwitchingRoles:false,
},
onLoad: function (options) {
@@ -18,25 +20,24 @@ Page({
let list = []
if(this.data.source=='channel'){
list = [
{
icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-zichan2.png',
title:'我的资产',
url:'',
},
// {
// icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-zichan2.png',
// title:'我的资产',
// url:'',
// },
{
icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-sezhi2.png',
title:'账户设置',
url:'/pages/mine/install/index',
},
]
}else if(this.data.source=='shop'){
list = [
{
icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-zichan2.png',
title:'我的资产',
url:'',
},
// {
// icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-zichan2.png',
// title:'我的资产',
// url:'',
// },
{
icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-sucai2.png',
title:'我的素材',
@@ -47,7 +48,11 @@ Page({
title:'账户设置',
url:'/pages/mine/install/index',
},
// {
// icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-siyutong2.png',
// title:'私域通',
// url:'/pages/siyutong/index',
// },
]
}
@@ -66,10 +71,24 @@ Page({
}
}
})
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
},
onShow: function () {
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//获取用户信息
getUserInfo(){
@@ -77,6 +96,17 @@ Page({
this.setData({
userInfo: res
})
// if(res.group_id==2||res.group_id==3){
// let list = this.data.list
// list.push({
// icon:'https://qs.haodian.cn/wechat_app/lichebao/mine/icon-jieshao2.png',
// title:'转介绍',
// url:'/pages/recommend/index',
// })
// this.setData({
// list,
// })
// }
});
},
@@ -107,4 +137,34 @@ Page({
}
},
//切换角色
putAppResetgroupid(e){
let params = {};
params['group_id'] = e.currentTarget.dataset.key;
_.apiQuery.putAppResetgroupid(params).then(res=>{
_.apiQuery.getUserInfo().then(res => {
if(res.biz_type==4){
wx.reLaunch({
url: '/pages/allot/index',
})
}else if(res.group_id==4){
wx.reLaunch({
url: '/pages/channel/index',
})
}else{
wx.reLaunch({
url: '/pages/index/index',
})
}
});
})
},
//显示切换角色
switchingRoles(){
this.setData({
isShowSwitchingRoles:!this.data.isShowSwitchingRoles,
})
},
})
+29 -6
View File
@@ -2,19 +2,25 @@
<view class="inner30 img-top-cover" style="background-image:url({{imgUrl}}mine/mine-bg2.png);">
<view class="wp100 pt5 pb5 bg-fff img-fill-cover box-shadow-000-10-10 ulib-r10" style="background-image:url({{imgUrl}}mine/theme.jpg);">
<view class="relative inner40">
<view class="img-135x135 bds-1-eb ulib-r750 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
<image class='img-135x135 bds-1-eb ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt50 mr150 z-index-4">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view class="absolute left-0 right-0 box-middle pl200">
<view class="text-bold font-32">
<!-- <open-data type="userNickName"></open-data> -->
{{userInfo.uname}}
<text class="font-22 color-666" wx:if="{{userInfo.group_name}}">({{userInfo.group_name}})</text>
</view>
<view class="mt10 font-22 color-666">{{userInfo.biz_name}}</view>
</view>
<view class="absolute right-0 box-middle bg-f6 pt10 pb10 pl20 pr20 font-22 color-666 ulib-rl750" bindtap="logout">
<i class="iconfont icon-tuichu mr10"></i>退出
<view class="absolute right-0 box-middle pb40" >
<view class="bg-f6 mb25 pt10 pb10 pl20 pr15 font-22 color-666 ulib-rl750" bindtap="switchingRoles" wx:if="{{userInfo.group_name_arr.length>0}}">
<i class="iconfont icon-cheliangfenpei mr10"></i>切换角色
</view>
<view class="bg-f6 pt10 pb10 pl20 pr20 font-22 color-666 ulib-rl750" bindtap="logout">
<i class="iconfont icon-tuichu mr10"></i>退出
</view>
</view>
</view>
</view>
@@ -43,4 +49,21 @@
<!-- <lcb-footer></lcb-footer> -->
<lcb-backChannel isShow='{{source=="shop"?true:false}}'></lcb-backChannel>
<lcb-channelTabBarNav currentIndex='2' wx:if="{{source=='channel'}}"></lcb-channelTabBarNav>
<lcb-shopTabBarNav currentIndex='3' wx:if="{{source=='shop'}}"></lcb-shopTabBarNav>
<lcb-shopTabBarNav currentIndex='3' wx:if="{{source=='shop'}}"></lcb-shopTabBarNav>
<lcb-msg isShow="{{isShowSwitchingRoles}}" isHasClose="{{true}}">
<view slot="content">
<view class="pt50 font-28 text-center">
当前角色:
<!-- <block wx:for='{{userInfo.group_name_arr}}' wx:key='index' wx:if="{{item.group_id == userInfo.group_id}}">
{{item.geoup_name}}
</block> -->
{{userInfo.group_name}}
</view>
<view class="pb40 mt30 text-center font-32 color-666">
<button bindtap="putAppResetgroupid" data-key="{{item.group_id}}" class="inline-block wp80 btn-36afa2 pt5 pb5 font-28 color-fff ulib-r750" wx:for='{{userInfo.group_name_arr}}' wx:key='index' wx:if="{{item.group_id != userInfo.group_id}}">
{{item.geoup_name}}
</button>
</view>
</view>
</lcb-msg>
+14
View File
@@ -4,6 +4,7 @@ Page({
data: {
imgUrl:_.config.imgUrl,
list:[],
isShowProfile:true,//是否显示授权用户信息按钮
},
onLoad: function (options) {
@@ -14,11 +15,24 @@ Page({
}
this.getUserInfo()
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
},
onShow: function () {
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
+3 -3
View File
@@ -3,12 +3,12 @@
<view class="wp100 pt5 pb5 bg-fff img-fill-cover box-shadow-000-10-10 ulib-r10" style="background-image: url({{imgUrl}}mine/theme.jpg);">
<view class="relative inner40">
<view class="img-135x135 bds-1-eb ulib-r750 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
<image class='img-135x135 bds-1-eb ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt50 mr150 z-index-4">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view class="absolute left-0 right-0 box-middle pl200">
<view class="text-bold font-32">
<!-- <open-data type="userNickName"></open-data> -->
{{userInfo.uname}}
<text class="font-22 color-666" wx:if="{{userInfo.group_name}}">({{userInfo.group_name}})</text>
</view>
+107
View File
@@ -12,6 +12,7 @@ Page({
end: false,
load: true,
loading: false,
isShowProfile:true,//是否显示授权用户信息按钮
},
onLoad: function (options) {
for (let key in options) {
@@ -21,11 +22,24 @@ Page({
}
this.getUserInfo()
//消息通讯 是否显示授权用户信息按钮
_.eventBus.on("isShowProfile", this, function(res){
this.setData({
isShowProfile:res,
})
})
},
onShow: function () {
this.getAppEmployees()
},
//生命周期函数--监听页面卸载
onUnload: function () {
//卸载消息通讯 是否显示授权用户信息
_.eventBus.remove('isShowProfile',this);
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
@@ -182,6 +196,99 @@ Page({
}
},
//获取离职
getAppEmployeesLeave(e){
let params = {};
params['id'] = e.currentTarget.dataset.id;
_.apiQuery.getAppEmployeesLeave(params).then(res => {
let adviserArray = []
res.data.adviser.list.forEach(item => {
adviserArray.push(item.name)
})
this.setData({
out_id:e.currentTarget.dataset.id,
transfer:res.data.transfer,
adviser:res.data.adviser,
adviserArray,
isShowTransfer:true,
adviserIndex:-1,
})
});
},
//显示隐藏移交
optTransfer(){
this.setData({
isShowTransfer:!this.data.isShowTransfer,
})
},
//选择移交内容
changeTransfer(e){
let transfer = this.data.transfer
transfer.list[e.currentTarget.dataset.index].checked = !transfer.list[e.currentTarget.dataset.index].checked
this.setData({
transfer,
})
},
//选择顾问
changeAdviser(e) {
this.setData({
adviserIndex: e.detail.value,
})
},
//确定移交
putAppEmployeesLeave(){
let ischecked = false
this.data.transfer.list.forEach(item => {
if(item.checked){
ischecked = true
}
})
console.log(ischecked)
if (ischecked == false ) {
wx.showToast({
title: '请选择移交内容',
icon: 'none'
})
} else if(this.data.adviserIndex == -1){
wx.showToast({
title: '请选择销售顾问',
icon: 'none'
})
}else{
let that = this
wx.showModal({
title: '',
content:'确定移交该店员工作吗?',
confirmColor: '#36afa2',
success (res) {
if (res.confirm) {
let params = {};
params['out_id'] = that.data.out_id;
params['in_id'] = that.data.adviser.list[that.data.adviserIndex].id;
params['transfer'] = that.data.transfer;
_.apiQuery.putAppEmployeesLeave(params).then(res => {
that.setData({
isShowTransfer:false,
})
wx.showToast({
title: '移交成功',
icon: 'success'
})
that.onPullDownRefresh()
})
} else if (res.cancel) {
}
}
})
}
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.setData({
+36 -8
View File
@@ -3,12 +3,12 @@
<view class="wp100 pt5 pb5 bg-fff img-fill-cover box-shadow-000-10-10 ulib-r10" style="background-image: url({{imgUrl}}mine/theme.jpg);">
<view class="relative inner40">
<view class="img-135x135 bds-1-eb ulib-r750 overflowhidden">
<open-data type="userAvatarUrl"></open-data>
<image class='img-135x135 bds-1-eb ulib-r750 overflowhidden' mode="aspectFill" src="{{userInfo.headimg||imgUrl+'common/default-head.jpg'}}" lazy-load="{{true}}"></image>
<view class="absolute top-0 bottom-0 left-0 right-0 opacity-0 mt50 mr150 z-index-4">
<lcb-auth type="userinfo" isShowProfile="{{isShowProfile}}" bind:onSuccess="getUserInfo"></lcb-auth>
</view>
<view class="absolute left-0 right-0 box-middle pl200">
<view class="text-bold font-32">
<!-- <open-data type="userNickName"></open-data> -->
{{userInfo.uname}}
<text class="font-22 color-666" wx:if="{{userInfo.group_name}}">({{userInfo.group_name}})</text>
</view>
@@ -34,12 +34,13 @@
<block wx:for="{{list}}" wx:key='index'>
<view class="relative pt30 pb30 pr250 bbs-1-eb last-b-none {{item.status==1?'':'opacity-50'}}">
<view class="text-nowrap">
<image class='img-50x50 bds-1-eb ulib-r750 text-middle' lazy-load="{{true}}" mode="scaleToFill" src="{{imgUrl}}common/default-head.jpg"></image>
<text class="pl10 text-middle font-28">{{item.uname}}</text>
<text class="pl10 text-middle font-28">{{item.mobile}}</text>
<image class='img-50x50 bds-1-eb ulib-r750 text-middle' lazy-load="{{true}}" mode="scaleToFill" src="{{imgUrl}}common/default-head.jpg?v=220223"></image>
<text class="pl10 text-middle font-26">{{item.uname}}</text>
<text class="pl10 text-middle font-26">{{item.mobile}}</text>
</view>
<view class="absolute right-0 box-middle">
<view class="inline-block bg-333 mr20 pt5 pb5 pl10 pr10 font-22 color-fff ulib-r750" bindtap="putAppEmployees" data-index="{{index}}"><i class="iconfont icon-zanting mr5"></i>{{item.status == 1?'暂停':'开启'}}</view>
<view class="absolute right-0 box-middle font-26">
<view class="inline-block bg-333 mr10 pt5 pb5 pl10 pr10 font-22 color-fff ulib-r750" bindtap="getAppEmployeesLeave" data-id="{{item.id}}"><i class="iconfont icon-yuangonglizhi mr5"></i>离职</view>
<view class="inline-block bg-333 mr10 pt5 pb5 pl10 pr10 font-22 color-fff ulib-r750" bindtap="putAppEmployees" data-index="{{index}}"><i class="iconfont icon-zanting mr5"></i>{{item.status == 1?'暂停':'开启'}}</view>
<view class="inline-block bg-333 pt5 pb5 pl10 pr10 font-22 color-fff ulib-r750" bindtap="deleteAppEmployees" data-index="{{index}}"><i class="iconfont icon-shanchu mr5"></i>删除</view>
</view>
</view>
@@ -69,4 +70,31 @@
<button disabled="{{submitFlag}}" bindtap="postAppEmployees" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">添加</button>
</view>
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowTransfer}}">
<view slot="content">
<view class="inner30">
<view class="mt10 font-28 text-center fn-flex" wx:if="{{transfer.list.length > 0}}">
<block wx:for="{{transfer.list}}" wx:key="index">
<view class="fn-flex-item relative ml10 mr10 pt20 pb20 ulib-r10 {{item.checked?'bg-36afa2 color-fff':'bg-f6'}}" bindtap="changeTransfer" data-index="{{index}}">{{item.name}}</view>
</block>
</view>
<view class="mt20 ml10 mr10 bds-2-eb inner20 font-28 color-666 fn-clear ulib-r10">
<view class="fn-fl">{{adviser.title}}</view>
<picker class="fn-fr wp70 text-right" bindchange="changeAdviser" value="{{adviserIndex}}" range="{{adviserArray}}">
<view class="text-nowrap">
<text class="color-ccc" wx:if="{{adviserIndex == -1}}">请选择</text>
<text wx:else>{{adviserArray[adviserIndex]}}</text>
<i class="iconfont ml5 icon-gengduo color-ccc"></i>
</view>
</picker>
</view>
</view>
<view class="fn-flex ml10 mr10 pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optTransfer" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">取消</button>
<button disabled="{{submitFlag}}" bindtap="putAppEmployeesLeave" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定移交</button>
</view>
</view>
</lcb-msg>
+65 -168
View File
@@ -45,12 +45,14 @@ Page({
ckcarInfo:[],//随车资料选中内容
carToolList:[],//随车随车工具选项
ckcarTool:[],//随车工具选中内容
nextCode:false,
ins_img:[],
register_img:{},
car_img:{},
isShowCall:false,//是否显示拨打电话确认弹框
phoneNumber:'',//拨打的电话号码
},
onLoad: function (options) {
for (let key in options) {
@@ -98,7 +100,6 @@ Page({
})
}
this.getAppLoan()
if(!this.data.isChangePayway){
this.getAppServicesPackage()
}
@@ -159,44 +160,6 @@ Page({
})
},
//获取贷款产品信息
getAppLoan(){
let params = {};
params['id'] = this.data.id;
_.apiQuery.getAppLoan(params).then(res=>{
this.setData({
loanSource:res.data,
money:res.data.first_price,
})
if(this.data.info.loan_status == 1 && this.data.info.loan_data.id){
if(this.data.info.loan_data.bank != ''){
this.data.loanSource.banks.forEach((item,index) => {
if(item == this.data.info.loan_data.bank){
this.setData({
banksIndex:index,
})
}
})
}
if(this.data.info.loan_data.year != 0){
this.data.loanSource.years.forEach((item,index) => {
if(item == this.data.info.loan_data.year){
this.setData({
yearsIndex:index,
})
}
})
}
}
})
},
//获取代办包
getAppServicesPackage(){
let params = {};
@@ -368,102 +331,6 @@ Page({
}
},
//创建贷款信息
postAppLoan() {
let that = this
if (that.data.banksIndex == -1 ) {
wx.showToast({
title: '请选择分期产品',
icon: 'none'
})
}else if(that.data.yearsIndex == -1 ){
wx.showToast({
title: '请选择分期年限',
icon: 'none'
})
}
// else if(that.data.money == '' ){
// wx.showToast({
// title: '请填写贷款金额',
// icon: 'none'
// })
// }
else{
that.setData({
submitFlag: true,
})
let params = {};
params['oid'] = that.data.id;
params['bank'] = that.data.loanSource.banks[that.data.banksIndex];
params['year'] = that.data.loanSource.years[that.data.yearsIndex];
params['money'] = that.data.money;
_.apiQuery.postAppLoan(params).then(res => {
this.setData({
submitFlag: false,
})
this.getAppCusorderDetails()
wx.showToast({
title: '保存成功',
icon: 'success'
})
}).catch(res=>{
this.setData({
submitFlag: false,
})
});
}
},
//修改贷款信息
putAppLoan() {
let that = this
if (that.data.banksIndex == -1 ) {
wx.showToast({
title: '请选择分期产品',
icon: 'none'
})
}else if(that.data.yearsIndex == -1 ){
wx.showToast({
title: '请选择分期年限',
icon: 'none'
})
}
// else if(that.data.money == '' && that.data.info.loan_data.money == '0.00'){
// wx.showToast({
// title: '请填写贷款金额',
// icon: 'none'
// })
// }
else{
that.setData({
submitFlag: true,
})
let params = {};
params['id'] = that.data.info.loan_data.id;
params['bank'] = that.data.loanSource.banks[that.data.banksIndex];
params['year'] = that.data.loanSource.years[that.data.yearsIndex];
params['money'] = that.data.money || that.data.info.loan_data.money;
_.apiQuery.putAppLoan(params).then(res => {
this.setData({
submitFlag: false,
})
this.getAppCusorderDetails()
wx.showToast({
title: '修改成功',
icon: 'success'
})
}).catch(res=>{
this.setData({
submitFlag: false,
})
});
}
},
//选择图片
chooseImg(e) {
this.setData({
@@ -476,7 +343,9 @@ Page({
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading();
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
@@ -515,6 +384,12 @@ Page({
that.postAppIdcard()
}
}else{
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
@@ -544,6 +419,7 @@ Page({
title: '图片上传中',
})
let ins_img=that.data.ins_img
let k = 0
for (let i = 0; i < res1.tempFilePaths.length; i++) {
//上传图片
wx.uploadFile({
@@ -554,7 +430,9 @@ Page({
'app': 'liche'
},
success: (resp) => {
k = k + 1
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let imgdata = resp.data
let list = []
@@ -563,25 +441,27 @@ Page({
src:imgdata.data.full_url,
})
ins_img=ins_img.concat(list)
if(i+1==res1.tempFilePaths.length){
setTimeout(function () {
let params = {};
params['id'] = that.data.id;
params['type'] = 0;
let img = []
ins_img.forEach(item => {
img.push(item.value)
if(k == res1.tempFilePaths.length){
let params = {};
params['id'] = that.data.id;
params['type'] = 0;
let img = []
ins_img.forEach(item => {
img.push(item.value)
})
params['img'] = img;
_.apiQuery.putAppCusorderCdata(params).then(res => {
that.setData({
ins_img,
})
params['img'] = img;
_.apiQuery.putAppCusorderCdata(params).then(res => {
wx.hideLoading();
that.setData({
ins_img,
})
})
}, 500);
})
}
}else{
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
@@ -617,6 +497,7 @@ Page({
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let register_img = {
value:resp.data.data.url,
@@ -627,12 +508,16 @@ Page({
params['type'] = 1;
params['img'] = [register_img.value];
_.apiQuery.putAppCusorderCdata(params).then(res => {
wx.hideLoading();
that.setData({
register_img,
})
})
}else{
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
@@ -667,6 +552,7 @@ Page({
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let car_img = {
value:resp.data.data.url,
@@ -677,12 +563,16 @@ Page({
params['type'] = 2;
params['img'] = [car_img.value];
_.apiQuery.putAppCusorderCdata(params).then(res => {
wx.hideLoading();
that.setData({
car_img,
})
})
}else{
wx.showToast({
title: '上传失败',
icon: 'none',
duration: 2000
})
}
},
@@ -932,14 +822,6 @@ Page({
optShowCode() {
this.setData({
isShowCode:!this.data.isShowCode,
nextCode:false,
})
},
//生成合同
optNextCode() {
this.setData({
nextCode:true,
})
},
@@ -956,8 +838,9 @@ Page({
params['id'] = e.currentTarget.dataset.id;
params['type'] = 1;
_.apiQuery.getAppXz(params).then(res=>{
wx.makePhoneCall({
phoneNumber: res.data.mobile,
this.setData({
isShowCall:true,
phoneNumber:res.data.mobile,
})
})
},
@@ -996,6 +879,20 @@ Page({
})
},
//隐藏电话弹框
hideCall(){
this.setData({
isShowCall:false,
})
},
//拨打电话
makePhoneCall(){
wx.makePhoneCall({
phoneNumber: this.data.phoneNumber,
})
},
//随车工具
changeTool(e) {
let carToolList = this.data.carToolList
+64 -48
View File
@@ -3,7 +3,7 @@
<view class="pl30 pr30">
<view class="mt20 relative">
<view class="font-32">用户信息</view>
<view class="absolute right-0 box-middle font-22 color-666">销售顾问:<text class="color-36afa2">{{userInfo.uname}}</text></view>
<view class="absolute right-0 box-middle font-22 color-666">销售顾问:<text class="color-36afa2">{{info.admin_name}}</text></view>
</view>
<view class="mt20 pl40 pr40 pt10 pb10 relative ulib-r10 box-shadow-000-10-10 overflowhidden">
<view class="pt30 pb30 font-28">
@@ -11,9 +11,9 @@
<view class="mt5 font-22 color-666">手机号:{{info.mobile}}</view>
</view>
<view class="absolute right-0 mr30 box-middle">
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{info.id}}">
<i class="absolute box-center-middle iconfont icon-liuyan"></i>
</view>
<!--view class="inline-block relative img-55x55 bg-333 font-28 color-fff mr30 ulib-r750" catchtap="showMessage" data-id="{{info.id}}">
<i class="absolute box-center-middle iconfont icon-duanxinguanli"></i>
</view-->
<view class="inline-block relative img-55x55 bg-333 font-28 color-fff ulib-r750" catchtap="call" data-id="{{info.id}}">
<i class="absolute box-center-middle iconfont icon-dianhua"></i>
</view>
@@ -118,38 +118,44 @@
</view>
<!--交付随车信息-->
<view class="mt30 pl30" wx:if="{{info.ckcar_status == 1}}">
<view>
<view class="bts-1-eb mr30 pt30 pb20 font-28 color-333">随车资料</view>
<view class="pb10 fn-clear">
<checkbox-group bindchange="changeMaterial">
<block wx:for="{{carInfoList}}" wx:key='index'>
<label class="fn-fl block mb20 relative inner30 pr80 bg-f6 font-28 ulib-r10 mr20">
<text>{{item.title}}</text>
<checkbox class="absolute right-0 box-middle mr15" value="{{item.title}}" checked="{{item.checked}}"/>
</label>
</block>
</checkbox-group>
<block wx:if="{{info.ckcar_status == 1}}">
<view class="mt30 pl30">
<view>
<view class="bts-1-eb mr30 pt30 pb20 font-28 color-333">随车资料</view>
<view class="pb10 fn-clear">
<checkbox-group bindchange="changeMaterial">
<block wx:for="{{carInfoList}}" wx:key='index'>
<label class="fn-fl block mb20 relative inner30 pr80 bg-f6 font-28 ulib-r10 mr20">
<text>{{item.title}}</text>
<checkbox class="absolute right-0 box-middle mr15" value="{{item.title}}" checked="{{item.checked}}"/>
</label>
</block>
</checkbox-group>
</view>
</view>
<view>
<view class="bts-1-eb mr30 pt30 pb20 font-28 color-333">随车工具</view>
<view class="pb10 fn-clear">
<checkbox-group bindchange="changeTool">
<block wx:for="{{carToolList}}" wx:key='index'>
<label class="fn-fl block mb20 relative inner30 pr80 bg-f6 font-28 ulib-r10 mr20">
<text>{{item.title}}</text>
<checkbox class="absolute right-0 box-middle mr15" value="{{item.title}}" checked="{{item.checked}}"/>
</label>
</block>
</checkbox-group>
</view>
</view>
<view class="pr30">
<view class="bts-1-eb pt30 pb20 font-28 color-333">补充说明</view>
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" style="height:120rpx;" placeholder-class="color-ccc" maxlength='140' placeholder="请输入补充说明" model:value="{{remark}}" />
</view>
</view>
<view>
<view class="bts-1-eb mr30 pt30 pb20 font-28 color-333">随车工具</view>
<view class="pb10 fn-clear">
<checkbox-group bindchange="changeTool">
<block wx:for="{{carToolList}}" wx:key='index'>
<label class="fn-fl block mb20 relative inner30 pr80 bg-f6 font-28 ulib-r10 mr20">
<text>{{item.title}}</text>
<checkbox class="absolute right-0 box-middle mr15" value="{{item.title}}" checked="{{item.checked}}"/>
</label>
</block>
</checkbox-group>
</view>
<view class="mt50 pb20 pl60 pr60">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCusorderCkcar">确认随车物品</button>
</view>
<view class="pr30">
<view class="bts-1-eb pt30 pb20 font-28 color-333">补充说明</view>
<textarea class="wp100 inner20 bds-1-eb font-28 ulib-r10" style="height:120rpx;" placeholder-class="color-ccc" maxlength='140' placeholder="请输入补充说明" model:value="{{remark}}" />
</view>
</view>
</block>
<view class="pt30 pl30 pr30" wx:if="{{info.ckcar_status == 0&&info.ckcar_data.info.length>0}}">
<view class="relative bts-1-eb bbs-1-eb pl140 font-28">
<view class="absolute left-0 box-middle font-28 color-333">随车资料</view>
@@ -263,15 +269,6 @@
</block>
</view>
<view class="mt60 pl60 pr60" wx:if="{{info.loan_status == -10000}}"><!--210909不显示-->
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="{{info.loan_data.id?'putAppLoan':'postAppLoan'}}">{{info.loan_data.id?'修改信息':'保存信息'}}</button>
</view>
<!-- <view class="mt60 pl60 pr60" wx:elif="{{info.bill_status == 1}}">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="{{info.bill_data.id?'putAppIdcard':'postAppIdcard'}}">更新信息</button>
</view> -->
<view class="mt60 pl60 pr60" wx:elif="{{info.ckcar_status == 1}}">
<button class="wp100 btn-36afa2 pt10 pb10 text-center font-32 color-fff ulib-r750" hover-class="btn-36afa2-hover" disabled="{{submitFlag}}" bindtap="putAppCusorderCkcar">确认随车物品</button>
</view>
</view>
<view class="mt40 pt20 pl30 pr30 pb40 bg-000-op80 fn-flex">
<button bindtap="optShowCode" class="fn-flex-item ml20 mr20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover"><i class="iconfont mr5 icon-qianming"></i>邀请签名</button>
@@ -324,7 +321,7 @@
<lcb-msg isShow="{{isShowCode}}">
<view slot="content">
<block wx:if="{{nextCode}}">
<!-- <block wx:if="{{nextCode}}">
<view class="inner40">
<view class="font-36 text-center">扫码生成合同</view>
<view class="pt20 text-center">
@@ -335,8 +332,9 @@
<view class="pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="optShowCode" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">我知道了</button>
</view>
</block>
<block wx:elif="{{info.status>0}}">
</block> -->
<!-- <block wx:elif="{{info.status>0}}"> -->
<block>
<view class="inner40">
<view class="font-36 text-center">邀请客户扫码签名</view>
<view class="pt20 text-center">
@@ -348,7 +346,7 @@
<button bindtap="optShowCode" class="inline-block wp50 btn-36afa2 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">我知道了</button>
</view>
</block>
<block wx:else>
<!-- <block wx:else>
<view class="inner40">
<view class="font-36 text-center">邀请客户扫码签名</view>
<view class="pt20 text-center">
@@ -360,14 +358,14 @@
<view class="pl60 pr60 pb50 text-center font-32 color-666 fn-flex">
<view bindtap="optNextCode" class="fn-flex-item bg-36afa2 pt15 pb15 ml20 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">生成合同</view>
</view>
</block>
</block> -->
</view>
</lcb-msg>
<lcb-msg isShow="{{isShowOrderCode}}">
<view slot="content">
<view class="inner40">
<view class="font-36 text-center">邀请客户扫码支付</view>
<view class="font-36 text-center">邀请客户扫码</view>
<view class="pt40 text-center">
<image class='inline-block img-250x250' lazy-load="{{true}}" mode="aspectFit" src="{{info.pay_img}}"></image>
</view>
@@ -388,4 +386,22 @@
<button disabled="{{submitFlag}}" bindtap="postAppSmsCusorder" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">确定</button>
</view>
</view>
</lcb-msg>
<!-- 拨打电话 -->
<lcb-msg isShow="{{isShowCall}}">
<view slot="content">
<view class="pt50 pb40">
<view class="font-36 text-center">号码绑定成功</view>
<view class="mt10 font-28 text-center color-666">现在呼叫 {{phoneNumber}} </view>
</view>
<view class="fn-flex pl60 pr60 pb50 text-center font-32 color-666">
<button bindtap="hideCall" class="fn-flex-item mr20 bds-2-36afa2 btn-no-bg wp100 font-28 color-36afa2 ulib-r750">
取消
</button>
<button bindtap="makePhoneCall" class="fn-flex-item ml20 btn-36afa2 wp100 font-28 color-fff ulib-r750" hover-class="btn-36afa2-hover">
确定
</button>
</view>
</view>
</lcb-msg>
+921
View File
@@ -0,0 +1,921 @@
import _ from '../../../commons/js/commons'
const app = getApp()
Page({
data: {
imgUrl:_.config.imgUrl,
submitFlag:false,
isShowOrderCode:false,
remark:'',//补充说明
carInfoList:[],//随车资料选项
ckcarInfo:[],//随车资料选中内容
carToolList:[],//随车随车工具选项
ckcarTool:[],//随车工具选中内容
cardida:{},//身份证正面照片
cardidb:{},//身份证反面照片
business_licence:{},//营业执照照片
car_img:{},//行驶证照片
register_img:{},//登记证照片
//ins_img:[],//保险照片
other_img:[],//交车合照
isShowCK:false,
isShowBill:false,
},
onLoad: function (options) {
for (let key in options) {
this.setData({
[key]: options[key]
})
}
this.getAppCusorderV2()
this.getUserInfo()
},
onShow: function () {
this.getAppCusorderdata()
},
//获取用户信息
getUserInfo(){
_.apiQuery.getUserInfo().then(res => {
this.setData({
userInfo: res
})
});
},
//获取订单详情
getAppCusorderV2(){
let params = {};
params['id'] = this.data.id;
_.apiQuery.getAppCusorderV2(params).then(res=>{
this.setData({
info:res.data,
})
if(res.data.ckcar_status==1){
this.setData({
remark:res.data.ckcar_data.remark,//补充说明
ckcarInfo:res.data.ckcar_data.info,//随车资料选中内容
ckcarTool:res.data.ckcar_data.tool,//随车工具选中内容
})
this.getAppDelivery()
}
//匹配上牌城市
if(!!res.data.c_city_id){
_.apiQuery.getAppCityOncard().then(res1 => {
if(res1.data.list.length>0){
res1.data.list.forEach((item,index) => {
if(item.city_id == res.data.c_city_id){
this.setData({
c_city_name:item.name,
})
}
})
}
})
}
wx.stopPullDownRefresh()
})
},
//获取订单图片
getAppCusorderdata(){
let params = {};
params['id'] = this.data.id;
_.apiQuery.getAppCusorderdata(params).then(res=>{
this.setData({
imgInfo:res.data,
})
if(res.data.img_status == 1){
this.setData({
cardida:res.data.imgs.cardida.length==0?{}:res.data.imgs.cardida,
cardidb:res.data.imgs.cardidb.length==0?{}:res.data.imgs.cardidb,
business_licence:res.data.imgs.business_licence.length==0?{}:res.data.imgs.business_licence,
car_img:res.data.imgs.car_img.length==0?{}:res.data.imgs.car_img,
register_img:res.data.imgs.register_img.length==0?{}:res.data.imgs.register_img,
//ins_img:res.data.imgs.ins_img.length==0?[]:res.data.imgs.ins_img,
other_img:res.data.imgs.other_img.length==0?[]:res.data.imgs.other_img,
})
if('delivery_ck_img' in res.data.imgs){
this.setData({
delivery_ck_img:res.data.imgs.delivery_ck_img.length==0?{}:res.data.imgs.delivery_ck_img,
})
}
}
wx.stopPullDownRefresh()
})
},
//获取车辆确认交付车辆
getAppDelivery(){
_.apiQuery.getAppDelivery().then(res=>{
let delivery = res.data
let carInfoList = []
let ckcar_data = this.data.info.ckcar_data
delivery.info.forEach(item => {
carInfoList.push({
title:item,
checked:false,
})
})
if(ckcar_data.info.length>0){
carInfoList.forEach(item1 => {
ckcar_data.info.forEach(item2 => {
if(item1.title == item2){
item1.checked = true
}
})
})
}
let carToolList = []
delivery.tool.forEach(item => {
carToolList.push({
title:item,
checked:false,
})
})
if(ckcar_data.tool.length>0){
carToolList.forEach(item1 => {
ckcar_data.tool.forEach(item2 => {
if(item1.title == item2){
item1.checked = true
}
})
})
}
this.setData({
carInfoList,
carToolList,
})
})
},
//显示短信弹框
showMessage(e){
this.setData({
isShowMessage:true,
content:'',
})
},
//关闭短信弹框
hideMessage(e){
this.setData({
isShowMessage:false,
})
},
// 输入
inputTx(e) {
this.setData({
[e.currentTarget.dataset.key]: e.detail.value
})
},
//发短信
postAppSmsCusorder(){
if (this.data.submitFlag) return;
if (this.data.content == '') {
wx.showToast({
title: '请填写短信内容',
icon: 'none'
})
} else {
this.setData({
submitFlag: true,
})
let params = {};
params['id'] = this.data.id;
params['content'] = this.data.content;
_.apiQuery.postAppSmsCusorder(params).then(res=>{
this.setData({
isShowMessage:false,
submitFlag:false,
content:'',
})
wx.showToast({
title: res.msg,
icon: 'none'
})
})
}
},
//选择图片
chooseImg(e) {
let that = this
//上传身份证正面
if(e.currentTarget.dataset.type=='cardida'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
that.setData({
'cardida.value':resp.data.data.url,
'cardida.img':resp.data.data.full_url,
})
let params = {};
params['id'] = that.data.id;
params['cardida'] = resp.data.data.url;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
}).catch(res2=>{
if(res2.code==418){
that.setData({
'cardida.err':!res2.data[0].caridA,
'cardida.errmsg':res2.data[0].errmsg,
})
}
});
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传身份证背面
if(e.currentTarget.dataset.type=='cardidb'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
that.setData({
'cardidb.value':resp.data.data.url,
'cardidb.img':resp.data.data.full_url,
})
let params = {};
params['id'] = that.data.id;
params['cardidb'] = resp.data.data.url;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
}).catch(res2=>{
if(res2.code==418){
that.setData({
'cardidb.err':!res2.data[1].caridB,
'cardidb.errmsg':res2.data[1].errmsg,
})
}
});
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传营业执照
if(e.currentTarget.dataset.type=='business_licence'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
that.setData({
'business_licence.value':resp.data.data.url,
'business_licence.img':resp.data.data.full_url,
})
let params = {};
params['id'] = that.data.id;
params['business_licence'] = resp.data.data.url;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
}).catch(res2=>{
if(res2.code==418){
that.setData({
'business_licence.err':!res2.data[0].business_licence,
'business_licence.errmsg':res2.data[0].errmsg,
})
}
});
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传登记证
if(e.currentTarget.dataset.type=='register_img'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let params = {};
params['id'] = that.data.id;
params['register_img'] = resp.data.data.url;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
that.setData({
'register_img.value':resp.data.data.url,
'register_img.img':resp.data.data.full_url,
})
})
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传行驶证
if(e.currentTarget.dataset.type=='car_img'){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
wx.showLoading({
title: '上传中',
})
wx.uploadFile({
url:_.config.api.upImg,
filePath:res.tempFilePaths[0],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
resp.data = JSON.parse(resp.data);
wx.hideLoading();
if (resp.data.code == 200) {
let params = {};
params['id'] = that.data.id;
params['car_img'] = resp.data.data.url;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
that.setData({
'car_img.value':resp.data.data.url,
'car_img.img':resp.data.data.full_url,
})
})
}
},
})
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传保单
if(e.currentTarget.dataset.type=='ins_img'){
wx.chooseImage({
count: 10 - that.data.ins_img.length, //
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res1) {
wx.showLoading({
title: '上传中',
})
let ins_img=that.data.ins_img
let k = 0
for (let i = 0; i < res1.tempFilePaths.length; i++) {
//上传图片
wx.uploadFile({
url:_.config.api.upImg,
filePath:res1.tempFilePaths[i],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
k = k + 1
resp.data = JSON.parse(resp.data);
if (resp.data.code == 200) {
let imgdata = resp.data
let list = []
list.push({
value:imgdata.data.url,
img:imgdata.data.full_url,
})
ins_img=ins_img.concat(list)
if(k == res1.tempFilePaths.length){
wx.hideLoading();
let params = {};
params['id'] = that.data.id;
let img = []
ins_img.forEach(item => {
img.push(item.value)
})
params['ins_imgs'] = img;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
that.setData({
ins_img,
})
})
}
}
},
})
}
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
//上传交车合照
if(e.currentTarget.dataset.type=='other_img'){
wx.chooseImage({
count: 1, //
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res1) {
wx.showLoading({
title: '上传中',
})
let other_img=that.data.other_img
let k = 0
for (let i = 0; i < res1.tempFilePaths.length; i++) {
//上传图片
wx.uploadFile({
url:_.config.api.upImg,
filePath:res1.tempFilePaths[i],
name: 'img',
formData: {
'app': 'liche'
},
success: (resp) => {
k = k + 1
resp.data = JSON.parse(resp.data);
if (resp.data.code == 200) {
let imgdata = resp.data
let list = []
list.push({
value:imgdata.data.url,
img:imgdata.data.full_url,
})
other_img=other_img.concat(list)
if(k == res1.tempFilePaths.length){
wx.hideLoading();
let params = {};
params['id'] = that.data.id;
let img = []
other_img.forEach(item => {
img.push(item.value)
})
params['other_imgs'] = img;
_.apiQuery.putAppCusorderdata(params).then(res2 => {
that.setData({
other_img,
})
})
}
}
},
})
}
},
fail: res => {
wx.showToast({
title: '文件选择失败',
icon: 'none',
duration: 2000
})
}
})
}
},
// 编辑页面删除图片
delImg(e){
if(e.currentTarget.dataset.type=='ins_img'){
let ins_img = this.data.ins_img
ins_img.splice(e.currentTarget.dataset.index, 1)
let params = {};
params['id'] = this.data.id;
let img = []
ins_img.forEach(item => {
img.push(item.value)
})
params['ins_imgs'] = img;
_.apiQuery.putAppCusorderdata(params).then(res => {
this.setData({
ins_img,
})
})
}else if(e.currentTarget.dataset.type=='other_img'){
let other_img = this.data.other_img
other_img.splice(e.currentTarget.dataset.index, 1)
let params = {};
params['id'] = this.data.id;
let img = []
other_img.forEach(item => {
img.push(item.value)
})
params['other_imgs'] = img;
_.apiQuery.putAppCusorderdata(params).then(res => {
this.setData({
other_img,
})
})
}
},
//确认交付
putAppCusorderCkcar(){
if(this.data.ckcarInfo.length == 0){
wx.showToast({
title: '请选择随车资料',
icon: 'none'
})
}
else if(this.data.ckcarTool.length == 0){
wx.showToast({
title: '请选择随车工具',
icon: 'none'
})
}
else{
let that = this
wx.showModal({
title:'确认交付车辆?',
content:'',
success: function (res) {
if (res.confirm) {
that.setData({
submitFlag: true,
})
let params = {};
params['id'] = that.data.id;
params['info'] = that.data.ckcarInfo;
params['tool'] = that.data.ckcarTool;
params['remark'] = that.data.remark;
_.apiQuery.putAppCusorderCkcar(params).then(res => {
that.setData({
submitFlag: false,
})
that.getAppCusorderV2()
wx.showToast({
title: '确认交付车辆成功',
icon: 'success'
})
}).catch(res=>{
that.setData({
submitFlag: false,
})
});
}
}
})
}
},
//订单支付码
optShowOrderCode() {
this.setData({
isShowOrderCode:!this.data.isShowOrderCode,
})
},
//查看图片
previewImage: function (e) {
if(e.currentTarget.dataset.type=='bill_img'){
let urls = [this.data.info.bill_img]
wx.previewImage({
current:e.currentTarget.dataset.current,
urls,
})
}
else if(e.currentTarget.dataset.type=='bill_ck_img'){
let urls = this.data.imgInfo.imgs.bill_ck_img
wx.previewImage({
current:e.currentTarget.dataset.current,
urls,
})
}
else if(e.currentTarget.dataset.type=='cardida'){
wx.previewImage({
current:this.data.imgInfo.imgs.cardida.img,
urls:[this.data.imgInfo.imgs.cardida.img],
})
}
else if(e.currentTarget.dataset.type=='cardidb'){
wx.previewImage({
current:this.data.imgInfo.imgs.cardidb.img,
urls:[this.data.imgInfo.imgs.cardidb.img],
})
}
else if(e.currentTarget.dataset.type=='business_licence'){
wx.previewImage({
current:this.data.imgInfo.imgs.business_licence.img,
urls:[this.data.imgInfo.imgs.business_licence.img],
})
}
else if(e.currentTarget.dataset.type=='register_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.register_img.img,
urls:[this.data.imgInfo.imgs.register_img.img],
})
}
else if(e.currentTarget.dataset.type=='car_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.car_img.img,
urls:[this.data.imgInfo.imgs.car_img.img],
})
}
else if(e.currentTarget.dataset.type=='insurance_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.insurance_img.img,
urls:[this.data.imgInfo.imgs.insurance_img.img],
})
}
else if(e.currentTarget.dataset.type=='business_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.business_img.img,
urls:[this.data.imgInfo.imgs.business_img.img],
})
}
else if(e.currentTarget.dataset.type=='accident_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.accident_img.img,
urls:[this.data.imgInfo.imgs.accident_img.img],
})
}
// else if(e.currentTarget.dataset.type=='ins_img'){
// let img = []
// if(this.data.imgInfo.imgs.insurance_img.img){
// img.push(this.data.imgInfo.imgs.insurance_img.img)
// }
// if(this.data.imgInfo.imgs.business_img.img){
// img.push(this.data.imgInfo.imgs.business_img.img)
// }
// this.data.imgInfo.imgs.ins_img.forEach(item => {
// img.push(item.img)
// })
// wx.previewImage({
// current:this.data.imgInfo.imgs.insurance_img.img,
// urls:img,
// })
// }
else if(e.currentTarget.dataset.type=='other_img'){
let img = []
this.data.imgInfo.imgs.other_img.forEach(item => {
img.push(item.img)
})
wx.previewImage({
current:this.data.imgInfo.imgs.other_img[0].img,
urls:img,
})
}
else if(e.currentTarget.dataset.type=='delivery_ck_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.delivery_ck_img.img,
urls:[this.data.imgInfo.imgs.delivery_ck_img.img],
})
}
else if(e.currentTarget.dataset.type=='wx_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.wx_img.img,
urls:[this.data.imgInfo.imgs.wx_img.img],
})
}
else if(e.currentTarget.dataset.type=='mut_wx_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.mut_wx_img.img,
urls:[this.data.imgInfo.imgs.mut_wx_img.img],
})
}
else if(e.currentTarget.dataset.type=='destory_img'){
wx.previewImage({
current:this.data.imgInfo.imgs.destory_img.img,
urls:[this.data.imgInfo.imgs.destory_img.img],
})
}
else if(e.currentTarget.dataset.type=='notify'){
let img = []
this.data.info.notify_file.forEach(item => {
img.push(item.src)
})
wx.previewImage({
current:e.currentTarget.dataset.current,
urls:img,
})
}
else if(e.currentTarget.dataset.type=='lend'){
wx.previewImage({
current:this.data.info.lend_file.src,
urls:[this.data.info.lend_file.src],
})
}
},
//推送链接
pushLink(e){
if(e.currentTarget.dataset.url){
_.$router.openUrlScheme(e.currentTarget.dataset.url)
}
},
//随车资料
changeMaterial(e) {
let carInfoList = this.data.carInfoList
let values = e.detail.value
carInfoList.forEach(item1 => {
item1.checked = false
values.forEach(item2 => {
if(item1.title == item2){
item1.checked = true
}
})
})
this.setData({
ckcarInfo:e.detail.value,
carInfoList,
})
},
//随车工具
changeTool(e) {
let carToolList = this.data.carToolList
let values = e.detail.value
carToolList.forEach(item1 => {
item1.checked = false
values.forEach(item2 => {
if(item1.title == item2){
item1.checked = true
}
})
})
this.setData({
ckcarTool:e.detail.value,
carToolList,
})
},
//显示隐藏合格证
optShowCK(){
this.setData({
isShowCK:!this.data.isShowCK,
})
},
//显示隐藏合格证
optShowBill(){
this.setData({
isShowBill:!this.data.isShowBill,
})
},
//删除订单
putAppCusorderV2Status(){
let that = this
wx.showModal({
title: '确定删除订单?',
content: '',
confirmColor: "#36afa2",
success(resW) {
if (resW.confirm) {
let params = {};
params['id'] = that.data.id;
_.apiQuery.putAppCusorderV2Status(params).then(res => {
//刷新列表页
let pages = getCurrentPages();
pages.forEach(item => {
if(item.route == 'pages/order/index2'){
item.onPullDownRefresh()
}
})
wx.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
})
setTimeout(function () {
wx.navigateBack({
delta: 1
})
}, 500)
})
}
}
})
},
//页面相关事件处理函数--监听用户下拉动作
onPullDownRefresh(){
this.getAppCusorderdata()
this.getAppCusorderV2()
},
})

Some files were not shown because too many files have changed in this diff Show More