location-edit.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="author" content=""/>
  6. <meta name="description" content=""/>
  7. <meta name="keywords" content="扫码支付,线上投币,运营数据,物联网"/>
  8. <meta name="format-detection" content="telphone=no,email=no"/>
  9. <meta name="viewport"
  10. content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <title>编辑投放地址</title>
  15. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.min.css"/>
  16. <link rel="stylesheet" href="https://cdn.washpayer.com/components/lib/mui.picker.min.css"/>
  17. <link rel="stylesheet" href="../components/custom/css/common.css"/>
  18. <link rel="stylesheet" href="css/xyf.common.min.css">
  19. <style>
  20. .partnerPanel {
  21. margin-bottom: 0;
  22. }
  23. .partnerPanel:before {
  24. display: none;
  25. }
  26. .p-operation {
  27. margin-top: 12px;
  28. }
  29. .p-operation em {
  30. padding: 6px 4px;
  31. margin-left: 10px;
  32. }
  33. .p-operation em i {
  34. font-size: 18px;
  35. vertical-align: middle;
  36. }
  37. .p-operation em span {
  38. vertical-align: middle;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div class="mui-content custom-top add-addr" style="padding-bottom: 52px">
  44. <div class="mui-input-group">
  45. <div class="mui-input-row" permission="manage-edit">
  46. <label>分组名称</label>
  47. <input type="text" id="name" placeholder="请填写" class="mui-text-right">
  48. </div>
  49. <div class="mui-input-row" permission="manage-edit">
  50. <label>地址标签</label>
  51. <input type="text" id="tag" placeholder="可以不填" class="mui-text-right">
  52. </div>
  53. <div class="mui-input-row" permission="manage-edit">
  54. <label>地址类型</label>
  55. <input type="text" id="area" name="option" placeholder="请选择" class="mui-text-right" readonly>
  56. <input type="hidden" id="addressType"/>
  57. </div>
  58. </div>
  59. <div class="mui-input-group custom-top">
  60. <div class="mui-input-row" permission="manage-edit">
  61. <label>省市县</label>
  62. <input type="text" id="location" name="option" placeholder="请选择" class="mui-text-right">
  63. <input type="hidden" id="districtId"/>
  64. </div>
  65. <div class="mui-input-row mui-hidden" id="needCountry" permission="manage-edit">
  66. <label>乡镇/街道</label>
  67. <input type="text" id="country" placeholder="请填写乡镇/街道" class="mui-text-right">
  68. </div>
  69. <div class="mui-input-row" permission="manage-edit">
  70. <label>详细地址</label>
  71. <input type="text" id="address" placeholder="请填写详细地址" class="mui-text-right">
  72. </div>
  73. </div>
  74. <div class="mui-input-group custom-top" permission="manage-show">
  75. <div class="mui-input-row autoheight">
  76. <div class="mui-pull-left">
  77. 设为默认投放地址
  78. <span>每次注册设备时使用该地址</span>
  79. </div>
  80. <div class="mui-switch mui-switch-mini isDefault">
  81. <div class="mui-switch-handle"></div>
  82. </div>
  83. </div>
  84. <div class="mui-input-row autoheight">
  85. <div class="mui-pull-left">
  86. 强制用户充值
  87. <span>如果用户没有余额,需要充值才能使用</span>
  88. </div>
  89. <div class="mui-switch mui-switch-mini beforeCharge">
  90. <div class="mui-switch-handle"></div>
  91. </div>
  92. </div>
  93. <div class="mui-input-row autoheight">
  94. <div class="mui-pull-left">
  95. 扫码弹出显示计费规则
  96. <span>用户扫码设备后, 优先先弹出计费规则</span>
  97. </div>
  98. <div class="mui-switch mui-switch-mini popPriceDescriptionButton">
  99. <div class="mui-switch-handle"></div>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="mui-table-view handleBtn mui-text-center">
  105. <button type="button" value="" class="mui-btn mui-btn-blue padding-l-r-20"
  106. onclick="save()">保存
  107. </button>
  108. </div>
  109. <script src="https://cdn.washpayer.com/components/lib/jquery.min.js"></script>
  110. <script src="https://cdn.washpayer.com/components/lib/mui.min.js"></script>
  111. <script src="https://cdn.washpayer.com/components/lib/mui.picker.min.js"></script>
  112. <script src="/components/custom/js/common.js"></script>
  113. <script src="../components/lib/gcoord.js"></script>
  114. <script type="text/javascript"
  115. src="https://api.map.baidu.com/api?v=2.0&ak=9579bf3cb9fdab9d6b49cdaf72c9907f"></script>
  116. <script src="https://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
  117. <script src="js/xyf.city.three.js"></script>
  118. <script src="js/xyf.picker.js"></script>
  119. <script src="js/xyf.common.js"></script>
  120. <script>
  121. // 某些厂商必须要填写 乡镇 ,由于目前我们只有3级地区联动,所以需要手动填写
  122. var needCountry = false;
  123. var merchant = false;
  124. getFeatureList("dealer", {list: ['needCountry', 'merchant']}, function (payload) {
  125. if (payload.needCountry) {
  126. $('#needCountry').removeClass('mui-hidden')
  127. }
  128. if (payload.merchant) {
  129. merchant = payload.merchant
  130. }
  131. initGroupInfo()
  132. });
  133. var mapSuggestLoaded = false;
  134. // todo 暂时不要
  135. function loadMapSuggest() {
  136. if (mapSuggestLoaded) {
  137. return;
  138. }
  139. $("#address").blur();
  140. if (window.BMap) {
  141. //百度 地图mask等待,因为地图可能加载非常慢
  142. var mask = new Mask("正在获取位置信息...").show();
  143. setTimeout(function () {
  144. mask && mask.remove();//避免超时卡死
  145. mapSuggestLoaded = true;//既然加载不出来,就不再加载,只能自己去填写了
  146. }, 10 * 1000);
  147. getLocation(function (res) {
  148. mapSuggestLoaded = true;
  149. mask && mask.remove();
  150. if (res) {
  151. //转换为百度可用的坐标
  152. var pointList = gcoord.transform(
  153. [res.lng, res.lat],
  154. gcoord.GCJ02, // 当前坐标系
  155. gcoord.BD09 // 目标坐标系
  156. );
  157. var currentPoint = new BMap.Point(pointList[0], pointList[1]);
  158. //地址搜索建议
  159. var ac = new BMap.Autocomplete({
  160. "input": "address",
  161. location: currentPoint,
  162. "onSearchComplete": function (result) {
  163. }
  164. });
  165. //鼠标点击下拉列表后的事件
  166. ac.addEventListener("onconfirm", function (e) {
  167. var _value = e.item.value;
  168. var myValue = _value.street + _value.business;
  169. return myValue;
  170. });
  171. }
  172. }, function () {
  173. mask && mask.remove();
  174. });
  175. }
  176. }
  177. //阻止冒泡
  178. $('.add-addr input[name]').tap(function (e) {
  179. e.preventDefault();
  180. $('.add-addr input').blur();
  181. });
  182. //合伙人数据缓存
  183. var partnerData = [];
  184. var needPartner = false;
  185. //初始化数据
  186. var groupId = getQueryString("groupId");
  187. function initGroupInfo() {
  188. var url = "/dealer/groupInfo";
  189. var data = {"groupId": groupId};
  190. sendRequest(url, "GET", data, function (res) {
  191. if (res.result === 1) {
  192. CreateCitySelect({areaId: res.para.districtId}, function () {
  193. $("#name").val(res.para.groupName);
  194. $("#tag").val(res.para.tag);
  195. $("#districtId").val(res.para.districtId);
  196. $("#location").val(res.para.district);
  197. $("#country").val(res.para.country);
  198. $("#address").attr("placeholder", res.para.address);//设置到placeholder;如果是赋值,地址输入框会自动弹出百度的推荐下拉框! 保存时注意即可
  199. $("#addressType").val(res.para.addressType);
  200. setArea(res.para.addressType);
  201. if (res.para.isDefault) {
  202. $(".isDefault").addClass("mui-active");
  203. }
  204. if (res.para.beforeCharge) {
  205. $(".beforeCharge").addClass("mui-active");
  206. }
  207. if (res.para.popPriceDescriptionButton) {
  208. $(".popPriceDescriptionButton").addClass("mui-active");
  209. }
  210. //展示负责人名称
  211. if (res.para.managerName) {
  212. $("#owner").text(" " + res.para.managerName);
  213. }
  214. if (res.para.isManager || res.para.isManager == null) {
  215. $("body").attr("role", "manage");
  216. } else {
  217. $("body").attr("role", "limit-user");
  218. }
  219. var partnerList = res.para.partner;
  220. if (partnerList && partnerList.length > 0) {
  221. // 必须手动切换状态,mui的toggle有bug
  222. $(".partner").addClass("mui-active");
  223. $(".partnerPanelSub").removeClass("mui-hidden");
  224. needPartner = true;
  225. //缓存合伙人数据
  226. partnerData = partnerData.concat(partnerList);
  227. //展现合伙人信息到页面
  228. for (var i = 0; i < partnerData.length; i++) {
  229. var item = partnerData[i];
  230. //转换数据类型
  231. item.percent = parseFloat(item.percent);
  232. var opt = {
  233. name: item.name,
  234. tel: item.tel,
  235. id: item.id,
  236. percent: item.percent,
  237. self: item.self,
  238. merchantStatus: item.merchantStatus,
  239. editDisabled: item.editDisabled
  240. }
  241. addPartner(opt);
  242. }
  243. setMyPercent();
  244. // 合伙人数量把自己也算上
  245. $(".partnerTotal").removeClass('mui-hidden').html("共" + (partnerData.length + 1) + "人")
  246. }
  247. });
  248. } else {
  249. mui.toast(res.description);
  250. }
  251. });
  252. $(".partnerColl").tap(function (e) {
  253. $(".partnerColl").focus();
  254. e.preventDefault();
  255. });
  256. //合伙人开关
  257. $(".partner").on("toggle", function (event) {
  258. if (event.detail.isActive) {
  259. $(".partnerPanelSub").removeClass("mui-hidden");
  260. needPartner = true;
  261. } else {
  262. $(".partnerPanelSub").addClass("mui-hidden");
  263. needPartner = false;
  264. }
  265. });
  266. $("body").on("click", ".p-edit", function (event) {
  267. var dom = $(this).closest(".mui-table-view-cell");
  268. var tel = dom.attr("data-id");
  269. for (var i = 0; i < partnerData.length; i++) {
  270. var item = partnerData[i];
  271. if (item.tel == tel) {
  272. editPartner(item.name, item.tel, item.percent, i);
  273. }
  274. }
  275. }).on("click", ".p-delete", function (event) {
  276. var dom = $(this).closest(".mui-table-view-cell");
  277. var btnArray = ['取消', '确认'];
  278. mui.confirm('确定要删除信息?', '温馨提示', btnArray, function (e) {
  279. if (e.index == 0) {
  280. } else {
  281. var tel = dom.attr("data-id");
  282. for (var i = 0; i < partnerData.length; i++) {
  283. var item = partnerData[i];
  284. if (item.tel == tel) {
  285. dom.remove();
  286. partnerData.splice(i, 1);
  287. }
  288. }
  289. setMyPercent();
  290. }
  291. });
  292. }).on("click", ".p-goBindBankCard", function (event) {
  293. var partnerId = $(this).closest('.mui-table-view-cell').attr('pId')
  294. var merchantStatus = $(this).closest('.mui-table-view-cell').attr('merchantStatus')
  295. if (merchantStatus == 0 || merchantStatus == 2) {
  296. location.href = '/dealer/index.html#/merchant/partnerBank?partnerId=' + partnerId
  297. }
  298. });
  299. };
  300. //设置地址
  301. function setArea(value) {
  302. var areaList = window.AREA_LIST || [];
  303. for (var i = 0; i < areaList.length; i++) {
  304. if (areaList[i].value === value) {
  305. $("#area").val(areaList[i].label);
  306. }
  307. }
  308. }
  309. //重新计算我的分成
  310. function setMyPercent() {
  311. var sumPercent = 0;
  312. //展现合伙人信息到页面
  313. for (var i = 0; i < partnerData.length; i++) {
  314. var item = partnerData[i];
  315. sumPercent = sumPercent + parseFloat(item.percent);
  316. }
  317. if (sumPercent > 100) {
  318. return false;
  319. }
  320. $(".my-percent em").text((100 - sumPercent) + "%");
  321. }
  322. var isPopup = false;//弹窗标记
  323. //编辑合伙人
  324. function editPartner(name, tel, percent, editIndex) {
  325. if (editIndex == null && partnerData.length >= 10) {
  326. mui.toast("最多只能添加10个合伙人");
  327. return;
  328. }
  329. if (!isPopup) {
  330. isPopup = true;
  331. $('.partnerDialog').removeClass('mui-hidden');
  332. $("#p-name").val(name);
  333. $("#p-tel").val(tel);
  334. if (tel != '') {
  335. $("#p-tel").attr('disabled', 'disabled');
  336. } else {
  337. $("#p-tel").removeAttr('disabled');
  338. }
  339. $("#p-percent").val(percent);
  340. window.editIndex = editIndex;
  341. }
  342. }
  343. var editIndex = null;
  344. //保存合伙人
  345. $('.partner-oper span').click(function () {
  346. //点击取消
  347. if ($(this).index() == 0) {
  348. } else {
  349. //点击确定
  350. var name = $("#p-name").val();
  351. if (name == "") {
  352. mui.toast("姓名不能为空");
  353. return;
  354. }
  355. var tel = $("#p-tel").val();
  356. if (!isPhone(tel)) {
  357. mui.toast("请输入11位正确手机号码");
  358. return;
  359. }
  360. var percent = parseFloat($("#p-percent").val());
  361. var percentReg = /^(100|(([1-9]\d|\d)(\.\d{1,2})?))$/;
  362. if (!percentReg.test(percent)) {
  363. mui.toast("百分比保持在0-100%");
  364. return;
  365. }
  366. //缓存合伙人数据
  367. if (editIndex != null) {
  368. var editItem = partnerData[editIndex];
  369. var dom = $("[data-id='" + editItem.tel + "']");
  370. var sumP = 0;
  371. for (var index = 0; index < partnerData.length; index++) {
  372. var otherItem = partnerData[index];
  373. if (index != editIndex && otherItem.tel == tel) {
  374. mui.toast("不能和其他合伙人重复手机");
  375. return;
  376. }
  377. if (index != editIndex) {
  378. sumP = sumP + otherItem.percent;
  379. }
  380. }
  381. //校验分成比例
  382. if (percent > (100 - sumP)) {
  383. mui.toast("分成比例最多只能是" + (100 - sumP) + "%");
  384. $("#p-percent").val(100 - sumP);
  385. return;
  386. }
  387. editItem.name = name;
  388. editItem.tel = tel;
  389. editItem.percent = percent;
  390. dom.find(".p-name-show").text(name);
  391. dom.find(".p-tel-show").text(tel);
  392. dom.find(".p-percent-show ").text(percent + "%");
  393. dom.attr("data-id", tel);
  394. } else {
  395. var sumP1 = 0;
  396. for (var i = 0; i < partnerData.length; i++) {
  397. var item = partnerData[i];
  398. if (item.tel == tel) {
  399. mui.toast("不能重复添加相同手机");
  400. return;
  401. }
  402. sumP1 = sumP1 + item.percent;
  403. }
  404. //校验分成比例
  405. if (percent > (100 - sumP1)) {
  406. mui.toast("分成比例最多只能是" + (100 - sumP1) + "%");
  407. $("#p-percent").val(100 - sumP1);
  408. return;
  409. }
  410. partnerData.push({
  411. name: name,
  412. tel: tel,
  413. percent: percent
  414. });
  415. addPartner({name: name, tel: tel, percent: percent});
  416. }
  417. }
  418. $('.partnerDialog').addClass('mui-hidden');
  419. //不能立即赋值,否则会出现不停弹出的情况
  420. setTimeout(function () {
  421. isPopup = false;
  422. }, 500);
  423. setMyPercent();//刷新我的比例
  424. });
  425. var merchantStatusMap = {
  426. 0: "未绑定商户,去绑定",
  427. 1: "绑定审核中",
  428. 2: "绑定失败,去修改",
  429. 3: "绑定成功",
  430. 4: "绑定成功"
  431. }
  432. function addPartner(option) {
  433. var name = option.name;
  434. var tel = option.tel;
  435. var id = option.id;
  436. var percent = option.percent;
  437. var self = option.self;
  438. var editDisabled = option.editDisabled;
  439. var merchantStatus = option.merchantStatus;
  440. var dom = $('<div class="mui-table-view-cell" >' +
  441. '<p class="font-b-16"> ' +
  442. '<span class="p-name-show"></span><span class="is-self c-success"></span> ' +
  443. '<span class="mui-pull-right font-b-16-8">分成 <em class="p-percent-show c-success"></em></span>' +
  444. '</p>' +
  445. '<p class="p-operation clearfix">' +
  446. '<span class="p-tel-show"></span>' +
  447. '<span class="font-b-16-6 mui-pull-right edit-row" permission="manage-show">' +
  448. '<em class="p-goBindBankCard"><i class="iconfont icon-bank-card"></i><span>绑定商户</span></em>' +
  449. '<em class="p-edit"><i class="iconfont icon-edit"></i><span>编辑</span></em>' +
  450. '<em class="p-delete"><i class="iconfont icon-delete"></i><span>删除</span></em>' +
  451. '</span></p></div>');
  452. dom.find(".p-name-show").text(name);
  453. if (self) {
  454. dom.find(".is-self").text(" (我)");
  455. }
  456. dom.find(".p-tel-show").text(tel);
  457. dom.find(".p-percent-show ").text(percent + "%");
  458. dom.attr("data-id", tel);
  459. dom.attr("pId", id);
  460. dom.attr("merchantStatus", merchantStatus);
  461. if (editDisabled) {
  462. dom.find('.edit-row').remove()
  463. }
  464. if (!merchant) {
  465. // 没有特性则移除
  466. dom.find('.p-goBindBankCard').remove()
  467. } else {
  468. dom.find('.p-goBindBankCard span').text(merchantStatusMap[merchantStatus])
  469. }
  470. $(".my-percent").after(dom);
  471. }
  472. //保存地址信息
  473. var saveFlag = false;
  474. function save() {
  475. var name = $("#name").val();
  476. var tag = $("#tag").val();
  477. var districtId = $("#districtId").val();
  478. var country = $("#country").val();
  479. var address = $("#address").val() || $("#address").attr('placeholder');
  480. var addressType = $("#addressType").val();
  481. if (!name) {
  482. mui.toast("请填写分组名称");
  483. return;
  484. }
  485. if (!addressType) {
  486. mui.toast("请填写地址类型");
  487. return;
  488. }
  489. if (!districtId) {
  490. mui.toast("请选择所在地区");
  491. return;
  492. }
  493. if (!country && needCountry) {
  494. mui.toast("请填写正确的乡镇");
  495. return;
  496. }
  497. if (!address) {
  498. mui.toast("请填写详细地址");
  499. return;
  500. }
  501. var isDefault = $(".isDefault").hasClass("mui-active");
  502. var beforeCharge = $(".beforeCharge").hasClass("mui-active");
  503. var popPriceDescriptionButton = $(".popPriceDescriptionButton").hasClass("mui-active");
  504. if (!saveFlag) {
  505. saveFlag = true;
  506. var url = "/device/saveEquipmentGroup";
  507. var data = {
  508. "name": name,
  509. tag: tag,
  510. "districtId": districtId, country: country, "address": address,
  511. "addressType": addressType, "isDefault": isDefault, "beforeCharge": beforeCharge,
  512. "popPriceDescriptionButton": popPriceDescriptionButton,
  513. "groupId": groupId
  514. };
  515. sendRequest(url, "POST", data, function (res) {
  516. if (res.result == 1) {
  517. window.history.replaceState({}, "账号设置", "account-setting.html");
  518. var url = "location-list.html";
  519. goPage(url);
  520. } else {
  521. saveFlag = false;
  522. mui.toast(res.description);
  523. }
  524. }, "json");
  525. }
  526. }
  527. </script>
  528. </body>
  529. </html>