| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141 |
- {extend name="base"/}
- {block name="resources"}
- <link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/extend/cascader/cascader.css"/>
- <style>
- .layui-layer-content .form-wrap {padding: 0}
- .layui-layer-page .layui-layer-content {overflow-y: auto!important;}
- .layui-layout-admin .layui-body .body-content {background: none;padding: 0}
- .info-wrap {display: flex}
- .info-wrap .layui-card {flex: 1;margin-top: 0}
- .info-wrap .layui-card:first-child {margin-right: 15px}
- .member-info {display: flex}
- .member-info .headimg {margin-right: 15px;width: 70px;height: 70px;display: flex;align-items: center;justify-content: center;overflow: hidden}
- .member-info .headimg img {max-width: 100%;height: auto}
- .member-info .info {flex: 1;width: 0;display: flex;flex-wrap: wrap}
- .member-info .info .data-item {width: 50%;padding-right: 10px;box-sizing: border-box;line-height: 30px}
- .member-info .data-item .layui-icon {cursor: pointer}
- .layui-tab-content {padding: 0}
- .screen {margin: 15px 0}
- .select-level-layer .layui-layer-content {overflow: unset!important;}
- </style>
- {/block}
- {block name="main"}
- <div class="info-wrap">
- <div class="layui-card card-common card-brief">
- <div class="layui-card-header">
- <div>
- <span class="card-title">基本信息</span>
- </div>
- </div>
- <div class="layui-card-body">
- <div class="member-info">
- <div class="headimg">
- {notempty name="$member_info.data.headimg"}
- <img src="{:img($member_info.data.headimg)}" alt="">
- {else/}
- <img src="{:img('public/static/img/default_img/head.png')}" alt="">
- {/notempty}
- </div>
- <div class="info">
- <div class="data-item">
- <span>用户名:</span>
- <span>{$member_info.data.username}</span>
- </div>
- <div class="data-item">
- <span>昵称:</span>
- <span>{$member_info.data.nickname}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editNickname(this)"> </i>
- </div>
- <div class="data-item">
- <span>手机号:</span>
- <span>{notempty name="$member_info.data.mobile"}{$member_info.data.mobile}{else/}暂无{/notempty}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editMobile(this)"> </i>
- </div>
- {if $member_info.data.is_member}
- <div class="data-item">
- <span>会员码:</span>
- <span>{notempty name="$member_info.data.member_code"}{$member_info.data.member_code}{else/}--{/notempty}</span>
- </div>
- {/if}
- <div class="data-item">
- <span>真实姓名:</span>
- <span>{notempty name="$member_info.data.realname"}{$member_info.data.realname}{else/}暂无{/notempty}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editRealname(this)"> </i>
- </div>
- <div class="data-item">
- <span>性别:</span>
- <span>
- {switch name="$member_info.data.sex"}
- {case value="0"}未知{/case}
- {case value="1"}男{/case}
- {case value="2"}女{/case}
- {/switch}
- </span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editSex(this)"> </i>
- </div>
- <div class="data-item">
- <span data-value="{$member_info.data.birthday}">生日:</span>
- <span>{notempty name="$member_info.data.birthday"}{:date('Y-m-d', $member_info.data.birthday)}{else/}未知{/notempty}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editBirthday(this)"> </i>
- </div>
- <div class="data-item">
- <span>会员等级:</span>
- <span>{$member_info.data.member_level_name}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editMemberLevel(this)"> </i>
- </div>
- <div class="data-item">
- <span>注册时间:</span>
- <span>{:time_to_date($member_info.data.reg_time)}</span>
- </div>
- <div class="data-item">
- <span>来源渠道:</span>
- <span>{$member_info.data.login_type_name}</span>
- </div>
- <div class="data-item">
- <span>最后访问时间:</span>
- <span>{:time_to_date($member_info.data.last_visit_time)}</span>
- </div>
- <div class="data-item" style="width: 100%">
- <span>会员地址:</span>
- <span>{$member_info.data.full_address ? $member_info.data.full_address : '--'} {$member_info.data.address ? $member_info.data.address : ''}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" onclick="editMemberAddress(this)"> </i>
- </div>
- <input type="hidden" name="member_id" value="{$member_info.data.member_id}" />
- <input type="hidden" class="birthday" value="{$member_info.data.birthday}" />
- </div>
- </div>
- </div>
- </div>
- <div class="layui-card card-common card-brief">
- <div class="layui-card-header">
- <div>
- <span class="card-title">账户信息</span>
- </div>
- </div>
- <div class="layui-card-body">
- <div class="member-info">
- <div class="info">
- <div class="data-item">
- <span>储值余额:</span>
- <span id="member_balance">{:moneyFormat($member_info.data.balance)}</span>
- <!--<i class="layui-icon text-color" style="margin-left: 5px;" data-num="{$member_info.data.balance}" onclick="saveBalance(this)"> </i>-->
- </div>
- <div class="data-item">
- <span>现金余额:</span>
- <span>{:moneyFormat($member_info.data.balance_money)}</span>
- </div>
- <!-- <div class="data-item">-->
- <!-- <span>积分:</span>-->
- <!-- <span id="member_point">{:round($member_info.data.point)}</span>-->
- <!-- <i class="layui-icon text-color" style="margin-left: 5px;" data-num="{$member_info.data.point}" onclick="savePoint(this)"> </i>-->
- <!-- </div>-->
- <div class="data-item">
- <span>成长值:</span>
- <span id="member_growth">{$member_info.data.growth}</span>
- <i class="layui-icon text-color" style="margin-left: 5px;" data-num="{$member_info.data.growth}" onclick="saveGrowth(this)"> </i>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="layui-card card-common card-brief">
- <div class="layui-card-header">
- <div>
- <span class="card-title">账户明细</span>
- </div>
- </div>
- <div class="layui-card-body layui-tab layui-tab-brief" lay-filter="edit_user_tab">
- <ul class="layui-tab-title">
- <li class="layui-this" lay-id="basic_info">余额</li>
- <!-- <li lay-id="basic_info">积分</li>-->
- <li lay-id="basic_info">成长值</li>
- <li lay-id="basic_info">订单管理</li>
- <li lay-id="basic_info">收货地址</li>
- <li lay-id="basic_info">收藏记录</li>
- <li lay-id="basic_info">浏览记录</li>
- <li lay-id="basic_info">优惠券</li>
- {if addon_is_exit('cardservice') == 1 }
- <li lay-id="basic_info">卡项</li>
- {/if}
- </ul>
- <div class="layui-tab-content">
- <div class="layui-tab-item layui-show">
- <iframe src="{:url('shop/member/accountdetail',array('member_id'=>$member_info.data.member_id, 'account_type' => 'balance,balance_money'))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/member/accountdetail',array('member_id'=>$member_info.data.member_id, 'account_type' => 'point'))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/member/accountdetail',array('member_id'=>$member_info.data.member_id,'account_type' => 'growth'))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/member/order',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/member/addressdetail',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/goods/membergoodscollect',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/goods/membergoodsbrowse',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- <div class="layui-tab-item">
- <iframe src="{:url('shop/member/membercoupon',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- {if addon_is_exit('cardservice') == 1 }
- <div class="layui-tab-item">
- <iframe src="{:addon_url('cardservice://shop/card/membergoodscard',array('member_id'=>$member_info.data.member_id))}" style="width:100%;height:100vh;border:0"></iframe>
- </div>
- {/if}
- </div>
- </div>
- </div>
- {/block}
- {block name="script"}
- <script>
- var birthday = $(".birthday").val();
- $("input[name=birthday]").attr("value", ns.time_to_date(birthday, "YYYY-MM-DD"));
- layui.extend({
- layCascader: '__STATIC__/ext/layui/extend/cascader/cascader'
- })
- var layCascader, areaTree = [];
- layui.use(['form', 'layCascader'], function() {
- var form = layui.form,
- repeat_flag = false; //防重复标识
- layCascader = layui.layCascader;
- form.render();
- /**
- * 表单验证
- */
- form.verify({
- mobile: function(value) {
- if (value == '') {
- return;
- }
- if (!ns.parse_mobile(value)) {
- return '请输入正确的手机号码!';
- }
- },
- isemail: function(value) {
- var reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;
- if (value == '') {
- return;
- }
- if (!reg.test(value)) {
- return '请输入正确的邮箱!';
- }
- }
- });
- var upload = new Upload({
- elem: '#headImg'
- });
- /**
- * 监听提交
- */
- form.on('submit(save)', function(data) {
- data.field.member_level_name = $(".member_level").find("option[value=" + data.field.member_level + "]").text();
- if (data.field.status == undefined) {
- data.field.status = 0;
- }
- // 删除图片
- if(!data.field.headimg) upload.delete();
- if(repeat_flag) return false;
- repeat_flag = true;
- $.ajax({
- url: ns.url("shop/member/editMember"),
- data: data.field,
- dataType: 'JSON', //服务器返回json格式数据
- type: 'POST', //HTTP请求类型
- success: function(res) {
- repeat_flag = false;
- if (res.code == 0) {
- layer.confirm('编辑成功', {
- title:'操作提示',
- btn: ['返回列表', '继续操作'],
- yes: function(){
- location.href = ns.url("shop/member/memberList")
- },
- btn2: function() {
- location.reload();
- }
- });
- }else{
- layer.msg(res.message);
- }
- }
- });
- });
- });
- function back() {
- location.href = ns.url("shop/member/memberList");
- }
- </script>
- <script>
- var date = {$member_info.data.reg_time};
- $(".reg-time").text(ns.time_to_date(date, "YYYY-MM-DD"));
- $("#member_point").text(parseInt("{$member_info.data.point}"));
- var form,
- table,
- laydate,
- laytpl;
- repeat_flag = false, //防重复标识
- currentDate = new Date(),
- minDate = "",
- reg = {
- required: /[\S]+/,
- mobile: /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[0-9])\d{8}$/
- };
- currentDate.setDate(currentDate.getDate() - 7);
- layui.use(['form', 'laydate', 'laytpl'], function() {
- form = layui.form;
- laydate = layui.laydate;
- laytpl = layui.laytpl;
- form.render();
- //开始时间
- laydate.render({
- elem: '#start_date',
- type: 'datetime'
- });
- //结束时间
- laydate.render({
- elem: '#end_date',
- type: 'datetime'
- });
- //根据账户类型获取来源类型
- form.on('select(account_type)', function (data) {
- $.ajax({
- type: "POST",
- url: ns.url("shop/member/getfromtype"),
- data: {type:data.value},
- dataType: 'JSON',
- success: function(res) {
- var html = '<option value="">请选择</option>';
- $.each(res,function(k,v){
- html += '<option value="'+k+'">'+v.type_name+'</option>';
- });
- $('.from_type').html(html);
- form.render();
- }
- });
- });
- /**
- * 重新渲染结束时间
- * */
- function reRender() {
- $("#reg_end_date").remove();
- $(".end-time").html('<input type="text" class="layui-input" name="reg_end_date" id="reg_end_date" placeholder="请输入结束时间">');
- laydate.render({
- elem: '#reg_end_date',
- min: minDate
- });
- }
- /**
- * 表单验证
- */
- form.verify({
- num: function(value) {
- var arrMen = value.split(".");
- var val = 0;
- if (arrMen.length == 2) {
- val = arrMen[1];
- }
- if (value == "") {
- return false;
- }
- if (val.length > 2) {
- return '保留小数点后两位'
- }
- }
- });
- /**
- * 监听提交
- */
- form.on('submit(search)', function(data) {
- table.reload({
- page: {
- curr: 1
- },
- where: data.field
- });
- return false;
- });
- form.on('submit(savePoint)', function(data) {
- if (repeat_flag) return false;
- repeat_flag = true;
- var point = {$member_info.data.point};
- if (data.field.adjust_num == 0) {
- layer.msg('调整数值不能为0');
- repeat_flag = false;
- return ;
- }
- if (point*1 + data.field.adjust_num*1 < 0) {
- layer.msg('积分不可以为负数');
- repeat_flag = false;
- return ;
- }
- $.ajax({
- type: "POST",
- url: ns.url("shop/member/adjustPoint"),
- data: data.field,
- dataType: 'JSON',
- success: function(res) {
- layer.msg(res.message);
- if (res.code == 0) {
- $("#member_point").html(res.data.point);
- $("#member_point").next().attr('data-num', res.data.point);
- layer.closeAll('page');
- table.reload();
- } else {
- repeat_flag = false;
- }
- }
- });
- });
- form.on('submit(saveBalance)', function(data) {
- if (repeat_flag) return false;
- repeat_flag = true;
- var balance = {$member_info.data.balance};
- if (data.field.adjust_num == 0) {
- layer.msg('调整数值不能为0');
- repeat_flag = false;
- return ;
- }
- if (balance*1 + data.field.adjust_num*1 < 0) {
- layer.msg('当前储值余额不可以为负数');
- repeat_flag = false;
- return ;
- }
- $.ajax({
- type: "POST",
- url: ns.url("shop/member/adjustBalance"),
- data: data.field,
- dataType: 'JSON',
- success: function(res) {
- layer.msg(res.message);
- if (res.code == 0) {
- // $("#member_balance").html(res.data.balance);
- // $("#member_balance").next().attr('data-num', res.data.balance);
- // layer.closeAll('page');
- // table.reload();
- location.reload();
- } else {
- repeat_flag = false;
- }
- }
- });
- });
- form.on('submit(saveGrowth)', function(data) {
- if (repeat_flag) return false;
- repeat_flag = true;
- var growth = {$member_info.data.growth};
- if (data.field.adjust_num == 0) {
- layer.msg('调整数值不能为0');
- repeat_flag = false;
- return ;
- }
- if (growth*1 + data.field.adjust_num*1 < 0) {
- layer.msg('成长值不可以为负数');
- repeat_flag = false;
- return;
- }
- $.ajax({
- type: "POST",
- url: ns.url("shop/member/adjustGrowth"),
- data: data.field,
- dataType: 'JSON',
- success: function(res) {
- layer.msg(res.message);
- if (res.code == 0) {
- $("#member_growth").html(res.data.growth);
- $("#member_growth").next().attr('data-num', res.data.growth);
- layer.closeAll('page');
- table.reload();
- } else {
- repeat_flag = false;
- }
- }
- });
- });
- form.on('checkbox(memberlevel)', function(data){
- $('#setMemberLevel input[type="checkbox"]').prop('checked', false);
- $(data.elem).prop('checked', true);
- form.render();
- })
- });
- function savePoint(e) {
- var point = $(e).attr('data-num');
- var data = {
- point : point
- };
- laytpl($("#point").html()).render(data, function(html) {
- layer.open({
- title: '调整积分',
- skin: 'layer-tips-class',
- type: 1,
- area: ['800px'],
- content: html,
- end: function () {
- repeat_flag = false;
- }
- });
- });
- $(".integral-bounced .amount input").on("input propertychange",function(val){
- var newIntegral = parseInt($(this).val());
- if (!isNaN(newIntegral)) $(this).val(newIntegral);
- var currIntegral = parseInt($(".integral-bounced .account-value").text());
- if (newIntegral + currIntegral < 0){
- layer.msg("调整数额与当前值积分数相加不能小于0");
- $(this).val(-currIntegral);
- return false;
- }
- })
- }
- function saveBalance(e) {
- var balance = $(e).attr('data-num');
- var data = {
- balance : balance
- };
- laytpl($("#balance").html()).render(data, function(html) {
- layer.open({
- title: '调整储值余额',
- skin: 'layer-tips-class',
- type: 1,
- area: ['800px'],
- content: html,
- end: function () {
- repeat_flag = false;
- }
- });
- });
- }
- function saveGrowth(e) {
- var growth = $(e).attr('data-num');
- var data = {
- growth : growth
- };
- laytpl($("#growth").html()).render(data, function(html) {
- layer.open({
- title: '调整成长值',
- skin: 'layer-tips-class',
- type: 1,
- area: ['800px'],
- content: html,
- end: function () {
- repeat_flag = false;
- }
- });
- });
- }
- function editMemberLevel(){
- laytpl($("#memberLevel").html()).render({}, function(html) {
- layer.open({
- title: '设置会员等级',
- skin: 'select-level-layer',
- type: 1,
- area: ['400px', '300px'],
- content: html,
- success: function(){
- form.render();
- form.on('radio(level_type)', function (data) {
- $('.level-type').hide();
- $('.level-type.type-' + data.value).show();
- })
- form.on('select(member_card)', function (data) {
- $('.member-card').hide();
- $('.member-card-' + data.value).show();
- })
- },
- btn: ['保存', '取消'],
- yes: function () {
- layer.confirm('是否确定变更该客户的会员等级?',{title: '会员等级变更确认'}, function(index){
- let data = {
- level_type: $('[name="level_type"]:checked').val() || 0,
- member_id: '{$member_info.data.member_id}'
- }
- data.level_id = data.level_type == 0 ? $('[name="member_level"]').val() : $('[name="member_card"]').val();
- if (data.level_id == 0) {
- layer.msg((data.level_type == 0 ? '请选择会员等级' : '请选择会员卡'));
- return;
- }
- if (data.level_type == 1) data.period_unit = $('[name="member_card_'+ data.level_id +'"]:checked').val();
- $.ajax({
- type: "POST",
- url: ns.url("shop/member/changememberlevel"),
- data: data,
- dataType: 'JSON',
- success: function(res) {
- if (res.code == 0) {
- location.reload();
- } else {
- layer.msg(res.message);
- }
- }
- });
- layer.closeAll();
- });
- }
- });
- });
- }
- function editNickname(event){
- var nickname = $(event).prev('span').text();
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>昵称:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="nickname" type="text" lay-verify="required" value="`+ nickname +`" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '编辑昵称',
- skin: 'edit-member-layer',
- type: 1,
- area: '360px',
- content: html,
- success: function(){
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {nickname: $.trim($('[name="nickname"]').val())};
- if (!reg.required.test(data.nickname)) {
- layer.msg('请输入昵称', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.nickname);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editRealname(event){
- var realname = $.trim($(event).prev('span').text()) != '暂无' ? $.trim($(event).prev('span').text()) : '';
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>真实姓名:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="realname" type="text" lay-verify="required" value="`+ realname +`" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '真实姓名',
- skin: 'edit-member-layer',
- type: 1,
- area: '380px',
- content: html,
- success: function(){
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {realname: $.trim($('[name="realname"]').val())};
- if (!reg.required.test(data.realname)) {
- layer.msg('请输入真实姓名', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.realname);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editMobile(event){
- var realname = $.trim($(event).prev('span').text()) != '暂无' ? $.trim($(event).prev('span').text()) : '';
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>手机号:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="mobile" type="text" lay-verify="required" value="`+ realname +`" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '手机号',
- skin: 'edit-member-layer',
- type: 1,
- area: '380px',
- content: html,
- success: function(){
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {mobile: $.trim($('[name="mobile"]').val())};
- if (!reg.required.test(data.mobile)) {
- layer.msg('手机号', {icon: 5});
- return;
- }
- if (!ns.parse_mobile(data.mobile)) {
- layer.msg('请输入正确的手机号', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.mobile);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editBirthday(event){
- var birthday = $(event).prev('span').attr('data-value');
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>生日:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="birthday" type="text" id="birthday" value="" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '生日',
- skin: 'edit-member-layer',
- type: 1,
- area: '360px',
- content: html,
- success: function(){
- laydate.render({
- elem: '#birthday',
- max: 0
- });
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {birthday: $('[name="birthday"]').val()};
- if (!reg.required.test(data.birthday)) {
- layer.msg('请选择生日', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.birthday);
- // $(event).prev('span').attr('data-value', data.sex);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editSex(event){
- var sex = $(event).prev('span').attr('data-value');
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>性别:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input type="radio" name="sex" value="1" title="男" `+ (sex == 1 ? 'checked' : '') +`>
- <input type="radio" name="sex" value="2" title="女" `+ (sex == 2 ? 'checked' : '') +`>
- </div>
- </div>
- </div>`;
- layer.open({
- title: '性别',
- skin: 'edit-member-layer',
- type: 1,
- area: '270px',
- content: html,
- success: function(){
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {sex: $('[name="sex"]:checked').val()};
- if (!data.sex) {
- layer.msg('请选择性别', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text($('[name="sex"]:checked').attr('title'));
- $(event).prev('span').attr('data-value', data.sex);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editMobile(event){
- var mobile = $.trim($(event).prev('span').text()) != '暂无' ? $.trim($(event).prev('span').text()) : '';
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>手机号:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="mobile" type="number" value="`+ mobile +`" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '编辑手机号',
- skin: 'edit-member-layer',
- type: 1,
- area: '370px',
- content: html,
- success: function(){
- form.render();
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {mobile: $('[name="mobile"]').val()};
- if (!reg.required.test(data.mobile)) {
- layer.msg('请输入手机号', {icon: 5});
- return;
- }
- if (!reg.mobile.test(data.mobile)) {
- layer.msg('请输入正确的手机号', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.mobile);
- layer.closeAll();
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- function editMember(data, callback){
- if(repeat_flag) return false;
- repeat_flag = true;
- data.member_id = '{$member_info.data.member_id}';
- $.ajax({
- url: ns.url("shop/member/editMember"),
- data: data,
- dataType: 'JSON', //服务器返回json格式数据
- type: 'POST', //HTTP请求类型
- success: function(res) {
- repeat_flag = false;
- typeof callback == 'function' && callback(res);
- }
- });
- }
- function editMemberAddress(event){
- var html = `<div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>所在地区:</label>
- <div class="layui-input-inline len-mid" style="margin: 0;">
- <input name="full_address" type="text" lay-verify="required" value="{$member_info.data.full_address}" class="layui-input len-mid">
- </div>
- </div>
- </div>
- <input name="province_id" type="hidden" value="{$member_info.data.province_id}" class="layui-input len-mid">
- <input name="city_id" type="hidden" value="{$member_info.data.city_id}" class="layui-input len-mid">
- <input name="district_id" type="hidden" value="{$member_info.data.district_id}" class="layui-input len-mid">
- <div class="layui-form form-wrap">
- <div class="layui-form-item">
- <label class="layui-form-label" style="width:auto"><span class="required">*</span>详细地址:</label>
- <div class="layui-input-block" style="margin-left: 0;">
- <input name="address" type="text" lay-verify="required" value="{$member_info.data.address}" class="layui-input len-mid">
- </div>
- </div>
- </div>`;
- layer.open({
- title: '会员地址',
- skin: 'edit-member-layer',
- type: 1,
- area: '380px',
- content: html,
- success: function(){
- form.render();
- if (!areaTree.length) {
- $.ajax({
- url : ns.url("shop/express/getareatree"),
- dataType: 'JSON',
- type: 'POST',
- async: false,
- success: function(res) {
- areaTree = res.data;
- }
- })
- }
- var _cascader = layCascader({
- elem: $('[name="full_address"]'),
- options: areaTree,
- separator: '-',
- props: {
- value: 'id',
- label: 'name',
- children: 'children'
- }
- });
- {if !empty($member_info.data.full_address)}
- _cascader.setValue({$member_info.data.district_id});
- {/if}
- _cascader.changeEvent(function (value, node) {
- $('[name="province_id"]').val(node.path[0] ? node.path[0].data.id : 0)
- $('[name="city_id"]').val(node.path[1] ? node.path[1].data.id : 0)
- $('[name="district_id"]').val(node.path[2] ? node.path[2].data.id : 0)
- var fullAddress = [];
- node.path.forEach(function (item) {
- fullAddress.push(item.data.name);
- })
- $('[name="full_address"]').val(fullAddress.join('-'));
- });
- },
- btn: ['保存', '取消'],
- yes: function () {
- var data = {
- province_id: $.trim($('[name="province_id"]').val()),
- city_id: $.trim($('[name="city_id"]').val()),
- district_id: $.trim($('[name="district_id"]').val()),
- address: $.trim($('[name="address"]').val()),
- full_address: $.trim($('[name="full_address"]').val())
- };
- if (!reg.required.test(data.full_address)) {
- layer.msg('请选择所在地区', {icon: 5});
- return;
- }
- if (!reg.required.test(data.address)) {
- layer.msg('请输入详细地址', {icon: 5});
- return;
- }
- editMember(data, function(res){
- if (res.code == 0) {
- $(event).prev('span').text(data.realname);
- layer.closeAll();
- setTimeout(function(){
- location.reload()
- }, 1500)
- } else {
- layer.msg(res.message);
- }
- });
- }
- })
- }
- </script>
- <!-- 积分弹框html -->
- <script type="text/html" id="point">
- <div class="layui-form integral-bounced">
- <div class="layui-form-item">
- <label class="layui-form-label">当前积分:</label>
- <div class="layui-input-block account-value">{{ parseInt(d.point) }}</div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">调整数额:</label>
- <div class="layui-input-block amount">
- <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input len-short">
- </div>
- <span class="word-aux">调整数额与当前积分数相加不能小于0</span>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">备注:</label>
- <div class="layui-input-block len-long">
- <textarea class="layui-textarea" name="remark" placeholder="请输入备注" maxlength="150"></textarea>
- </div>
- </div>
- <div class="form-row" style="margin-left: 200px;">
- <button class="layui-btn" lay-submit lay-filter="savePoint">确定</button>
- </div>
- <input type="hidden" name="member_id" value="{$member_info.data.member_id}" />
- <input type="hidden" name="point" value="{{ d.point }}" />
- </div>
- </script>
- <!-- 余额弹框html -->
- <script type="text/html" id="balance">
- <div class="layui-form">
- <div class="layui-form-item">
- <label class="layui-form-label">当前储值余额:</label>
- <div class="layui-input-block account-value">{{ d.balance }}</div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">调整数额:</label>
- <div class="layui-input-block">
- <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input len-short">
- </div>
- <span class="word-aux">调整数额与当前储值余额相加不能小于0</span>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">备注:</label>
- <div class="layui-input-block len-long">
- <textarea class="layui-textarea" name="remark" placeholder="请输入备注" maxlength="150"></textarea>
- </div>
- </div>
- <div class="form-row" style="margin-left: 200px;">
- <button class="layui-btn" lay-submit lay-filter="saveBalance">确定</button>
- </div>
- <input type="hidden" name="member_id" value="{$member_info.data.member_id}" />
- <input type="hidden" name="point" value="{{ d.balance }}" />
- </div>
- </script>
- <!-- 成长值弹框html -->
- <script type="text/html" id="growth">
- <div class="layui-form">
- <div class="layui-form-item">
- <label class="layui-form-label">当前成长值:</label>
- <div class="layui-input-block account-value">{{ d.growth }}</div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">调整数额:</label>
- <div class="layui-input-block">
- <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input len-short">
- </div>
- <span class="word-aux">调整数额与当前成长值相加不能小于0</span>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">备注:</label>
- <div class="layui-input-block len-long">
- <textarea class="layui-textarea" name="remark" placeholder="请输入备注" maxlength="150"></textarea>
- </div>
- </div>
- <div class="form-row" style="margin-left: 200px;">
- <button class="layui-btn" lay-submit lay-filter="saveGrowth">确定</button>
- </div>
- <input type="hidden" name="member_id" value="{$member_info.data.member_id}" />
- <input type="hidden" name="point" value="{{ d.growth }}" />
- </div>
- </script>
- <script type="text/html" id="memberLevel">
- <div class="layui-form" id="setMemberLevel">
- <div class="layui-form-item">
- <label class="layui-form-label sm">类型:</label>
- <div class="layui-input-block">
- <input type="radio" name="level_type" value="0" title="会员等级" checked lay-filter="level_type">
- <input type="radio" name="level_type" value="1" title="会员卡" lay-filter="level_type">
- </div>
- </div>
- <div class="level-type type-0">
- <div class="layui-form-item">
- <label class="layui-form-label sm">会员等级:</label>
- <div class="layui-input-block len-mid">
- <select name="member_level">
- <option value="0">请选择会员等级</option>
- {foreach name="member_level_list" item="vo"}
- {if $vo.level_type eq 0}
- <option value="{$vo.level_id}" {if $vo.level_id eq $member_info.data.member_level}selected{/if}>{$vo.level_name}</option>
- {/if}
- {/foreach}
- </select>
- </div>
- </div>
- </div>
- <div class="level-type type-1" style="display: none">
- <div class="layui-form-item">
- <label class="layui-form-label sm">会员卡:</label>
- <div class="layui-input-block len-mid">
- <select name="member_card" lay-filter="member_card">
- <option value="0">请选择会员卡</option>
- {foreach name="member_level_list" item="vo"}
- {if $vo.level_type eq 1}
- <option value="{$vo.level_id}" {if $vo.level_id eq $member_info.data.member_level}selected{/if}>{$vo.level_name}</option>
- {/if}
- {/foreach}
- </select>
- </div>
- </div>
- {foreach name="member_level_list" item="vo"}
- {if $vo.level_type eq 1}
- <div class="layui-form-item member-card member-card-{$vo.level_id}" style="display: none">
- <label class="layui-form-label sm">发卡规格:</label>
- <div class="layui-input-block">
- {foreach :json_decode($vo.charge_rule, true) as $key => $money}
- <input type="radio" name="member_card_{$vo.level_id}" value="{$key}" title="{$level_time[$key]}/{$money}元" checked>
- {/foreach}
- </div>
- </div>
- {/if}
- {/foreach}
- </div>
- </div>
- </script>
- {/block}
|