Commit 35c1c5383197f88b39dcf8a84d351af9ab3c52b1

Authored by taiyuan
1 parent 6a08b50e

预约表格

packageA/pages/my_service2/appment_main.js 0 → 100644
  1 +var e = getApp(),
  2 + a = e.globalData.setting,
  3 + os = a,
  4 + t = e.request,
  5 + d = e.globalData;
  6 +Page({
  7 +
  8 + /**
  9 + * 页面的初始数据
  10 + */
  11 + data: {
  12 + inurl: a.url, //接口网址
  13 + iurl: a.imghost, //服务器网址
  14 + store: 0, //是否显示服务门店列表
  15 + beautician: 0, //是否显示美容师列表
  16 + beautician_name: "", //选中的美容师名称
  17 + beauticianID: "", //美容师id
  18 + bea_index: "", //美容师列表下标
  19 + placeholder: "填写备注", //备注为空的placeholder
  20 + store_list: [], //门店列表
  21 + beautician_list: [], //美容师列表
  22 + store_name: "", //选择的服务门店
  23 + fir_pick_index: 0, //选择的门店下标
  24 + curpage: 1, //当前分页数
  25 + pageSize: 8, //页大小
  26 + total: 0,
  27 + ismore: 0, //是否加载完毕
  28 + itemId: "", //服务id
  29 + project_id: "", //项目id
  30 + isScroll: true, //scroll-y是否可以滑动
  31 + key_word: "", //是否按门店文字查询
  32 + is_service_read: 0, //是否调用过门店接口
  33 + is_search: 0, //是否通过key_word调用接口
  34 + is_success: 0, //是否提交成功
  35 + remarks: "", //备注
  36 + storageId: "", //线下门店id
  37 + url: "/packageA/pages/my_service/appment_main", //本页面地址路径用于选择时间页面跳转回来
  38 + buyType: "", //项目类型
  39 + time: "", //选择预约时间
  40 + tment_count: "", //可预约人数
  41 + lat: "", //纬度坐标
  42 + lon: "", //经度坐标
  43 + is_gps: 1, //是否开启gps
  44 + validay: "", //服务项目有效期
  45 + is_sub: 0, //判断是否重复提交
  46 + is_textea: 1, //备注是否是可输入
  47 +
  48 +
  49 + // 拖拽参数
  50 + writePosition: [], //默认定位参数
  51 + writesize: [0, 0],// X Y 定位
  52 + window: [0, 0], //屏幕尺寸
  53 + write: [0, 0], //定位参数
  54 + scrolltop: 0,//据顶部距离
  55 + v:{},
  56 +
  57 + project: ['项目1', '项目2', '项目3', '项目4', '项目5', '项目6', '项目7'],
  58 + md: ['美导1', '美导2', '美导3', '美导4', '美导5', '美导6', '美导7'],
  59 + timeList: [],
  60 + deltaX: 0,
  61 +
  62 + col_arr:[],
  63 + },
  64 + //控制备注输入
  65 + check_text: function() {
  66 + var th = this;
  67 + var is_textea = th.data.is_textea;
  68 + th.setData({
  69 + is_textea: 1,
  70 + beautician: 0
  71 + })
  72 + },
  73 + onclickstore: function() {
  74 + var th = this;
  75 + var store = th.data.store;
  76 + if (store) {
  77 + th.setData({
  78 + store: 0,
  79 + is_textea: 1
  80 + })
  81 + } else {
  82 + th.setData({
  83 + beautician: 0,
  84 + store: 1,
  85 + is_textea: 0
  86 + })
  87 + if (th.data.store_list.length < 1) {
  88 + wx.showLoading({
  89 + title: '加载中',
  90 + })
  91 + th.query_store();
  92 + }
  93 + }
  94 + },
  95 + //输入的备注
  96 + input_remarks: function(e) {
  97 + var remarks = e.detail.value;
  98 + this.setData({
  99 + remarks: remarks
  100 + })
  101 + },
  102 + //提交成功及发送模版代码
  103 + success: function() {
  104 + var th = this;
  105 + var store = th.data.store_name; //门店名称
  106 + var bea_name = th.data.beautician_name; //美容师名称
  107 + var time = th.data.time; //预约时间
  108 + var is_sub = th.data.is_sub; //是否重复提交
  109 + var url = th.data.inurl + "/api/weshop/marketing/reservation/reservation/insert"; //接口路径
  110 + var serviceId = th.data.itemId; //服务id
  111 + var beauticianID = th.data.beauticianID; //美容师id
  112 + var buyType = th.data.buyType; //服务项目类型
  113 + var storeId = a.stoid; //商家id
  114 + var storageId = th.data.storageId; //门店id
  115 + var userId = th.data.options.userid; //用户id
  116 + var remarks = th.data.remarks; //用户备注
  117 + var project_id = th.data.project_id; //项目id
  118 + var validay = th.data.validay;
  119 + var json = {
  120 + "arrangeTime": time + ":00",
  121 + "beauticianId": beauticianID,
  122 + "buyType": buyType,
  123 + "effectiveDay": "",
  124 + "number": "",
  125 + "projectId": project_id,
  126 + "remark": remarks,
  127 + "serviceId": serviceId,
  128 + "states": 0,
  129 + "storageId": storageId,
  130 + "storeId": storeId,
  131 + "userId": userId,
  132 + "validay": validay,
  133 + "isxz": 1
  134 +
  135 + }
  136 + var data = JSON.stringify(json);
  137 + wx.request({
  138 + url: url,
  139 + data: json,
  140 + method: 'post',
  141 + header: {
  142 + 'content-type': 'application/json'
  143 + }, // 设置请求的 header
  144 + success: function(res) {
  145 + th.setData({
  146 + is_sub: 0
  147 + })
  148 + wx.hideLoading();
  149 + if (res.data.code == 0) {
  150 + getApp().my_warnning("预约成功", 1, th);
  151 + // var store_name = th.data.store_name; //预约门店
  152 + var number = res.data.data.Number;
  153 + // var temp_url = "/api/wx/open/app/user/sendSubscribeMsg"; //模版接口
  154 + //var userinfo = getApp().globalData.userInfo;
  155 + //var name = d.userInfo.nickname;
  156 + // var json = {
  157 + // // "formId": formid,
  158 + // "keyWord": [{
  159 + // "keyword": res.data.data.ServiceName
  160 + // },
  161 + // {
  162 + // "keyword": time.substring(0, 16)
  163 + // }, {
  164 + // "keyword": res.data.data.BeauticianName
  165 + // }, {
  166 + // "keyword": res.data.data.StorageName
  167 + // }, {
  168 + // "keyword": res.data.data.Address
  169 + // }
  170 + // ],
  171 + // "page": "/packageA/pages/my_service/tment_details?number=" + number+"&userid="+th.data.options.userid,
  172 + // "storeId": a.stoid,
  173 + // "typeId": "1011",
  174 + // "userId": th.data.options.userid
  175 + // };
  176 + // var data = JSON.stringify(json);
  177 + // //调用发送预约成功模版接口
  178 + // wx.request({
  179 + // url: th.data.inurl + temp_url,
  180 + // data: data,
  181 + // method: 'post',
  182 + // header: {
  183 + // 'content-type': 'application/json'
  184 + // }, // 设置请求的 header
  185 + // success: function(data) {}
  186 + // })
  187 +
  188 + wx.redirectTo({
  189 + url: "/packageA/pages/my_service/tment_details?number=" + number+"&userid="+th.data.options.userid,
  190 + });
  191 +
  192 + } else {
  193 + getApp().my_warnning(res.data.msg, 0, th);
  194 + th.settime();
  195 + }
  196 + }
  197 + })
  198 +
  199 + },
  200 + //定时显示texteat
  201 + settime: function() {
  202 + var th = this;
  203 + setTimeout(function() {
  204 + th.setData({
  205 + is_textea: 1
  206 + })
  207 + }, 2000);
  208 + },
  209 + //提交预约
  210 + sub_success: function(e) {
  211 + var th = this;
  212 + var temp_url = th.data.inurl + "/api/wx/weappSendlist/page";
  213 + var template_id = "";
  214 + if (th.data.is_sub == 1) {
  215 + return false;
  216 + }
  217 + var store = th.data.store_name; //门店名称
  218 + var bea_name = th.data.beautician_name; //美容师名称
  219 + var time = th.data.time; //预约时间
  220 + var is_sub = th.data.is_sub; //是否重复提交
  221 + th.setData({
  222 + is_textea: 0,
  223 + is_sub: 1
  224 + })
  225 + //提交预约前的判断
  226 + if (store == "") {
  227 + getApp().my_warnning("请选择服务门店", 0, th);
  228 + th.setData({
  229 + is_sub: 0
  230 + })
  231 + th.settime();
  232 + return false;
  233 + } else if (bea_name == "") {
  234 + getApp().my_warnning("请选择美容师", 0, th);
  235 + th.setData({
  236 + is_sub: 0
  237 + })
  238 + th.settime();
  239 + return false;
  240 + } else if (time == undefined || time == '') {
  241 + getApp().my_warnning("请选择预约时间", 0, th);
  242 + th.setData({
  243 + is_sub: 0
  244 + })
  245 + th.settime();
  246 + return false;
  247 + } else {
  248 + var version ="";
  249 + //判断微信版本是否达到预约成功订阅的要求
  250 + wx.getSystemInfo({
  251 + success(res) {
  252 + version = res.version;
  253 + }
  254 + })
  255 + wx.showLoading({
  256 + title: '加载中',
  257 + })
  258 +
  259 + th.success();
  260 + // if (th.ver(version, '7.0.4') >= 0) {
  261 + // //获取模版id
  262 + // getApp().request.promiseGet(temp_url, {
  263 + // data: {
  264 + // store_id: a.stoid,
  265 + // typeid: "1011"
  266 + // }
  267 + // }).then(res => {
  268 + // if (res.data.code == 0 && res.data.data.pageData.length > 0) {
  269 + // template_id = res.data.data.pageData[0].template_id;
  270 + // // //授权订阅
  271 + // wx.requestSubscribeMessage({
  272 + // tmplIds: [template_id],
  273 + // success(res) {
  274 + // th.success();
  275 + // },
  276 + // fail(res) {
  277 + // th.success();
  278 + // }
  279 + // })
  280 + // } else {
  281 + // th.success();
  282 + // }
  283 + // })
  284 + // } else {
  285 + // // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
  286 + // wx.showModal({
  287 + // title: '提示',
  288 + // content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
  289 + // })
  290 + // th.setData({
  291 + // is_sub: 0
  292 + // })
  293 + // }
  294 +
  295 + }
  296 + },
  297 + //版本判断
  298 + ver:function(v1,v2){
  299 + v1 = v1.split('.')
  300 + v2 = v2.split('.')
  301 + var num1 = "" ;
  302 + var num2 = "";
  303 + var len = Math.max(v1.length, v2.length)
  304 +
  305 + while (v1.length < len) {
  306 + v1.push('0')
  307 + }
  308 + while (v2.length < len) {
  309 + v2.push('0')
  310 + }
  311 +
  312 + for (let i = 0; i < len; i++) {
  313 + num1 = parseInt(v1[i])
  314 + num2 = parseInt(v2[i])
  315 +
  316 + if (num1 > num2) {
  317 + return 1
  318 + } else if (num1 < num2) {
  319 + return -1
  320 + }
  321 + }
  322 + return 0
  323 + },
  324 + goto: function(e) {
  325 + var th = this;
  326 + th.setData({
  327 + beautician: 0,
  328 + is_textea: 0
  329 + })
  330 + if (th.data.store_name == "") {
  331 + getApp().my_warnning("请选择服务门店", 0, th);
  332 + th.settime();
  333 + } else if (th.data.beautician_name == "") {
  334 + getApp().my_warnning("请选择美容师", 0, th);
  335 + th.settime();
  336 + } else {
  337 + th.setData({
  338 + is_textea: 1
  339 + })
  340 + var url = e.currentTarget.dataset.url;
  341 + getApp().goto(url);
  342 + }
  343 + },
  344 + //点击选择门店
  345 + choose_for_store: function(e) {
  346 + var th = this;
  347 + var index_c = e.currentTarget.dataset.ind;
  348 + var fir_pick_index = th.data.fir_pick_index;
  349 + //判断是否点击选中的门店,防止重复点击重复设置选中下标
  350 + if (index_c == fir_pick_index) {
  351 + return false;
  352 + } else {
  353 + th.setData({
  354 + fir_pick_index: index_c,
  355 + beautician_name: "",
  356 + time: "",
  357 + tment_count: ""
  358 + })
  359 + }
  360 + },
  361 + //确认选择门店
  362 + choice_store: function() {
  363 + var th = this;
  364 + var index = th.data.fir_pick_index;
  365 + var store_name = th.data.store_list[index].StorageName;
  366 + var Id = th.data.store_list[index].Id;
  367 + th.setData({
  368 + store: 0,
  369 + store_name: store_name,
  370 + storageId: Id,
  371 + is_textea: 1
  372 + })
  373 + },
  374 + onReachBottom: function() {
  375 + var th = this;
  376 + if (this.data.total <= th.data.pageSize) return;
  377 + if (this.data.ismore) return;
  378 +
  379 + wx.showLoading({
  380 + title: '加载中...',
  381 + })
  382 + th.query_store();
  383 + },
  384 + //分页查询门店信息
  385 + query_store: function() {
  386 + var th = this;
  387 + th.setData({
  388 + is_textea: 0
  389 + })
  390 + var itemId = th.data.itemId; //服务id
  391 + var url = "/api/weshop/marketing/reservation/storage/pagenew";
  392 + var key_word = th.data.key_word;
  393 + key_word = key_word.replace(/\s+/g, "");
  394 + getApp().request.promiseGet(url, {
  395 + data: {
  396 + userId: th.data.options.userid,
  397 + storeId: a.stoid,
  398 + serviceId: itemId,
  399 + latitude: th.data.lat,
  400 + longitude: th.data.lon,
  401 + page: th.data.curpage,
  402 + pageSize: th.data.pageSize,
  403 + keyWord: key_word
  404 + }
  405 + }).then(res => {
  406 + wx.hideLoading();
  407 + if (res.data.code == 0) {
  408 + th.data.curpage++;
  409 + var arr1 = th.data.store_list;
  410 + var arr2 = res.data.data.pageData;
  411 + var arr3 = [...arr1, ...arr2];
  412 + var ismore = 0;
  413 + if (arr3.length == res.data.data.total) ismore = 1
  414 + th.setData({
  415 + store_list: arr3,
  416 + total: res.data.data.total,
  417 + ismore: ismore,
  418 + is_service_read: 1,
  419 + }), wx.stopPullDownRefresh(); //停止下拉刷新
  420 + if (key_word != "" && res.data.data.pageData.length < 1) {
  421 + th.setData({
  422 + is_search: 1
  423 + })
  424 + }
  425 + } else {
  426 + getApp().my_warnning(res.data.msg, 0, th);
  427 + th.settime();
  428 + }
  429 + })
  430 + },
  431 + //查询
  432 + query_beautician: function() {
  433 + var th = this;
  434 + th.setData({
  435 + is_textea: 0
  436 + });
  437 +
  438 + if (th.data.store_name == "") {
  439 + getApp().my_warnning("请选择服务门店", 0, th);
  440 + th.settime();
  441 + } else {
  442 + wx.showLoading({
  443 + title: '加载中',
  444 + })
  445 + var itemid = th.data.itemId; //正式使用的项目id
  446 + var storageId = th.data.storageId; //正式使用的线下门店id
  447 + var url = "/api/weshop/marketing/reservation/staff/pagenew"; //接口地址
  448 +
  449 + getApp().request.promiseGet(url, {
  450 + data: {
  451 + storeId: a.stoid,
  452 + userId: th.data.options.userid,
  453 + serviceId: itemid,
  454 + storageId: storageId
  455 + }
  456 + }).then(res => {
  457 + wx.hideLoading();
  458 + if (res.data.code == 0) {
  459 + th.setData({
  460 + beautician_list: res.data.data
  461 + })
  462 + if (res.data.data.length < 1) {
  463 + getApp().my_warnning("暂无美容师", 0, th);
  464 + th.settime();
  465 + } else {
  466 + if (th.data.beautician == 0) {
  467 + th.setData({
  468 + beautician: 1,
  469 + })
  470 + } else {
  471 + th.setData({
  472 + beautician: 0,
  473 + })
  474 + }
  475 + }
  476 + } else {
  477 + getApp().my_warnning(res.data.msg, 0, th);
  478 + th.settime();
  479 + }
  480 + })
  481 + }
  482 + },
  483 +
  484 + choice_beautician: function(e) {
  485 + var th = this;
  486 + var bea_index = e.currentTarget.dataset.baaindex;
  487 + var bea_name = th.data.beautician_list[bea_index].StaffName;
  488 + var BeauticianID = th.data.beautician_list[bea_index].staffid;
  489 + var StorageId=th.data.beautician_list[bea_index].StorageId
  490 +
  491 + th.setData({
  492 + beautician_name: bea_name,
  493 + beautician: 0,
  494 + bea_index: bea_index,
  495 + beauticianID: BeauticianID,
  496 + time: "",
  497 + tment_count: "",
  498 + is_textea: 1,
  499 + StorageId:StorageId
  500 + })
  501 +
  502 + },
  503 + //获取搜索门店输入的值
  504 + input_store: function(e) {
  505 + this.setData({
  506 + key_word: e.detail.value
  507 + })
  508 + },
  509 + //搜索门店
  510 + search_store: function() {
  511 + var th = this;
  512 + var key_word = th.data.key_word;
  513 + var store_list = th.data.store_list;
  514 + th.setData({
  515 + curpage: 1,
  516 + is_search: 0,
  517 + store_list: []
  518 + })
  519 + wx.showLoading({
  520 + title: '加载中',
  521 + })
  522 + th.query_store();
  523 + },
  524 + //美容师预约跳转页面
  525 + nav_bea: function() {
  526 + var th = this;
  527 + th.setData({
  528 + beautician: 0
  529 + })
  530 + var storageId = th.data.storageId; //线下门店id
  531 + var itemId = th.data.itemId; //服务id
  532 + var project_id = th.data.project_id;
  533 + if (storageId == "") {
  534 + getApp().my_warnning("请选择服务门店", 0, th);
  535 + th.settime();
  536 + } else {
  537 + th.setData({
  538 + is_textea: 1
  539 + })
  540 + console.log('optionsxxx===>', this.data.options);
  541 + // console.log('1-->', "/pages/user/my_service/cosmetology_list?userid=" + th.data.options.userid + 'storageId=' + storageId + '&' + 'itemId=' + itemId + '&' + "projectId=" + project_id);
  542 + wx.navigateTo({
  543 + url: "/packageA/pages/my_service/cosmetology_list?userid=" + this.data.options.userid + '&storageId=' + storageId + '&itemId=' + itemId + "&projectId=" + project_id
  544 + });
  545 +
  546 + }
  547 + },
  548 + /**
  549 + * 生命周期函数--监听页面加载
  550 + */
  551 + onLoad: function(options) {
  552 +
  553 + this.getTimeList(23, 30);
  554 +
  555 +
  556 + var th = this;
  557 + th.setData({
  558 + options,
  559 + itemId: options.service_id,
  560 + buyType: options.BuyType,
  561 + project_id: options.ProjectID,
  562 + validay: options.Validay
  563 + });
  564 + wx.getLocation({
  565 + type: 'gcj02',
  566 + success: function(res) {
  567 + th.data.lat = res.latitude;
  568 + th.data.lon = res.longitude;
  569 + th.data.is_get_local_ok = 1;
  570 + th.setData({
  571 + is_gps: 1
  572 + });
  573 + },
  574 + fail: function(res) {
  575 + if (res.errCode == 2) {
  576 + th.setData({
  577 + is_gps: 0
  578 + });
  579 + if (th.data.is_gps == 0) {
  580 + getApp().confirmBox("请开启GPS定位", null, 25000, !1);
  581 + th.settime();
  582 + }
  583 + } else {
  584 + th.setData({
  585 + is_gps: "3"
  586 + });
  587 + }
  588 +
  589 + th.data.is_get_local_ok = 1;
  590 + }
  591 + });
  592 +
  593 + // 获取当前默认导购信息及归属门店信息
  594 + if(options.firstleader) {
  595 + getApp().request.promiseGet("/api/weshop/shoppingGuide/get/"+a.stoid+"/"+options.firstleader,{}).then(res=>{
  596 +        if(res.data.code==0){
  597 +          getApp().globalData.guide_id=res.data.data.id;
  598 +
  599 + getApp().request.promiseGet('/api/weshop/shoppingGuide/geIdStaffInfo', {
  600 + data: {
  601 + store_id: a.stoid,
  602 + guide_id: e.globalData.guide_id,
  603 + UserCode: th.data.options.usercode,
  604 + }
  605 + }).then(res => {
  606 + console.log('res==>', a.stoid, e.globalData.guide_id, th.data.options.usercode);
  607 + if(res.data.data.Tech) {
  608 +
  609 + var data={
  610 + store_name: res.data.data.StorageName,
  611 + beautician_name: res.data.data.StaffName,
  612 + beauticianID: res.data.data.StaffId,
  613 + StorageId: res.data.data.StorageId,
  614 + }
  615 + th.check_firleader(data);
  616 + }
  617 + });
  618 +
  619 +
  620 +        };
  621 + });
  622 + };
  623 +
  624 +
  625 + },
  626 + //查询剩下可预约人数
  627 + query_more: function() {
  628 + var th = this;
  629 + var url = "/api/weshop/marketing/reservation/can/reservation/countnew";
  630 + var beauticianID = th.data.beauticianID; //美容师id
  631 + var projectID = th.data.itemId; //服务id
  632 + var seekTime = th.data.time; //预约日期
  633 + var storageId = th.data.storageId; //门店id
  634 + var storeId = a.stoid; //商家id
  635 + getApp().request.promiseGet(url, {
  636 + data: {
  637 + beauticianId: beauticianID,
  638 + seekTime: seekTime,
  639 + serviceId: projectID,
  640 + storageId: storageId,
  641 + storeId: storeId
  642 + }
  643 + }).then(res => {
  644 + if (res.data.code == 0) {
  645 + var tment_count = res.data.data.CanReservation;
  646 + th.setData({
  647 + tment_count: tment_count
  648 + })
  649 + } else {
  650 + getApp().my_warnning(res.data.msg, 0, th);
  651 + th.settime();
  652 + }
  653 + })
  654 +
  655 + },
  656 + /**
  657 + * 生命周期函数--监听页面显示
  658 + */
  659 + onShow: function() {
  660 + var th = this;
  661 + var seekTime = th.data.time; //预约日期
  662 + if (seekTime != "") {
  663 + th.query_more();
  664 + }
  665 + th.setData({
  666 + time: th.data.time.substring(0, 16),
  667 + is_textea: 1
  668 + })
  669 + th.query_project();
  670 +
  671 + th.queryMultipleNodes();
  672 + },
  673 + //获取单个服务项目信息
  674 + query_project: function() {
  675 + var th = this;
  676 + var url = "/api/weshop/marketing/reservation/sm/page"; //获取服务项目接口
  677 + var project_id = th.data.project_id; //服务项目id
  678 + getApp().request.promiseGet(url, {
  679 + data: {
  680 + storeId: a.stoid,
  681 + userId: th.data.options.userid,
  682 + projectId: project_id
  683 + }
  684 + }).then(res => {
  685 + if (res.data.code == 0) {
  686 + th.setData({
  687 + validay: res.data.data.pageData[0].Validay
  688 + })
  689 + } else {
  690 + getApp().my_warnning(res.data.msg, 0, th);
  691 + th.settime();
  692 + }
  693 + })
  694 + },
  695 + //关闭导航
  696 + // close: function() {
  697 + // var th = this;
  698 + // var nav_b = th.selectComponent("#nav_b"); //组件的id
  699 + // nav_b.close_box();
  700 + // }
  701 +
  702 + //判断分享的导购是不是有门店,是不是该门店下又该会员
  703 + check_firleader(data){
  704 + var th=this;
  705 + var itemId = this.data.itemId; //服务id
  706 + var url = "/api/weshop/marketing/reservation/storage/pagenew";
  707 + var key_word = data.store_name;
  708 + key_word = key_word.replace(/\s+/g, "");
  709 + getApp().request.promiseGet(url, {
  710 + data: {
  711 + userId: th.data.options.userid,
  712 + storeId: os.stoid,
  713 + serviceId: itemId,
  714 + latitude: th.data.lat,
  715 + longitude: th.data.lon,
  716 + page: 1,
  717 + pageSize: 1000,
  718 + keyWord: key_word
  719 + }
  720 + }).then(res => {
  721 + //-- 如果是门店的话 --
  722 + if (res.data.code == 0 && res.data.data && res.data.data.pageData) {
  723 + var store_data=null;
  724 + for(var i in res.data.data.pageData){
  725 + var it=res.data.data.pageData[i];
  726 + if(it.Id==data.StorageId){
  727 + store_data={
  728 + store_name: data.store_name,
  729 + StorageId: data.StorageId,
  730 + };
  731 + break;
  732 + }
  733 + }
  734 + if(!store_data) return false;
  735 + th.setData(store_data)
  736 +
  737 + }else{
  738 + return false;
  739 + }
  740 +
  741 + //导购接口地址
  742 + var url = "/api/weshop/marketing/reservation/staff/pagenew";
  743 + return getApp().request.promiseGet(url, {
  744 + isShowLoading:1,
  745 + data: {
  746 + storeId: os.stoid,
  747 + userId: th.data.options.userid,
  748 + serviceId: itemId,
  749 + storageId: data.StorageId
  750 + }
  751 + })
  752 + }).then(res=>{
  753 + if (res && res.data && res.data.code == 0) {
  754 + var beautician_list=res.data.data;
  755 + for(var i in beautician_list){
  756 + var item=beautician_list[i];
  757 + if(item.staffid==data.beauticianID){
  758 + th.setData({
  759 + beautician_name:data.beautician_name,
  760 + beauticianID:data.beauticianID,
  761 + })
  762 + break;
  763 + }
  764 + }
  765 +
  766 + }
  767 + })
  768 + },
  769 +
  770 +
  771 +
  772 + //计算默认定位值
  773 + // getSysdata: function () {
  774 + // var that = this;
  775 + // wx.getSystemInfo({
  776 + // success: function (e) {
  777 + // that.data.window = [e.windowWidth, e.windowHeight];
  778 + // console.log('win', that.data.window);
  779 + // var write = [];
  780 + // write[0] = that.data.window[0] * that.data.writePosition[0] / 100;
  781 + // write[1] = that.data.window[1] * that.data.writePosition[1] / 100;
  782 + // console.log(write,45)
  783 + // that.setData({
  784 + // write: write
  785 + // }, function () {
  786 + // // 获取元素宽高
  787 + // wx.createSelectorQuery().select('.td').boundingClientRect(function (res) {
  788 + // // console.log('0x0x',res.width)
  789 + // that.data.writesize = [res.width, res.height];
  790 + // console.log('writesize', that.data.writesize);
  791 + // }).exec();
  792 + // })
  793 + // },
  794 + // fail: function (e) {
  795 + // console.log(e)
  796 + // }
  797 + // });
  798 + // },
  799 +
  800 +
  801 + //开始拖拽
  802 + touchmove: function (e) {
  803 + var that = this;
  804 + var position = [e.touches[0].pageX + this.data.deltaX, e.touches[0].pageY];
  805 + that.setData({
  806 + write: position
  807 + });
  808 + },
  809 +
  810 +
  811 + onPageScroll(e) {
  812 + // console.log('滚动距离', e);
  813 + this.data.scrolltop = e.scrollTop;
  814 + },
  815 +
  816 +
  817 +
  818 +
  819 + touchend:function(e){
  820 + var that = this,th=that;
  821 + var position =th.data.write;
  822 + var arr=th.data.col_arr;
  823 + for(var i=0;i<this.data.md.length;i++){//i是列
  824 + for(var j=0; j<this.data.timeArr.length;j++){//j是行
  825 +
  826 + if(arr.indexOf(j)!=-1) continue;
  827 + //如果坐标在网格内
  828 + if( position[0]>th.data.f_x+i*th.data.f_width && position[0]<th.data.f_x+ (i+1)*th.data.f_width &&
  829 + position[1]>th.data.f_y +j*th.data.f_hei && position[1]<th.data.f_y+(j+1)*th.data.f_hei){
  830 +
  831 + var txt="v["+i+"]["+j+"]";
  832 + wx.showToast({
  833 + title:"222"+i+j,
  834 +
  835 + })
  836 + // let obj = {};
  837 + // obj.row = j;
  838 + // obj.col = i;
  839 + // var v = this.data.v;
  840 + // v[i].col = j;
  841 + arr.push(j);
  842 + console.log(arr);
  843 +
  844 +
  845 + th.setData({
  846 + [txt]: th.data.projectName,
  847 + // [v[i].row]: i,
  848 + // [v[i].col]: j,
  849 + col_arr:arr
  850 + });
  851 +
  852 + break;
  853 + }
  854 +
  855 + }
  856 + }
  857 + th.setData({copy_btn:0})
  858 +
  859 + },
  860 +
  861 +
  862 + //声明节点查询的方法
  863 + queryMultipleNodes: function() {
  864 + var th=this;
  865 + const query = wx.createSelectorQuery() // 创建节点查询器 query
  866 + query.select('.content_view').boundingClientRect() // 这段代码的意思是选择Id=productServe的节点,获取节点位置信息的查询请求
  867 + query.selectViewport().scrollOffset() // 这段代码的意思是获取页面滑动位置的查询请求
  868 + query.exec(res => {
  869 + console.log(res);
  870 + th.data.f_x=res[0].left;
  871 + th.data.f_y=res[0].top;
  872 + th.data.f_hei=res[0].height;
  873 + th.data.f_width=res[0].width;
  874 +
  875 + })
  876 + },
  877 +
  878 + getcopy(e) {
  879 + var that=this;
  880 + console.log('e', e);
  881 + var position = [e.detail.x, e.detail.y];
  882 + // var position = [e.detail.x - that.data.writesize[0] / 2, e.detail.y - that.data.writesize[1] / 2 - this.data.scrolltop];
  883 + that.setData({
  884 + write: position,
  885 + copy_btn:1
  886 + });
  887 +
  888 + },
  889 +
  890 + getName(e) {
  891 + // console.log('e1', e);
  892 + let name = e.currentTarget.dataset.name;
  893 + this.setData({
  894 + projectName: name,
  895 + });
  896 + },
  897 +
  898 +
  899 + // 生成时间段
  900 + getTimeList(hours, step) {
  901 +   var minutes = 60;
  902 +   var timeArr = [];
  903 +   hours = hours;
  904 +   step = step;
  905 +      
  906 +     for(var i = 8; i < hours; i++){
  907 +         var str = '';
  908 +         if(i < 10) {
  909 +             str = 0 + '' + i;
  910 +         } else {
  911 +             str = '' + i;
  912 +         };
  913 +      
  914 +         for(var j = 0; j < minutes; j++) {
  915 +             if(j % step == 0){
  916 +                 var s = j < 10 ? ':' + 0 + '' + j : ':' +  j;
  917 +                 s = str + s;
  918 +                 timeArr.push(s);
  919 +             };
  920 +         };
  921 +     };
  922 +     
  923 + // console.log('timeArr', timeArr);
  924 + this.setData({
  925 + timeArr,
  926 + });
  927 + //     return timeArr;
  928 + },
  929 +
  930 +
  931 +
  932 + scroll(e) {
  933 + // console.log('e', e.detail.deltaX);
  934 + let deltaX = e.detail.deltaX;
  935 + // if(deltaX < 0) {
  936 + // deltaX = -deltaX;
  937 + // };
  938 + this.data.deltaX = -deltaX;
  939 + },
  940 +
  941 +
  942 +
  943 +
  944 +})
0 945 \ No newline at end of file
... ...
packageA/pages/my_service2/appment_main.json 0 → 100644
  1 +{
  2 + "navigationBarTitleText": "预约服务",
  3 + "enablePullDownRefresh": false,
  4 + "usingComponents": {
  5 + "warn": "/components/long_warn/long_warn",
  6 + "nav_b": "/components/nav_b/nav_b"
  7 + }
  8 +}
0 9 \ No newline at end of file
... ...
packageA/pages/my_service2/appment_main.wxml 0 → 100644
  1 +<wxs module="filters" src="../../../utils/filter.wxs"></wxs>
  2 +<movable-area class="area" catchtap="close" style="width: 100%;height: 100%;">
  3 + <view class="btn-container">
  4 + <navigator class="btn" url="/pages/user/my_service/tment_order_list">
  5 + <view>我的预约</view>
  6 + </navigator>
  7 + <form report-submit='true' bindtap="sub_success">
  8 + <button form-type="submit" class="btn">
  9 + <view>提交预约</view>
  10 + </button>
  11 + </form>
  12 + </view>
  13 +
  14 + <view class="card" bindlongtap="getcopy">
  15 +
  16 + <view class="t-c c-c7">
  17 + <text class="iconfont icon-sandian"></text>
  18 + </view>
  19 + <block wx:for="{{project}}">
  20 + <view class="t-c pd20" hover-class="hover" bindtouchmove="touchmove" bindtouchend="touchend" catch:touchmove data-name="{{item}}" bindlongtap="getName">
  21 + <text class="iconfont icon-meirong fs40"></text>
  22 + <view class="fs24">{{item}}</view>
  23 + </view>
  24 + </block>
  25 +
  26 + </view>
  27 +
  28 + <image class="main" src="{{iurl}}/miniapp/images/yyservice/main.png"></image>
  29 + <!-- Fram -->
  30 + <view class="">
  31 + <!-- 选择门店 -->
  32 + <view class="flex-vertical pdv20 jc-center">
  33 + <!-- 门店 -->
  34 + <view class="flex-vertical-between head fs30">
  35 + <view>门</view>
  36 + <view>店</view>
  37 + </view>
  38 +
  39 + <!-- 选择门店 -->
  40 + <view class="flex-vertical-between fs26 select" bindtap="onclickstore">
  41 + <view class="{{store_name==''?'color':''}} value ellipsis-1">{{store_name==""?'选择服务门店':store_name}}</view>
  42 + <view class="angle">∟</view>
  43 + </view>
  44 + </view>
  45 +
  46 +
  47 + <view class="table flex fs26" style="width: 100%;height: 100%;">
  48 + <view class="left t-c">
  49 + <view class="td pr">
  50 + <view class="time-box" bindtap="pickTime"><view class="time">时间</view></view>
  51 + <view class="md-box"><view class="md">美导</view></view>
  52 + </view>
  53 + <view class="td" wx:for="{{timeArr}}">{{item}}</view>
  54 + </view>
  55 + <scroll-view scroll-x class="right" bindscroll="scroll">
  56 + <view class="flex t-c">
  57 + <!-- <view>
  58 + <view class="td bg-pink">张三</view>
  59 + <view class="td" wx:for="{{timeArr.length}}"></view>
  60 + </view> -->
  61 +
  62 + <view wx:for="{{md}}">
  63 + <view class="td bg-pink">{{item}}</view>
  64 + <!-- <view class="td content_view {{v[0][0]?'121':''}}">{{v[0][0]}}</view> -->
  65 + <block wx:for="{{timeArr.length}}" wx:for-item="subitem" wx:for-index="subindex">
  66 + <view class="td content_view {{v[index][subitem] ? 'active':''}} {{filters.in_arr(subitem,col_arr)?'notactive':''}}">{{v[index][subitem]}}</view>
  67 + </block>
  68 + </view>
  69 +
  70 + </view>
  71 + </scroll-view>
  72 +
  73 +
  74 +
  75 +
  76 +
  77 + <!-- 选择美容师 -->
  78 + <!-- <view class="flex-vertical mabot"> -->
  79 + <!-- 门店 -->
  80 + <!-- <view class="flex-vertical-between head fs30">
  81 + <view>美</view>
  82 + <view>容</view>
  83 + <view>师</view>
  84 + </view> -->
  85 +
  86 + <!-- 选择美容师 -->
  87 + <!-- <view class="rel fs26"> -->
  88 + <!-- <view class="flex-vertical-between Cosmetology" bindtap="query_beautician">
  89 + <view class="{{beautician_name==''?'color':''}} value ellipsis-1">{{beautician_name==''?'选择美容师':beautician_name}}</view>
  90 + <view class="angle">∟</view>
  91 + </view> -->
  92 + <!-- 美容师下拉列表 -->
  93 + <!-- <view class="beauticians abs" wx:if="{{beautician}}"> -->
  94 + <!-- 到时候要做判断如果是index==循环的最后一个则把下边线去掉:(beaclone去掉的css) -->
  95 + <!-- <view class="beautician flex-vertical fs26" wx:for="{{beautician_list}}" bindtap="choice_beautician" data-baaindex="{{key}}" wx:for-index="key">
  96 + <view class="StaffName ellipsis-1">{{item.StaffName}}</view>
  97 + </view>
  98 + <view>
  99 + </view>
  100 + </view> -->
  101 + <!-- </view> -->
  102 + <!-- <view class="flex-center users" bindtap="nav_bea">
  103 + <image class="user" src="{{iurl}}/miniapp/images/yyservice/user.png"></image>
  104 + </view> -->
  105 + <!-- </view> -->
  106 +
  107 + <!-- 选择时间 -->
  108 + <!-- <view class="flex-vertical mabot"> -->
  109 + <!-- 门店 -->
  110 + <!-- <view class="head fs30">
  111 + <view>预约时间</view>
  112 + </view> -->
  113 +
  114 + <!-- 选择时间 -->
  115 + <!-- <view class="flex-vertical-between fs26 select" data-url="/packageA/pages/my_service/beauty_deta?url={{url}}&StorageId={{StorageId}}&BeauticianID={{beauticianID}}&itemId={{itemId}}&modify=0&projectId={{project_id}}" bindtap="goto">
  116 + <view class="{{time==''?'color':''}}">{{time==""?'选择时间':time}}</view>
  117 + <view class="angle angler">∟</view>
  118 + </view> -->
  119 + <!-- </view> -->
  120 +
  121 + <!-- 备注 -->
  122 + <!-- <view class="flex Remarks"> -->
  123 + <!-- 门店 -->
  124 + <!-- <view class="flex-space-between head fs30">
  125 + <view>备</view>
  126 + <view>注</view>
  127 + </view>
  128 + <view class="flex fs26">
  129 + <block wx:if="{{is_textea==1}}">
  130 + <textarea class="textarea" placeholder="{{remarks==''?'填写备注':remarks}}" placeholder-class="fs26 color" value="{{remarks}}" bindinput="input_remarks" maxlength="100">
  131 + </textarea>
  132 + </block>
  133 + <block wx:else>
  134 + <view class="textarea {{remarks==''?'color':''}}" bindtap="check_text">{{remarks==''?'填写备注':remarks}}
  135 + </view>
  136 + </block>
  137 + </view> -->
  138 + <!-- </view>
  139 + <view wx:if="{{tment_count!=''}}" class="notes flex-level-right fs24 color">
  140 + <view>注:剩余可预约人数{{tment_count}}人</view>
  141 + </view> -->
  142 +
  143 + <!-- <view class="submitMax flex-space-center fs32"> -->
  144 + <!-- <navigator class="appment flex-center" url="/pages/user/my_service/tment_order_list">
  145 + <view>我的预约</view>
  146 + </navigator> -->
  147 + <!-- <form report-submit='true' bindtap="sub_success">
  148 + <button form-type="submit" class="sub_appment flex-center">帮你预约</button>
  149 + </form> -->
  150 + <!-- </view> -->
  151 + </view>
  152 +
  153 +
  154 +
  155 + </view>
  156 +</movable-area>
  157 +<!-- 门店列表显示 -->
  158 +<view wx:if="{{store}}" class="storeList fixed">
  159 + <view class="choice flex-vertical-between fs32 storeListpadd">
  160 + <view>选择服务门店</view>
  161 + <icon bindtap="onclickstore" color="black" size="22" type="cancel"></icon>
  162 + </view>
  163 + <view class="searchbar flex-vertical-between storeListpadd">
  164 + <input class="inputstore fs28" placeholder="{{key_word==''?'输入要搜索的门店':key_word}}" placeholder-class="fs28" maxlength="16" bindinput="input_store" bindconfirm="search_store" />
  165 + <view class="search flex-center" bindtap="search_store">
  166 + <view class="fs28">搜索</view>
  167 + </view>
  168 + </view>
  169 + <!-- 选择门店 -->
  170 + <scroll-view class="stores" scroll-y="{{isScroll}}" enable-back-to-top="true" bindscrolltolower="onReachBottom">
  171 + <view class="store flex-vertical" wx:for="{{store_list}}" bindtap="choose_for_store" data-ind="{{index}}">
  172 + <block wx:if="{{index==fir_pick_index}}">
  173 + <icon class="icon" type="success" color="red" size="20"></icon>
  174 + </block>
  175 + <block wx:else>
  176 + <view class="circular"></view>
  177 + </block>
  178 + <view class="store_name_dis">
  179 + <view class="name_dis flex-vertical-between">
  180 + <view class="store_name fs28 ellipsis-1">{{item.StorageName}}</view>
  181 + <view wx:if="{{item.Distance!=1000000}}" class="store_dis flex fs22">
  182 + <view class="ellipsis-1">距您:{{item.Distance}}km</view>
  183 + </view>
  184 + </view>
  185 + <view class="store_address fs24 ellipsis-2">{{item.Address}}</view>
  186 + </view>
  187 + </view>
  188 + <!-- 通过搜索的时候没有找到的提示语 -->
  189 + <view wx:if="{{store_list.length<1 && is_search==1}}" class="flex-center fs28 notstore">
  190 + <view>没有找到{{key_word}}门店</view>
  191 + </view>
  192 +
  193 + <!-- 数据加载完毕 -->
  194 + <view wx:if="{{ismore && store_list.length>1}}" class="flex-center fs28 notstore">
  195 + <view>数据加载完毕</view>
  196 + </view>
  197 + </scroll-view>
  198 + <!-- sub -->
  199 + <view class="flex-center fs32" bindtap="choice_store">
  200 + <view class="determine flex-center">
  201 + <view>确定</view>
  202 + </view>
  203 + </view>
  204 +</view>
  205 +<!-- 蒙尘 -->
  206 +<view wx:if="{{store}}" class="disgraceful" bindtap="onclickstore"></view>
  207 +<warn id="warn"></warn>
  208 +<!-- 制作一个圆球导航 -->
  209 +<!-- <nav_b id="nav_b"></nav_b> -->
  210 +
  211 +<!-- <view wx:if="{{copy_btn}}" style="position:absolute;z-index:999999;left:{{write[0]}}px;top:{{write[1]}}px;">
  212 + <text class="iconfont icon-meirong fs40"></text>
  213 + <view class="fs24">项目1</view>
  214 +</view> -->
  215 +
  216 +<view class="copy" wx:if="{{copy_btn}}" style="position:absolute;left:{{write[0]}}px;top:{{write[1]}}px;">
  217 + <text class="iconfont icon-meirong fs40"></text>
  218 + <view class="fs24">{{projectName}}</view>
  219 +</view>
0 220 \ No newline at end of file
... ...
packageA/pages/my_service2/appment_main.wxss 0 → 100644
  1 +page,
  2 +.area {
  3 + width: 100%;
  4 + height: 100%;
  5 +}
  6 +
  7 +
  8 +
  9 +
  10 +/* .container {
  11 + border-top: 7rpx solid rgb(245, 245, 245);
  12 + justify-content: baseline;
  13 +} */
  14 +
  15 +.main {
  16 + width: 100%;
  17 + height: 305rpx;
  18 +}
  19 +
  20 +.angle {
  21 + transform: rotate(-45deg);
  22 + margin-right: 15rpx;
  23 + margin-bottom: 10rpx;
  24 + font-size: 26rpx;
  25 + color: rgb(142, 142, 142);
  26 +}
  27 +.StaffName{
  28 + max-width: 350rpx;
  29 +}
  30 +.angler {
  31 + transform: rotate(227deg);
  32 + margin-bottom: 0rpx;
  33 +}
  34 +
  35 +.users {
  36 + background-color: rgb(255, 255, 255);
  37 +}
  38 +
  39 +.user {
  40 + width: 40rpx;
  41 + height: 40rpx;
  42 + margin-left: 15rpx;
  43 +}
  44 +
  45 +.Fram {
  46 + padding: 0rpx 60rpx;
  47 + margin-top: 60rpx;
  48 + background-color: rgb(255, 255, 255);
  49 +}
  50 +
  51 +.subSuccess {
  52 + position: fixed;
  53 + z-index: 3;
  54 + top: 420rpx;
  55 + left: 110rpx;
  56 + width: 540rpx;
  57 + height: 315rpx;
  58 + background-color: rgb(155, 155, 155);
  59 + text-align: center;
  60 + border-radius: 20rpx;
  61 + color: rgb(255, 255, 255);
  62 + font-weight: bold;
  63 +}
  64 +
  65 +.Success {
  66 + width: 110rpx;
  67 + height: 110rpx;
  68 + margin-top: 70rpx;
  69 + margin-bottom: 30rpx;
  70 +}
  71 +
  72 +.appment, .sub_appment {
  73 + width: 270rpx;
  74 + height: 60rpx;
  75 + line-height: 55rpx;
  76 + border-radius: 40rpx;
  77 +}
  78 +
  79 +button {
  80 + height: 100%;
  81 + background-color: rgb(214, 1, 33);
  82 +}
  83 +
  84 +.appment {
  85 + background-color: rgb(238, 238, 238);
  86 +}
  87 +
  88 +.sub_appment {
  89 + background-color: rgb(214, 1, 33);
  90 + color: rgb(255, 255, 255);
  91 +}
  92 +
  93 +.head {
  94 + width: 122rpx;
  95 + margin-right: 40rpx;
  96 + height: 50rpx;
  97 + line-height: 50rpx;
  98 +}
  99 +
  100 +.textarea {
  101 + width: 420rpx;
  102 + background-color: rgb(238, 238, 238);
  103 + border-radius: 6rpx;
  104 + height: 130rpx;
  105 + padding-left: 40rpx;
  106 + padding-right: 15rpx;
  107 + padding-top: 15rpx;
  108 + padding-bottom: 15rpx;
  109 +}
  110 +
  111 +.mabot {
  112 + margin-bottom: 35rpx;
  113 +}
  114 +
  115 +.select {
  116 + width: 420rpx;
  117 + height: 55rpx;
  118 + line-height: 55rpx;
  119 + background-color: rgb(238, 238, 238);
  120 + border-radius: 6rpx;
  121 + padding-left: 40rpx;
  122 + padding-right: 15rpx;
  123 +}
  124 +
  125 +.Cosmetology {
  126 + padding-left: 40rpx;
  127 + padding-right: 15rpx;
  128 + width: 365rpx;
  129 + background-color: rgb(238, 238, 238);
  130 + height: 50rpx;
  131 + line-height: 50rpx;
  132 + border-radius: 6rpx;
  133 +}
  134 +
  135 +.beauticians {
  136 + width: 407rpx;
  137 + z-index: 3;
  138 + top: 45rpx;
  139 + left: -1rpx;
  140 + padding: 0rpx 5rpx;
  141 + border: 2rpx solid rgb(238, 238, 238);
  142 + background-color: rgb(255, 255, 255);
  143 + padding-bottom: 5rpx;
  144 + height: 279rpx;
  145 + overflow-x: scroll;
  146 + overflow-y: scroll;
  147 +}
  148 +
  149 +.beautician {
  150 + height: 70rpx;
  151 + border-bottom: 2rpx solid rgb(238, 238, 238);
  152 + padding-left: 25rpx;
  153 +}
  154 +
  155 +.beaclone {
  156 + border-bottom: 0rpx;
  157 +}
  158 +
  159 +.notes {
  160 + margin-top: 15rpx;
  161 + margin-bottom: 60rpx;
  162 + margin-right: 8rpx;
  163 +}
  164 +
  165 +.color {
  166 + color: rgb(172, 172, 172);
  167 +}
  168 +
  169 +.submitMax {
  170 + margin-top: 50rpx;
  171 + padding: 0rpx 15rpx;
  172 +}
  173 +
  174 +.Remarks {
  175 + margin-top: 15rpx;
  176 +}
  177 +
  178 +/* 蒙尘 */
  179 +
  180 +.disgraceful {
  181 + position: fixed;
  182 + z-index: 4;
  183 + width: 100%;
  184 + height: 100%;
  185 + top: 0rpx;
  186 + left: 0rpx;
  187 + background-color: rgba(0, 0, 0, 0.4);
  188 +}
  189 +
  190 +.storeList {
  191 + z-index: 5;
  192 + left: 0rpx;
  193 + border-top-left-radius: 25rpx;
  194 + border-top-right-radius: 25rpx;
  195 + background-color: rgb(255, 255, 255);
  196 + width: 100%;
  197 + padding: 45rpx 0rpx;
  198 +}
  199 +
  200 +.storeListpadd {
  201 + padding: 0rpx 31rpx;
  202 +}
  203 +
  204 +.choice {
  205 + margin-bottom: 5rpx;
  206 +}
  207 +
  208 +.inputstore {
  209 + width: 510rpx;
  210 + height: 43rpx;
  211 + line-height: 43rpx;
  212 + border-radius: 30rpx;
  213 + border: 2rpx solid rgb(238, 238, 238);
  214 + padding-left: 30rpx;
  215 +}
  216 +
  217 +.searchbar {
  218 + height: 95rpx;
  219 + border-bottom: 2rpx solid rgb(238, 238, 238);
  220 +}
  221 +
  222 +.search {
  223 + width: 125rpx;
  224 + height: 45rpx;
  225 + line-height: 45rpx;
  226 + background-color: rgb(219, 27, 52);
  227 + border-radius: 30rpx;
  228 + color: rgb(255, 255, 255);
  229 +}
  230 +
  231 +.stores {
  232 + height: 500rpx;
  233 + overflow-y: scroll;
  234 +}
  235 +
  236 +.store {
  237 + margin: 0rpx 16rpx;
  238 + padding-right: 15rpx;
  239 + border-bottom: 2rpx solid rgb(238, 238, 238);
  240 + padding: 20rpx 0rpx;
  241 +}
  242 +
  243 +.icon {
  244 + padding: 0rpx 15rpx;
  245 +}
  246 +
  247 +.circular {
  248 + width: 37rpx;
  249 + height: 37rpx;
  250 + border-radius: 50%;
  251 + border: 2rpx solid rgb(52, 52, 52);
  252 + margin: 0rpx 15rpx;
  253 +}
  254 +
  255 +.store_name_dis {
  256 + width: 90%;
  257 +}
  258 +
  259 +.name_dis {
  260 + margin-bottom: 5rpx;
  261 +}
  262 +
  263 +.store_name {
  264 + max-width: 420rpx;
  265 +}
  266 +
  267 +.store_dis {
  268 + height: 30rpx;
  269 + line-height: 30rpx;
  270 + padding: 5rpx 15rpx;
  271 + background-color: rgb(227, 227, 227);
  272 + border-radius: 25rpx;
  273 + margin-right: 20rpx;
  274 + color: rgb(159, 159, 159);
  275 + max-width: 200rpx;
  276 +}
  277 +
  278 +.store_address {
  279 + color: rgb(159, 159, 159);
  280 +}
  281 +
  282 +.determine {
  283 + background-color: rgb(196, 24, 26);
  284 + width: 500rpx;
  285 + border-radius: 35rpx;
  286 + height: 60rpx;
  287 + color: rgb(255, 255, 255);
  288 + margin: 20rpx 0rpx;
  289 +}
  290 +
  291 +.value {
  292 + max-width: 300rpx;
  293 +}
  294 +
  295 +.notstore {
  296 + height: 80rpx;
  297 + color: rgb(159, 159, 159);
  298 +}
  299 +
  300 +
  301 +.table {
  302 + background-color: white;
  303 + /* border-top: 2rpx solid rgba(218, 217, 217, 1);
  304 + border-left: 2rpx solid rgba(218, 217, 217, 1); */
  305 +}
  306 +.blue {
  307 + background: rgba(241, 252, 255, 1);
  308 +}
  309 +.bg-pink {
  310 + background-color: #FFDEF0;
  311 +}
  312 +.td {
  313 + width: 100rpx;
  314 + height: 100rpx;
  315 + display: flex;
  316 + align-items: center;
  317 + justify-content: center;
  318 + border-right: 2rpx solid rgba(218, 217, 217, 1);
  319 + border-bottom: 2rpx solid rgba(218, 217, 217, 1);
  320 +}
  321 +
  322 +.td.active {
  323 + background-color: #FFE5F5 !important;
  324 +}
  325 +.td.notactive {
  326 + background-color: #f0f0f0;
  327 +}
  328 +
  329 +.left {
  330 + box-shadow: 4px 0px 6px #e7e9eb;
  331 +}
  332 +
  333 +.right {
  334 + width: calc(100% - 102rpx);
  335 + /* padding-right: 102rpx; */
  336 + box-sizing: border-box;
  337 +}
  338 +
  339 +.card {
  340 + position: fixed;
  341 + width: 110rpx;
  342 + top: 50%;
  343 + right: 0;
  344 + /* min-height: 400rpx; */
  345 + max-height: 700rpx;
  346 + overflow-y: auto;
  347 + transform: translateY(-50%);
  348 + background-color: white;
  349 + border-radius: 10rpx;
  350 + box-shadow: -2px 0px 6px #aaa;
  351 + z-index: 1000;
  352 +}
  353 +
  354 +.icon-meirong {
  355 + color: pink;
  356 +}
  357 +
  358 +
  359 +
  360 +.time-box {
  361 + width: 0;
  362 + height: 0;
  363 + border-width: 50rpx;
  364 + border-style: solid;
  365 + border-color: transparent transparent white white;
  366 + position: absolute;
  367 + left: 0;
  368 + bottom: 0;
  369 +}
  370 +.time {
  371 + position: absolute;
  372 + bottom: -22px;
  373 + width: 53rpx;
  374 + z-index: 999;
  375 + left: -22px;
  376 + font-size: 12px;
  377 +}
  378 +
  379 +.md-box {
  380 + width: 0;
  381 + height: 0;
  382 + border-width: 50rpx;
  383 + border-style: solid;
  384 + border-color: #FFDEF0 #FFDEF0 transparent transparent;
  385 + position: absolute;
  386 + right: 0;
  387 + top: 0;
  388 +}
  389 +.md {
  390 + position: absolute;
  391 + top: -18px;
  392 + width: 53rpx;
  393 + z-index: 999;
  394 + right: -24px;
  395 + font-size: 12px;
  396 +}
  397 +
  398 +.hover {
  399 + background-color: #e0e0e0;
  400 +}
  401 +
  402 +.copy {
  403 + padding: 10rpx;
  404 + text-align: center;
  405 + background-color: #f0f0f0;
  406 + z-index: 9999;
  407 +}
  408 +
  409 +.btn-container {
  410 + position: absolute;
  411 + width: 100%;
  412 + display: flex;
  413 + justify-content: space-between;
  414 + padding: 20rpx;
  415 + box-sizing: border-box;
  416 +}
  417 +
  418 +.btn {
  419 + color: white;
  420 + background-color: transparent;
  421 + line-height: 1;
  422 + font-size: 26rpx;
  423 +}
  424 +
  425 +
... ...